From c67cf341d0e9a982d67dac1683bb49f6a6411c58 Mon Sep 17 00:00:00 2001 From: fafoy Date: Wed, 4 Jul 2018 11:31:52 +0800 Subject: [PATCH 1/2] HTK-3.5.beta-1 --- HLMLib/.directory | 3 - HLMLib/ChangeLog | 22 - HLMLib/LCMap.c | 27 +- HLMLib/LCMap.h | 32 +- HLMLib/LGBase.c | 27 +- HLMLib/LGBase.h | 32 +- HLMLib/LModel.c | 40 +- HLMLib/LModel.h | 33 +- HLMLib/LPCalc.c | 27 +- HLMLib/LPCalc.h | 33 +- HLMLib/LPMerge.c | 53 +- HLMLib/LPMerge.h | 33 +- HLMLib/LUtil.c | 27 +- HLMLib/LUtil.h | 33 +- HLMLib/LWMap.c | 27 +- HLMLib/LWMap.h | 33 +- HLMLib/{Makefile.in => MakefileCPU} | 44 +- HLMLib/MakefileMKL | 76 + HLMLib/MakefileNVCC | 76 + HLMLib/htk_hlmlib_nt.mkf | 62 - HLMTools/.directory | 3 - HLMTools/ChangeLog | 79 - HLMTools/Cluster.c | 51 +- HLMTools/HLMCopy.c | 26 +- HLMTools/LAdapt.c | 26 +- HLMTools/LBuild.c | 26 +- HLMTools/LFoF.c | 26 +- HLMTools/LGCopy.c | 26 +- HLMTools/LGList.c | 26 +- HLMTools/LGPrep.c | 26 +- HLMTools/LLink.c | 32 +- HLMTools/LMerge.c | 26 +- HLMTools/LNewMap.c | 26 +- HLMTools/LNorm.c | 26 +- HLMTools/LPlex.c | 59 +- HLMTools/LSubset.c | 26 +- HLMTools/{Makefile.in => MakefileCPU} | 52 +- HLMTools/MakefileMKL | 81 + HLMTools/MakefileNVCC | 81 + HLMTools/htk_hlmtools_nt.mkf | 85 - HTK/HTK.dsp | 96 - HTK/HTK.dsw | 29 - HTK/HTK.ncb | Bin 33792 -> 0 bytes HTK/HTK.opt | Bin 48640 -> 0 bytes HTKBook/ChangeLog | 197 - HTKBook/ChangeLog.CUHTK | 8 - HTKBook/HTK.tex | 373 - HTKBook/HTKFigs/Blocking.eps | 2388 - HTKBook/HTKFigs/ClassLM.eps | 3584 - HTKBook/HTKFigs/Config.eps | 1843 - HTKBook/HTKFigs/HLMoperation.eps | 3128 - HTKBook/HTKFigs/HTKFormat.eps | 4998 -- HTKBook/HTKFigs/LTool.eps | 3670 - HTKBook/HTKFigs/MMFeg.eps | 1193 - HTKBook/HTKFigs/Spmods.eps | 1825 - HTKBook/HTKFigs/Tool.decode.eps | 2711 - HTKBook/HTKFigs/Tool.disc.eps | 2605 - HTKBook/HTKFigs/Tool.hedit.eps | 1838 - HTKBook/HTKFigs/Tool.labs.eps | 482 - HTKBook/HTKFigs/Tool.langmod.eps | 2412 - HTKBook/HTKFigs/Tool.model.eps | 482 - HTKBook/HTKFigs/Tool.netdict.eps | 488 - HTKBook/HTKFigs/Tool.shell.eps | 488 - HTKBook/HTKFigs/Tool.spio.eps | 482 - HTKBook/HTKFigs/Tool.train.eps | 3212 - HTKBook/HTKFigs/VQUse.eps | 2075 - HTKBook/HTKFigs/WordLM.eps | 3106 - HTKBook/HTKFigs/bmemops.eps | 2191 - HTKBook/HTKFigs/bobig.eps | 2776 - HTKBook/HTKFigs/clusterset.eps | 259 - HTKBook/HTKFigs/coercions.eps | 1332 - HTKBook/HTKFigs/cover.eps | 134 - HTKBook/HTKFigs/dbhier.eps | 2736 - HTKBook/HTKFigs/decflow.eps | 2100 - HTKBook/HTKFigs/decinet.eps | 1558 - HTKBook/HTKFigs/dialnet.eps | 3151 - HTKBook/HTKFigs/digitnets.eps | 4420 -- HTKBook/HTKFigs/discriminative.eps | 523 - HTKBook/HTKFigs/discriminative.fig | 168 - HTKBook/HTKFigs/dmaker.eps | 1816 - HTKBook/HTKFigs/egsils.eps | 2179 - HTKBook/HTKFigs/egtranstie.eps | 1979 - HTKBook/HTKFigs/endpointer.eps | 2263 - HTKBook/HTKFigs/flatst.eps | 1578 - HTKBook/HTKFigs/headapt.eps | 375 - HTKBook/HTKFigs/headaptrdp.eps | 968 - HTKBook/HTKFigs/herestdp.eps | 4452 -- HTKBook/HTKFigs/hierarch.eps | 3640 - HTKBook/HTKFigs/hinitdp.eps | 3745 - HTKBook/HTKFigs/hmm1.eps | 2535 - HTKBook/HTKFigs/hmmirest_par.eps | 393 - HTKBook/HTKFigs/hmmirest_par.fig | 136 - HTKBook/HTKFigs/hsetdef.eps | 1959 - HTKBook/HTKFigs/hslab.eps | 29774 -------- HTKBook/HTKFigs/htktools.eps | 2284 - HTKBook/HTKFigs/hvalign.eps | 1473 - HTKBook/HTKFigs/isoprob.eps | 2555 - HTKBook/HTKFigs/isoword.eps | 2314 - HTKBook/HTKFigs/itemtree.eps | 1419 - HTKBook/HTKFigs/labegs.eps | 3306 - HTKBook/HTKFigs/markovgen.eps | 3730 - HTKBook/HTKFigs/melfbank.eps | 2031 - HTKBook/HTKFigs/memheap.eps | 4904 -- HTKBook/HTKFigs/messencode.eps | 3012 - HTKBook/HTKFigs/mononet.eps | 2225 - HTKBook/HTKFigs/muacc.eps | 150 - HTKBook/HTKFigs/netforcsr.eps | 1843 - HTKBook/HTKFigs/overview.eps | 2398 - HTKBook/HTKFigs/parher.eps | 1834 - HTKBook/HTKFigs/qstree.eps | 2930 - HTKBook/HTKFigs/recipe.eps | 2309 - HTKBook/HTKFigs/recnetlev.eps | 2197 - HTKBook/HTKFigs/recsys.eps | 1949 - HTKBook/HTKFigs/regtree1.eps | 176 - HTKBook/HTKFigs/restloop.eps | 1516 - HTKBook/HTKFigs/segstore.eps | 606 - HTKBook/HTKFigs/sequence.eps | 326 - HTKBook/HTKFigs/softarch.eps | 481 - HTKBook/HTKFigs/step1.eps | 1345 - HTKBook/HTKFigs/step10.eps | 314 - HTKBook/HTKFigs/step11.eps | 2121 - HTKBook/HTKFigs/step2.eps | 2054 - HTKBook/HTKFigs/step3.eps | 1972 - HTKBook/HTKFigs/step4.eps | 1817 - HTKBook/HTKFigs/step5.eps | 1637 - HTKBook/HTKFigs/step6.eps | 1986 - HTKBook/HTKFigs/step7.eps | 1860 - HTKBook/HTKFigs/step8.eps | 1869 - HTKBook/HTKFigs/step9.eps | 2019 - HTKBook/HTKFigs/streams.eps | 5105 -- HTKBook/HTKFigs/structshare.eps | 3057 - HTKBook/HTKFigs/subsmixrep.eps | 2008 - HTKBook/HTKFigs/subword.eps | 4497 -- HTKBook/HTKFigs/sysoview.eps | 437 - HTKBook/HTKFigs/tcover.eps | 2068 - HTKBook/HTKFigs/tiedstate.eps | 6154 -- HTKBook/HTKFigs/tmixeg.eps | 2564 - HTKBook/HTKFigs/toolkit.eps | 3256 - HTKBook/HTKFigs/tracc.eps | 181 - HTKBook/HTKFigs/tsubword.eps | 4497 -- HTKBook/HTKFigs/useforiso.eps | 3287 - HTKBook/HTKFigs/vaacc.eps | 152 - HTKBook/HTKFigs/vitloop.eps | 1674 - HTKBook/HTKFigs/vmatrep.eps | 4815 -- HTKBook/HTKFigs/vqtohmm.eps | 1536 - HTKBook/HTKFigs/vtlnpiecewise.eps | 195 - HTKBook/HTKFigs/vtrellis.eps | 3133 - HTKBook/HTKFigs/wdnet.eps | 1691 - HTKBook/HTKFigs/wdnet0.eps | 1705 - HTKBook/HTKFigs/wdnet1.eps | 1547 - HTKBook/HTKFigs/wintnet.eps | 2247 - HTKBook/HTKFigs/wlroper.eps | 3121 - HTKBook/HTKFigs/wtacc.eps | 169 - HTKBook/HTKFigs/xwrdnet.eps | 2813 - HTKBook/HTKRef/Cluster.aux | 42 - HTKBook/HTKRef/Cluster.tex | 195 - HTKBook/HTKRef/HBuild.aux | 42 - HTKBook/HTKRef/HBuild.tex | 129 - HTKBook/HTKRef/HCompV.aux | 42 - HTKBook/HTKRef/HCompV.tex | 188 - HTKBook/HTKRef/HCopy.aux | 40 - HTKBook/HTKRef/HCopy.tex | 205 - HTKBook/HTKRef/HDMan.aux | 42 - HTKBook/HTKRef/HDMan.tex | 208 - HTKBook/HTKRef/HDecode.aux | 42 - HTKBook/HTKRef/HDecode.tex | 253 - HTKBook/HTKRef/HERest.aux | 42 - HTKBook/HTKRef/HERest.tex | 362 - HTKBook/HTKRef/HHEd.aux | 40 - HTKBook/HTKRef/HHEd.tex | 808 - HTKBook/HTKRef/HInit.aux | 42 - HTKBook/HTKRef/HInit.tex | 181 - HTKBook/HTKRef/HLEd.aux | 42 - HTKBook/HTKRef/HLEd.tex | 202 - HTKBook/HTKRef/HLMCopy.aux | 42 - HTKBook/HTKRef/HLMCopy.tex | 97 - HTKBook/HTKRef/HLRescore.aux | 42 - HTKBook/HTKRef/HLRescore.tex | 201 - HTKBook/HTKRef/HLStats.aux | 44 - HTKBook/HTKRef/HLStats.tex | 198 - HTKBook/HTKRef/HList.aux | 42 - HTKBook/HTKRef/HList.tex | 114 - HTKBook/HTKRef/HMMIRest.aux | 44 - HTKBook/HTKRef/HMMIRest.tex | 264 - HTKBook/HTKRef/HParse.aux | 46 - HTKBook/HTKRef/HParse.tex | 331 - HTKBook/HTKRef/HQuant.aux | 44 - HTKBook/HTKRef/HQuant.tex | 205 - HTKBook/HTKRef/HRest.aux | 42 - HTKBook/HTKRef/HRest.tex | 170 - HTKBook/HTKRef/HResults.aux | 42 - HTKBook/HTKRef/HResults.tex | 292 - HTKBook/HTKRef/HSGen.aux | 42 - HTKBook/HTKRef/HSGen.tex | 96 - HTKBook/HTKRef/HSLab.aux | 43 - HTKBook/HTKRef/HSLab.tex | 235 - HTKBook/HTKRef/HSmooth.aux | 42 - HTKBook/HTKRef/HSmooth.tex | 135 - HTKBook/HTKRef/HVite.aux | 42 - HTKBook/HTKRef/HVite.tex | 265 - HTKBook/HTKRef/LAdapt.aux | 42 - HTKBook/HTKRef/LAdapt.tex | 98 - HTKBook/HTKRef/LBuild.aux | 42 - HTKBook/HTKRef/LBuild.tex | 100 - HTKBook/HTKRef/LFoF.aux | 42 - HTKBook/HTKRef/LFoF.tex | 74 - HTKBook/HTKRef/LGCopy.aux | 42 - HTKBook/HTKRef/LGCopy.tex | 128 - HTKBook/HTKRef/LGList.aux | 42 - HTKBook/HTKRef/LGList.tex | 63 - HTKBook/HTKRef/LGPrep.aux | 42 - HTKBook/HTKRef/LGPrep.tex | 218 - HTKBook/HTKRef/LLink.aux | 42 - HTKBook/HTKRef/LLink.tex | 68 - HTKBook/HTKRef/LMerge.aux | 42 - HTKBook/HTKRef/LMerge.tex | 54 - HTKBook/HTKRef/LNewMap.aux | 42 - HTKBook/HTKRef/LNewMap.tex | 47 - HTKBook/HTKRef/LNorm.aux | 42 - HTKBook/HTKRef/LNorm.tex | 63 - HTKBook/HTKRef/LPlex.aux | 42 - HTKBook/HTKRef/LPlex.tex | 96 - HTKBook/HTKRef/LSubset.aux | 42 - HTKBook/HTKRef/LSubset.tex | 60 - HTKBook/HTKRef/tools.aux | 34 - HTKBook/HTKRef/tools.tex | 91 - HTKBook/HTKXFigs/ClassLM.doc | Bin 27648 -> 0 bytes HTKBook/HTKXFigs/HLMoperation.doc | Bin 24576 -> 0 bytes HTKBook/HTKXFigs/LTool.doc | Bin 27648 -> 0 bytes HTKBook/HTKXFigs/Tool.labs.fig | 183 - HTKBook/HTKXFigs/Tool.model.fig | 183 - HTKBook/HTKXFigs/Tool.netdict.fig | 185 - HTKBook/HTKXFigs/Tool.shell.fig | 187 - HTKBook/HTKXFigs/Tool.spio.fig | 181 - HTKBook/HTKXFigs/WordLM.doc | Bin 25088 -> 0 bytes HTKBook/HTKXFigs/cover.fig | 23 - HTKBook/HTKXFigs/headapt.fig | 125 - HTKBook/HTKXFigs/headaptrdp.fig | 473 - HTKBook/HTKXFigs/softarch-big.fig | 219 - HTKBook/HTKXFigs/softarch.fig | 183 - HTKBook/HTKXFigs/step10.fig | 63 - HTKBook/HTKXFigs/sysoview.fig | 128 - HTKBook/HTKXFigs/vtlnpiecewise.fig | 63 - HTKBook/Makefile | 86 - HTKBook/README | 12 - HTKBook/adapt.tex | 915 - HTKBook/config.tex | 489 - HTKBook/decode.tex | 861 - HTKBook/discmods.tex | 443 - HTKBook/errors.tex | 1583 - HTKBook/exampsys.tex | 2167 - HTKBook/fundaments.tex | 786 - HTKBook/hlmfiles.tex | 995 - HTKBook/hlmfund.tex | 849 - HTKBook/hlmtutorial.tex | 979 - HTKBook/htkbook-pdf.tex | 207 - HTKBook/htkbook.tex | 207 - HTKBook/htkoview.tex | 684 - HTKBook/htkslf.tex | 334 - HTKBook/labels.tex | 823 - HTKBook/latex2html-init | 1 - HTKBook/models.tex | 1543 - HTKBook/netdict.tex | 1131 - HTKBook/openviron.tex | 764 - HTKBook/refine.tex | 799 - HTKBook/speechio.tex | 1959 - HTKBook/train.tex | 1631 - HTKLVRec/Makefile.in | 123 - HTKLib/.directory | 3 - HTKLib/ChangeLog | 768 - HTKLib/ChangeLog.CUHTK | 16 - HTKLib/HANNet.c | 1545 + HTKLib/HANNet.h | 361 + HTKLib/HAdapt.c | 102 +- HTKLib/HAdapt.h | 38 +- HTKLib/HArc.c | 289 +- HTKLib/HArc.h | 58 +- HTKLib/HAudio.c | 30 +- HTKLib/HAudio.h | 29 +- HTKLib/HCUDA.cu | 2340 + HTKLib/HCUDA.h | 177 + HTKLib/HDict.c | 30 +- HTKLib/HDict.h | 29 +- HTKLib/HExactMPE.c | 30 +- HTKLib/HExactMPE.h | 24 +- HTKLib/HFB.c | 88 +- HTKLib/HFB.h | 31 +- HTKLib/HFBLat.c | 1742 +- HTKLib/HFBLat.h | 43 +- HTKLib/HGraf.c | 32 +- HTKLib/HGraf.h | 27 +- HTKLib/HGraf.null.c | 25 +- HTKLib/HGraf_WIN32.c | 1199 - HTKLib/HLM.c | 62 +- HTKLib/HLM.h | 38 +- HTKLib/HLabel.c | 65 +- HTKLib/HLabel.h | 34 +- HTKLib/HLat.c | 92 +- HTKLib/HLat.h | 31 +- HTKLib/HMap.c | 37 +- HTKLib/HMap.h | 32 +- HTKLib/HMath.c | 3131 +- HTKLib/HMath.h | 171 +- HTKLib/HMem.c | 632 +- HTKLib/HMem.h | 155 +- HTKLib/HModel.c | 6111 +- HTKLib/HModel.h | 145 +- HTKLib/HNCache.c | 2000 + HTKLib/HNCache.h | 221 + HTKLib/HNet.c | 1060 +- HTKLib/HNet.h | 44 +- HTKLib/HParm.c | 663 +- HTKLib/HParm.h | 41 +- HTKLib/HRec.c | 52 +- HTKLib/HRec.h | 31 +- HTKLib/HShell.c | 608 +- HTKLib/HShell.h | 57 +- HTKLib/HSigP.c | 29 +- HTKLib/HSigP.h | 29 +- HTKLib/HTrain.c | 44 +- HTKLib/HTrain.h | 36 +- HTKLib/HUtil.c | 90 +- HTKLib/HUtil.h | 26 +- HTKLib/HVQ.c | 30 +- HTKLib/HVQ.h | 28 +- HTKLib/HWave.c | 139 +- HTKLib/HWave.h | 36 +- HTKLib/{Makefile.in => MakefileCPU} | 59 +- HTKLib/MakefileMKL | 145 + HTKLib/MakefileNVCC | 153 + HTKLib/config.h | 48 + HTKLib/esig_asc.c | 29 +- HTKLib/esig_edr.c | 29 +- HTKLib/esig_nat.c | 24 +- HTKLib/esignal.c | 34 +- HTKLib/esignal.h | 25 +- HTKLib/htk_htklib_nt.mkf | 83 - HTKLib/i686.cpu | 0 HTKLib/strarr.c | 145 - HTKLib/strarr.h | 36 - HTKTools/.directory | 3 - HTKTools/ChangeLog | 516 - HTKTools/ChangeLog.CUHTK | 42 - HTKTools/HBuild.c | 47 +- HTKTools/HCompV.c | 42 +- HTKTools/HCopy.c | 40 +- HTKTools/HDMan.c | 66 +- HTKTools/HERest.c | 64 +- HTKTools/HHEd.c | 1953 +- HTKTools/HInit.c | 48 +- HTKTools/HLConf.c | 1986 + HTKTools/HLEd.c | 83 +- HTKTools/HLRescore.c | 131 +- HTKTools/HLStats.c | 74 +- HTKTools/HList.c | 39 +- HTKTools/HMMIRest.c | 298 +- HTKTools/HNForward.c | 1123 + HTKTools/HNTrainSGD.c | 3347 + HTKTools/HParse.c | 40 +- HTKTools/HQuant.c | 29 +- HTKTools/HRest.c | 32 +- HTKTools/HResults.c | 35 +- HTKTools/HSGen.c | 29 +- HTKTools/HSLab.c | 29 +- HTKTools/HSmooth.c | 38 +- HTKTools/HVite.c | 410 +- HTKTools/{Makefile.in => MakefileCPU} | 54 +- HTKTools/MakefileMKL | 82 + HTKTools/MakefileNVCC | 82 + HTKTools/htk_htktools_nt.mkf | 96 - LICENSE | 0 Makefile.in | 153 - README | 211 +- config.guess | 1317 - config.sub | 1411 - configure | 6788 -- configure.ac | 263 - env/.directory | 3 - env/ChangeLog | 26 - env/env.decosf_alpha | 6 - env/env.hp700 | 7 - env/env.linux | 9 - env/env.linux-icc8-P4 | 10 - env/env.sgi | 6 - env/env.sun4_solaris | 7 - env/env.sun4_solaris_cc | 5 - env/env.sun4_solaris_gcc | 5 - env/exp.decosf_alpha | 6 - env/exp.hp700 | 7 - env/exp.linux | 9 - env/exp.linux-dec | 9 - env/exp.linux-icc7-P4 | 10 - env/exp.linux-icc8-P4 | 10 - env/exp.linux_icc | 9 - env/exp.sgi | 6 - env/exp.sun4_solaris | 7 - env/exp.sun4_solaris_cc | 5 - env/exp.sun4_solaris_gcc | 5 - install-sh | 251 - samples/HTKDemo/ChangeLog | 7 + samples/HTKDemo/MakeProtoHMMSet | 339 + samples/HTKDemo/README | 171 + samples/HTKDemo/README.NT | 173 + samples/HTKDemo/accs.scr | 3 + samples/HTKDemo/codebooks/currentCodebook | 577 + samples/HTKDemo/configs/DcfFormat | 45 + samples/HTKDemo/configs/directAudio.dcf | 40 + samples/HTKDemo/configs/lbiPlainS1.dcf | 37 + samples/HTKDemo/configs/monDiscM64S1Lin.dcf | 39 + samples/HTKDemo/configs/monDiscM64S1Tree.dcf | 39 + samples/HTKDemo/configs/monDiscM64S3Lin.dcf | 37 + samples/HTKDemo/configs/monDiscM64S3Tree.dcf | 37 + samples/HTKDemo/configs/monPlainM1S1.dcf | 37 + samples/HTKDemo/configs/monPlainM1S3.dcf | 37 + .../HTKDemo/configs/monPlainM1S3FullCov.dcf | 37 + .../configs/monPlainM1S3HERestPell.dcf | 38 + samples/HTKDemo/configs/monPlainM4S1.dcf | 37 + samples/HTKDemo/configs/monSharedM1S3.dcf | 37 + samples/HTKDemo/configs/monTiedMixS1.dcf | 39 + samples/HTKDemo/configs/monTiedMixS3.dcf | 38 + samples/HTKDemo/configs/rbiPlainS1.dcf | 37 + samples/HTKDemo/configs/triDiscM64S3.dcf | 37 + .../HTKDemo/configs/triDiscM64S3HSmooth.dcf | 38 + samples/HTKDemo/configs/triPlainS1.dcf | 37 + samples/HTKDemo/configs/triSharedS1.dcf | 38 + samples/HTKDemo/configs/triTiedMixS1.dcf | 37 + .../HTKDemo/configs/triTiedMixS1HSmooth.dcf | 39 + samples/HTKDemo/configs/triTiedStateS1.dcf | 38 + samples/HTKDemo/data/store/te1.mfc | Bin 0 -> 12804 bytes samples/HTKDemo/data/store/te2.mfc | Bin 0 -> 14468 bytes samples/HTKDemo/data/store/te3.mfc | Bin 0 -> 21748 bytes samples/HTKDemo/data/store/tr1.mfc | Bin 0 -> 15768 bytes samples/HTKDemo/data/store/tr2.mfc | Bin 0 -> 19824 bytes samples/HTKDemo/data/store/tr3.mfc | Bin 0 -> 13844 bytes samples/HTKDemo/data/store/tr4.mfc | Bin 0 -> 12544 bytes samples/HTKDemo/data/store/tr5.mfc | Bin 0 -> 11140 bytes samples/HTKDemo/data/store/tr6.mfc | Bin 0 -> 11036 bytes samples/HTKDemo/data/store/tr7.mfc | Bin 0 -> 10100 bytes samples/HTKDemo/data/test/te1.mfc | Bin 0 -> 12804 bytes samples/HTKDemo/data/test/te2.mfc | Bin 0 -> 14468 bytes samples/HTKDemo/data/test/te3.mfc | Bin 0 -> 21748 bytes samples/HTKDemo/data/train/tr1.mfc | Bin 0 -> 15768 bytes samples/HTKDemo/data/train/tr2.mfc | Bin 0 -> 19824 bytes samples/HTKDemo/data/train/tr3.mfc | Bin 0 -> 13844 bytes samples/HTKDemo/data/train/tr4.mfc | Bin 0 -> 12544 bytes samples/HTKDemo/data/train/tr5.mfc | Bin 0 -> 11140 bytes samples/HTKDemo/data/train/tr6.mfc | Bin 0 -> 11036 bytes samples/HTKDemo/data/train/tr7.mfc | Bin 0 -> 10100 bytes samples/HTKDemo/edfiles/contDepPlainhs.hed | 1 + samples/HTKDemo/edfiles/contDepTiedhsS1.hed | 3 + samples/HTKDemo/edfiles/contDepTiedhsS3.hed | 6 + samples/HTKDemo/edfiles/edlabs.led | 7 + samples/HTKDemo/edfiles/edllabs.led | 1 + samples/HTKDemo/edfiles/edrlabs.led | 1 + samples/HTKDemo/edfiles/edtlabs.led | 1 + samples/HTKDemo/edfiles/lbiSharedhsM1.hed | 20 + samples/HTKDemo/edfiles/lbiTiedState.hed | 15 + samples/HTKDemo/edfiles/monInternalTie.hed | 15 + samples/HTKDemo/edfiles/monSharedhsM1.hed | 1 + samples/HTKDemo/edfiles/monSharedhsM4.hed | 2 + samples/HTKDemo/edfiles/monTiedhsS1.hed | 3 + samples/HTKDemo/edfiles/monTiedhsS3.hed | 6 + samples/HTKDemo/edfiles/rbiSharedhsM1.hed | 20 + samples/HTKDemo/edfiles/rbiTiedState.hed | 15 + samples/HTKDemo/edfiles/triSharedhsM1.hed | 20 + samples/HTKDemo/edfiles/triSharedhsM4.hed | 1 + samples/HTKDemo/edfiles/triTiedState.hed | 15 + samples/HTKDemo/labels/bcplabs/lbi/te1.lab | 33 + samples/HTKDemo/labels/bcplabs/lbi/te2.lab | 40 + samples/HTKDemo/labels/bcplabs/lbi/te3.lab | 60 + samples/HTKDemo/labels/bcplabs/lbi/tr1.lab | 38 + samples/HTKDemo/labels/bcplabs/lbi/tr2.lab | 45 + samples/HTKDemo/labels/bcplabs/lbi/tr3.lab | 37 + samples/HTKDemo/labels/bcplabs/lbi/tr4.lab | 30 + samples/HTKDemo/labels/bcplabs/lbi/tr5.lab | 22 + samples/HTKDemo/labels/bcplabs/lbi/tr6.lab | 26 + samples/HTKDemo/labels/bcplabs/lbi/tr7.lab | 21 + samples/HTKDemo/labels/bcplabs/mon/te1.lab | 33 + samples/HTKDemo/labels/bcplabs/mon/te2.lab | 40 + samples/HTKDemo/labels/bcplabs/mon/te3.lab | 60 + samples/HTKDemo/labels/bcplabs/mon/tr1.lab | 38 + samples/HTKDemo/labels/bcplabs/mon/tr2.lab | 45 + samples/HTKDemo/labels/bcplabs/mon/tr3.lab | 37 + samples/HTKDemo/labels/bcplabs/mon/tr4.lab | 30 + samples/HTKDemo/labels/bcplabs/mon/tr5.lab | 22 + samples/HTKDemo/labels/bcplabs/mon/tr6.lab | 26 + samples/HTKDemo/labels/bcplabs/mon/tr7.lab | 21 + samples/HTKDemo/labels/bcplabs/rbi/te1.lab | 33 + samples/HTKDemo/labels/bcplabs/rbi/te2.lab | 40 + samples/HTKDemo/labels/bcplabs/rbi/te3.lab | 60 + samples/HTKDemo/labels/bcplabs/rbi/tr1.lab | 38 + samples/HTKDemo/labels/bcplabs/rbi/tr2.lab | 45 + samples/HTKDemo/labels/bcplabs/rbi/tr3.lab | 37 + samples/HTKDemo/labels/bcplabs/rbi/tr4.lab | 30 + samples/HTKDemo/labels/bcplabs/rbi/tr5.lab | 22 + samples/HTKDemo/labels/bcplabs/rbi/tr6.lab | 26 + samples/HTKDemo/labels/bcplabs/rbi/tr7.lab | 21 + samples/HTKDemo/labels/bcplabs/tri/te1.lab | 33 + samples/HTKDemo/labels/bcplabs/tri/te2.lab | 40 + samples/HTKDemo/labels/bcplabs/tri/te3.lab | 60 + samples/HTKDemo/labels/bcplabs/tri/tr1.lab | 38 + samples/HTKDemo/labels/bcplabs/tri/tr2.lab | 45 + samples/HTKDemo/labels/bcplabs/tri/tr3.lab | 37 + samples/HTKDemo/labels/bcplabs/tri/tr4.lab | 30 + samples/HTKDemo/labels/bcplabs/tri/tr5.lab | 22 + samples/HTKDemo/labels/bcplabs/tri/tr6.lab | 26 + samples/HTKDemo/labels/bcplabs/tri/tr7.lab | 21 + samples/HTKDemo/lists/allPairedFiles | 14 + samples/HTKDemo/lists/allTrainFiles | 7 + samples/HTKDemo/lists/bcplist | 5 + samples/HTKDemo/lists/bcpvocab | 5 + samples/HTKDemo/lists/contDepList | 59 + samples/HTKDemo/lists/dataList1 | 2 + samples/HTKDemo/lists/dataList2 | 2 + samples/HTKDemo/lists/dataList3 | 3 + samples/HTKDemo/lists/lbiVocab | 21 + samples/HTKDemo/lists/rbiVocab | 22 + samples/HTKDemo/lists/testFileStubs | 3 + samples/HTKDemo/lists/trainFileStubs | 7 + samples/HTKDemo/lists/triVocab | 59 + samples/HTKDemo/monlabs.scr | 10 + samples/HTKDemo/networks/lbiLattice | 96 + samples/HTKDemo/networks/lbiNetwork | 23 + samples/HTKDemo/networks/monLattice | 26 + samples/HTKDemo/networks/monNetwork | 2 + samples/HTKDemo/networks/rbiLattice | 100 + samples/HTKDemo/networks/rbiNetwork | 24 + samples/HTKDemo/networks/triLattice | 268 + samples/HTKDemo/networks/triNetwork | 61 + samples/HTKDemo/outaudio | 72 + samples/HTKDemo/protoconfs/example.pcf | 21 + .../protoconfs/proto_s1_m12_dc_tied.pcf | 21 + samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf | 21 + samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf | 21 + samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf | 21 + samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf | 22 + .../HTKDemo/protoconfs/proto_s1_m64_vq.pcf | 21 + .../HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf | 21 + .../HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf | 21 + .../protoconfs/proto_s3_m64_64_16_vq.pcf | 21 + samples/HTKDemo/results/lbiPlainS1.res | 13 + samples/HTKDemo/results/monDiscM64S1Lin.res | 13 + samples/HTKDemo/results/monDiscM64S1Tree.res | 13 + samples/HTKDemo/results/monDiscM64S3Lin.res | 13 + samples/HTKDemo/results/monDiscM64S3Tree.res | 13 + samples/HTKDemo/results/monPlainM1S1.res | 13 + samples/HTKDemo/results/monPlainM1S3.res | 13 + .../HTKDemo/results/monPlainM1S3FullCov.res | 13 + .../results/monPlainM1S3HERestPell.res | 13 + samples/HTKDemo/results/monPlainM4S1.res | 13 + samples/HTKDemo/results/monSharedM1S3.res | 13 + samples/HTKDemo/results/monTiedMixS1.res | 13 + samples/HTKDemo/results/monTiedMixS3.res | 13 + samples/HTKDemo/results/rbiPlainS1.res | 13 + samples/HTKDemo/results/triDiscM64S3.res | 13 + .../HTKDemo/results/triDiscM64S3HSmooth.res | 13 + samples/HTKDemo/results/triPlainS1.res | 13 + samples/HTKDemo/results/triSharedS1.res | 13 + samples/HTKDemo/results/triTiedMixS1.res | 13 + .../HTKDemo/results/triTiedMixS1HSmooth.res | 13 + samples/HTKDemo/results/triTiedStateS1.res | 13 + samples/HTKDemo/runDemo | 815 + samples/HTKDemo/runDemo.pl | 829 + samples/HTKDemo/test.scr | 3 + samples/HTKDemo/tidata.scr | 10 + samples/HTKDemo/tidata/te1.adc | Bin 0 -> 79476 bytes samples/HTKDemo/tidata/te1.phn | 36 + samples/HTKDemo/tidata/te2.adc | Bin 0 -> 89510 bytes samples/HTKDemo/tidata/te2.phn | 40 + samples/HTKDemo/tidata/te3.adc | Bin 0 -> 134362 bytes samples/HTKDemo/tidata/te3.phn | 60 + samples/HTKDemo/tidata/tr1.adc | Bin 0 -> 97498 bytes samples/HTKDemo/tidata/tr1.phn | 38 + samples/HTKDemo/tidata/tr2.adc | Bin 0 -> 122688 bytes samples/HTKDemo/tidata/tr2.phn | 45 + samples/HTKDemo/tidata/tr3.adc | Bin 0 -> 85824 bytes samples/HTKDemo/tidata/tr3.phn | 38 + samples/HTKDemo/tidata/tr4.adc | Bin 0 -> 77632 bytes samples/HTKDemo/tidata/tr4.phn | 31 + samples/HTKDemo/tidata/tr5.adc | Bin 0 -> 69030 bytes samples/HTKDemo/tidata/tr5.phn | 23 + samples/HTKDemo/tidata/tr6.adc | Bin 0 -> 68416 bytes samples/HTKDemo/tidata/tr6.phn | 26 + samples/HTKDemo/tidata/tr7.adc | Bin 0 -> 62886 bytes samples/HTKDemo/tidata/tr7.phn | 22 + samples/HTKDemo/toolconfs/config.audio | 47 + samples/HTKDemo/toolconfs/hcopy.conf | 45 + samples/HTKDemo/toolconfs/hcopyDA.conf | 44 + samples/HTKDemo/toolconfs/hcopyFB.conf | 45 + samples/HTKDemo/toolconfs/herest.conf | 4 + samples/HTKDemo/toolconfs/herestCD.conf | 4 + samples/HTKDemo/toolconfs/herestVQ.conf | 5 + samples/HTKDemo/toolconfs/herest_cmn.conf | 5 + samples/HTKDemo/toolconfs/hhed.conf | 3 + samples/HTKDemo/toolconfs/hinit.conf | 3 + samples/HTKDemo/toolconfs/hinitCD.conf | 3 + samples/HTKDemo/toolconfs/hinitVQ.conf | 4 + samples/HTKDemo/toolconfs/hquant.conf | 3 + samples/HTKDemo/toolconfs/hrest.conf | 3 + samples/HTKDemo/toolconfs/hrestCD.conf | 3 + samples/HTKDemo/toolconfs/hrestVQ.conf | 5 + samples/HTKDemo/toolconfs/hsmooth.conf | 4 + samples/HTKDemo/toolconfs/hsmoothCD.conf | 4 + samples/HTKDemo/toolconfs/hsmoothVQ.conf | 5 + samples/HTKDemo/toolconfs/hvite.conf | 4 + samples/HTKDemo/toolconfs/hviteCD.conf | 4 + samples/HTKDemo/toolconfs/hviteDA.conf | 50 + samples/HTKDemo/toolconfs/hviteVQ.conf | 5 + samples/HTKDemo/toolconfs/hvite_cmn.conf | 4 + samples/HTKDemo/train.scr | 7 + samples/HTKTutorial/ChangeLog | 4 + samples/HTKTutorial/makesp | 64 + samples/HTKTutorial/maketrihed | 30 + samples/HTKTutorial/prompts2mlf | 46 + samples/HTKTutorial/prompts2wlist | 39 + samples/LICENSE | 77 + samples/LMTutorial/5k.wlist | 5000 ++ samples/LMTutorial/config | 3 + samples/LMTutorial/extras/60k.wlist | 60047 ++++++++++++++++ samples/LMTutorial/extras/LCond.pl | 76 + .../LMTutorial/extras/TagTextWithClassMap.pl | 64 + samples/LMTutorial/extras/getwordlist.pl | 13 + samples/LMTutorial/extras/intersection.pl | 19 + samples/LMTutorial/test/red-headed_league.txt | 556 + samples/LMTutorial/train/abbey_grange.txt | 612 + samples/LMTutorial/train/beryl_coronet.txt | 604 + samples/LMTutorial/train/black_peter.txt | 549 + samples/LMTutorial/train/blue_carbuncle.txt | 539 + samples/LMTutorial/train/boscombe_valley.txt | 619 + .../train/bruce-partington_plans.txt | 900 + samples/LMTutorial/train/cardboard_box.txt | 499 + samples/LMTutorial/train/case_of_identity.txt | 391 + .../train/charles_agustus_milverton.txt | 452 + samples/LMTutorial/train/copper_beeches.txt | 593 + samples/LMTutorial/train/crooked_man.txt | 399 + samples/LMTutorial/train/dancing_men.txt | 606 + samples/LMTutorial/train/devils_foot.txt | 576 + samples/LMTutorial/train/dying_detective.txt | 541 + samples/LMTutorial/train/empty_house.txt | 490 + samples/LMTutorial/train/engineers_thumb.txt | 489 + samples/LMTutorial/train/final_problem.txt | 412 + samples/LMTutorial/train/five_orange_pips.txt | 448 + samples/LMTutorial/train/gloria_scott.txt | 408 + samples/LMTutorial/train/golden_pince-nez.txt | 643 + .../LMTutorial/train/greek_interpreter.txt | 435 + samples/LMTutorial/train/his_last_bow.txt | 465 + .../train/hound_of_baskervilles.txt | 165 + .../LMTutorial/train/lady_frances_carfax.txt | 603 + .../LMTutorial/train/man_with_twisted_lip.txt | 571 + .../train/missing_three-quarter.txt | 540 + samples/LMTutorial/train/musgrave_ritual.txt | 396 + samples/LMTutorial/train/naval_treaty.txt | 856 + samples/LMTutorial/train/noble_bachelor.txt | 523 + samples/LMTutorial/train/norwood_builder.txt | 570 + samples/LMTutorial/train/preface.txt | 6 + samples/LMTutorial/train/priory_school.txt | 847 + samples/LMTutorial/train/red_circle.txt | 581 + samples/LMTutorial/train/reigate_puzzle.txt | 452 + samples/LMTutorial/train/resident_patient.txt | 460 + .../LMTutorial/train/scandal_in_bohemia.txt | 655 + samples/LMTutorial/train/secondain.txt | 743 + samples/LMTutorial/train/sign_of_four.txt | 2826 + samples/LMTutorial/train/silver_blaze.txt | 627 + samples/LMTutorial/train/six_napoleons.txt | 520 + samples/LMTutorial/train/solitary_cyclist.txt | 505 + samples/LMTutorial/train/speckled_band.txt | 596 + .../LMTutorial/train/stock_brokers_clerk.txt | 471 + samples/LMTutorial/train/study_in_scarlet.txt | 2607 + samples/LMTutorial/train/threeudents.txt | 535 + samples/LMTutorial/train/valley_of_fear.txt | 4112 ++ samples/LMTutorial/train/wisteria_lodge.txt | 778 + samples/LMTutorial/train/yellow_face.txt | 454 + samples/RMHTK/environment | 29 + samples/RMHTK/lib/awks/full.list.awk | 15 + samples/RMHTK/lib/awks/mlflabs2scp.awk | 28 + samples/RMHTK/lib/awks/ng.net.awk | 26 + samples/RMHTK/lib/awks/wp.net.awk | 46 + samples/RMHTK/lib/configs/config.adapt | 2 + samples/RMHTK/lib/configs/config.basic | 6 + samples/RMHTK/lib/configs/config.cmllr | 14 + samples/RMHTK/lib/configs/config.code | 52 + samples/RMHTK/lib/configs/config.cov | 14 + samples/RMHTK/lib/configs/config.debug | 2 + samples/RMHTK/lib/configs/config.discrete | 3 + samples/RMHTK/lib/configs/config.dnn.hd | 14 + samples/RMHTK/lib/configs/config.dnn.xwrd | 12 + samples/RMHTK/lib/configs/config.dnnbasic | 10 + samples/RMHTK/lib/configs/config.dnncvn | 5 + samples/RMHTK/lib/configs/config.hd | 9 + samples/RMHTK/lib/configs/config.hd.mod | 1 + samples/RMHTK/lib/configs/config.hd.win | 6 + samples/RMHTK/lib/configs/config.hlda | 18 + samples/RMHTK/lib/configs/config.hlm | 17 + samples/RMHTK/lib/configs/config.hlm.win | 8 + samples/RMHTK/lib/configs/config.hlr | 16 + samples/RMHTK/lib/configs/config.hlr.win | 12 + samples/RMHTK/lib/configs/config.logxwrd | 11 + .../RMHTK/lib/configs/config.mfc.uncompress | 5 + samples/RMHTK/lib/configs/config.mllr | 14 + .../RMHTK/lib/configs/config.mlp.uncompress | 5 + samples/RMHTK/lib/configs/config.mmi | 22 + samples/RMHTK/lib/configs/config.mpe | 31 + samples/RMHTK/lib/configs/config.mpe.win | 24 + samples/RMHTK/lib/configs/config.semit | 17 + samples/RMHTK/lib/configs/config.tandem.basic | 4 + .../RMHTK/lib/configs/config.tandem.compress | 5 + samples/RMHTK/lib/configs/config.tandem.semit | 18 + samples/RMHTK/lib/configs/config.tandem.xwrd | 6 + samples/RMHTK/lib/configs/config.xwrd | 8 + samples/RMHTK/lib/corrupt | 12 + samples/RMHTK/lib/dicts/mono.dct | 993 + samples/RMHTK/lib/dicts/mono.ded | 51 + samples/RMHTK/lib/dicts/mono.hd.dct | 993 + samples/RMHTK/lib/dicts/pcdsril.txt | 1010 + samples/RMHTK/lib/dicts/sil.txt | 2 + samples/RMHTK/lib/dicts/tri.dct | 993 + samples/RMHTK/lib/dicts/tri.ded | 8 + samples/RMHTK/lib/discrete.hmm | 39 + samples/RMHTK/lib/discrete.sp | 17 + samples/RMHTK/lib/eq.ng | 28 + samples/RMHTK/lib/eq.wp | 2 + samples/RMHTK/lib/htefiles/HTE.align | 88 + samples/RMHTK/lib/htefiles/HTE.align.trn | 63 + samples/RMHTK/lib/htefiles/HTE.dnn.am | 46 + samples/RMHTK/lib/htefiles/HTE.dnn.bn | 46 + samples/RMHTK/lib/htefiles/HTE.dnn.decode | 56 + samples/RMHTK/lib/htefiles/HTE.dnn.latgen | 55 + samples/RMHTK/lib/htefiles/HTE.dnn.mpe | 35 + samples/RMHTK/lib/htefiles/HTE.hlda | 68 + samples/RMHTK/lib/htefiles/HTE.latgen | 55 + samples/RMHTK/lib/htefiles/HTE.latgen.3 | 62 + samples/RMHTK/lib/htefiles/HTE.mpe | 70 + samples/RMHTK/lib/htefiles/HTE.sat.model | 83 + samples/RMHTK/lib/htefiles/HTE.sat.xform | 81 + samples/RMHTK/lib/htefiles/HTE.semit | 69 + samples/RMHTK/lib/htefiles/HTE.tandem.semit | 72 + samples/RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn | 2 + samples/RMHTK/lib/labs/mono.hled | 2 + samples/RMHTK/lib/labs/tri.hled | 2 + samples/RMHTK/lib/labs/xwrd.hled | 5 + samples/RMHTK/lib/maketandem.hed | 3 + samples/RMHTK/lib/null.hled | 1 + samples/RMHTK/lib/quests.hed | 214 + samples/RMHTK/lib/regtree_c2.hed | 2 + samples/RMHTK/lib/replacesil.hed | 2 + samples/RMHTK/lib/sents.snr | 2862 + samples/RMHTK/lib/wordlist | 991 + samples/RMHTK/lib/xwrd.hled | 5 + samples/RMHTK/perl_scripts/Carp.pm | 72 + samples/RMHTK/perl_scripts/Exporter.pm | 182 + .../RMHTK/perl_scripts/MakeProtoHMMSet.prl | 339 + samples/RMHTK/perl_scripts/coderm.prl | 181 + .../RMHTK/perl_scripts/discreteMonoSet.prl | 37 + samples/RMHTK/perl_scripts/env_conv.pm | 54 + samples/RMHTK/perl_scripts/fixrm.prl | 59 + samples/RMHTK/perl_scripts/full_list.prl | 36 + samples/RMHTK/perl_scripts/get_ndx.prl | 118 + samples/RMHTK/perl_scripts/global.pl | 16 + samples/RMHTK/perl_scripts/hbuild.prl | 39 + samples/RMHTK/perl_scripts/hedit.prl | 86 + samples/RMHTK/perl_scripts/herest.prl | 178 + samples/RMHTK/perl_scripts/htestrm.prl | 353 + samples/RMHTK/perl_scripts/init_discrete.prl | 56 + samples/RMHTK/perl_scripts/latgen.prl | 277 + samples/RMHTK/perl_scripts/mk_lab.prl | 30 + samples/RMHTK/perl_scripts/mk_mlf.prl | 41 + samples/RMHTK/perl_scripts/mk_sub_list.prl | 37 + samples/RMHTK/perl_scripts/mkclscript.prl | 50 + samples/RMHTK/perl_scripts/ng_net.prl | 61 + samples/RMHTK/perl_scripts/rest_discrete.prl | 56 + samples/RMHTK/perl_scripts/wp_net.prl | 85 + .../RMHTK/python_scripts/CatHTKFeatures.py | 142 + samples/RMHTK/python_scripts/ConvertExtSCP.py | 186 + samples/RMHTK/python_scripts/GenInitDNN.py | 213 + samples/RMHTK/python_scripts/SubsetSCP.py | 127 + samples/RMHTK/scripts/addmlp | 60 + samples/RMHTK/scripts/coderm | 156 + samples/RMHTK/scripts/finetune | 163 + samples/RMHTK/scripts/fixrm | 67 + samples/RMHTK/scripts/forward | 135 + samples/RMHTK/scripts/hbuild | 37 + samples/RMHTK/scripts/hedit | 60 + samples/RMHTK/scripts/herest | 174 + samples/RMHTK/scripts/htestrm | 364 + samples/RMHTK/scripts/latgen | 223 + samples/RMHTK/scripts/latgen-align | 138 + samples/RMHTK/scripts/latgen-decode | 148 + samples/RMHTK/scripts/latgen-dnn | 293 + samples/RMHTK/scripts/latgen-makelm | 143 + samples/RMHTK/scripts/mkclscript | 38 + samples/RMHTK/scripts/pretrain | 297 + samples/RMHTK/scripts/sequence | 205 + samples/RMHTK/scripts/w_decode | Bin 0 -> 182436 bytes samples/RMHTK/scripts/w_edit | Bin 0 -> 191008 bytes samples/RMHTK/steps/step-0 | 99 + samples/RMHTK/steps/step-1 | 169 + samples/RMHTK/steps/step-10 | 169 + samples/RMHTK/steps/step-11 | 71 + samples/RMHTK/steps/step-12 | 78 + samples/RMHTK/steps/step-13 | 26 + samples/RMHTK/steps/step-14 | 47 + samples/RMHTK/steps/step-15 | 163 + samples/RMHTK/steps/step-16 | 81 + samples/RMHTK/steps/step-17 | 90 + samples/RMHTK/steps/step-2 | 75 + samples/RMHTK/steps/step-3 | 136 + samples/RMHTK/steps/step-4 | 255 + samples/RMHTK/steps/step-5 | 155 + samples/RMHTK/steps/step-6 | 150 + samples/RMHTK/steps/step-7 | 167 + samples/RMHTK/steps/step-8 | 200 + samples/RMHTK/steps/step-9 | 230 + samples/RMHTK/work/R1/HTE | 70 + samples/RMHTK/work/R1/README | 61 + samples/RMHTK/work/R1/hmm0/MODELS | 1376 + samples/RMHTK/work/R1/hmm0/MODELS~ | 1377 + samples/RMHTK/work/R1/varProto | 17 + 817 files changed, 159347 insertions(+), 299697 deletions(-) delete mode 100644 HLMLib/.directory delete mode 100644 HLMLib/ChangeLog mode change 100644 => 100755 HLMLib/LCMap.c mode change 100644 => 100755 HLMLib/LCMap.h mode change 100644 => 100755 HLMLib/LGBase.c mode change 100644 => 100755 HLMLib/LGBase.h mode change 100644 => 100755 HLMLib/LModel.c mode change 100644 => 100755 HLMLib/LModel.h mode change 100644 => 100755 HLMLib/LPCalc.c mode change 100644 => 100755 HLMLib/LPCalc.h mode change 100644 => 100755 HLMLib/LPMerge.c mode change 100644 => 100755 HLMLib/LPMerge.h mode change 100644 => 100755 HLMLib/LUtil.c mode change 100644 => 100755 HLMLib/LUtil.h mode change 100644 => 100755 HLMLib/LWMap.c mode change 100644 => 100755 HLMLib/LWMap.h rename HLMLib/{Makefile.in => MakefileCPU} (71%) mode change 100644 => 100755 create mode 100755 HLMLib/MakefileMKL create mode 100755 HLMLib/MakefileNVCC delete mode 100644 HLMLib/htk_hlmlib_nt.mkf delete mode 100644 HLMTools/.directory delete mode 100644 HLMTools/ChangeLog mode change 100644 => 100755 HLMTools/Cluster.c mode change 100644 => 100755 HLMTools/HLMCopy.c mode change 100644 => 100755 HLMTools/LAdapt.c mode change 100644 => 100755 HLMTools/LBuild.c mode change 100644 => 100755 HLMTools/LFoF.c mode change 100644 => 100755 HLMTools/LGCopy.c mode change 100644 => 100755 HLMTools/LGList.c mode change 100644 => 100755 HLMTools/LGPrep.c mode change 100644 => 100755 HLMTools/LLink.c mode change 100644 => 100755 HLMTools/LMerge.c mode change 100644 => 100755 HLMTools/LNewMap.c mode change 100644 => 100755 HLMTools/LNorm.c mode change 100644 => 100755 HLMTools/LPlex.c mode change 100644 => 100755 HLMTools/LSubset.c rename HLMTools/{Makefile.in => MakefileCPU} (65%) mode change 100644 => 100755 create mode 100755 HLMTools/MakefileMKL create mode 100755 HLMTools/MakefileNVCC delete mode 100644 HLMTools/htk_hlmtools_nt.mkf delete mode 100644 HTK/HTK.dsp delete mode 100644 HTK/HTK.dsw delete mode 100644 HTK/HTK.ncb delete mode 100644 HTK/HTK.opt delete mode 100644 HTKBook/ChangeLog delete mode 100644 HTKBook/ChangeLog.CUHTK delete mode 100644 HTKBook/HTK.tex delete mode 100644 HTKBook/HTKFigs/Blocking.eps delete mode 100644 HTKBook/HTKFigs/ClassLM.eps delete mode 100644 HTKBook/HTKFigs/Config.eps delete mode 100644 HTKBook/HTKFigs/HLMoperation.eps delete mode 100644 HTKBook/HTKFigs/HTKFormat.eps delete mode 100644 HTKBook/HTKFigs/LTool.eps delete mode 100644 HTKBook/HTKFigs/MMFeg.eps delete mode 100644 HTKBook/HTKFigs/Spmods.eps delete mode 100644 HTKBook/HTKFigs/Tool.decode.eps delete mode 100644 HTKBook/HTKFigs/Tool.disc.eps delete mode 100644 HTKBook/HTKFigs/Tool.hedit.eps delete mode 100644 HTKBook/HTKFigs/Tool.labs.eps delete mode 100644 HTKBook/HTKFigs/Tool.langmod.eps delete mode 100644 HTKBook/HTKFigs/Tool.model.eps delete mode 100644 HTKBook/HTKFigs/Tool.netdict.eps delete mode 100644 HTKBook/HTKFigs/Tool.shell.eps delete mode 100644 HTKBook/HTKFigs/Tool.spio.eps delete mode 100644 HTKBook/HTKFigs/Tool.train.eps delete mode 100644 HTKBook/HTKFigs/VQUse.eps delete mode 100644 HTKBook/HTKFigs/WordLM.eps delete mode 100644 HTKBook/HTKFigs/bmemops.eps delete mode 100644 HTKBook/HTKFigs/bobig.eps delete mode 100644 HTKBook/HTKFigs/clusterset.eps delete mode 100644 HTKBook/HTKFigs/coercions.eps delete mode 100644 HTKBook/HTKFigs/cover.eps delete mode 100644 HTKBook/HTKFigs/dbhier.eps delete mode 100644 HTKBook/HTKFigs/decflow.eps delete mode 100644 HTKBook/HTKFigs/decinet.eps delete mode 100644 HTKBook/HTKFigs/dialnet.eps delete mode 100644 HTKBook/HTKFigs/digitnets.eps delete mode 100644 HTKBook/HTKFigs/discriminative.eps delete mode 100644 HTKBook/HTKFigs/discriminative.fig delete mode 100644 HTKBook/HTKFigs/dmaker.eps delete mode 100644 HTKBook/HTKFigs/egsils.eps delete mode 100644 HTKBook/HTKFigs/egtranstie.eps delete mode 100644 HTKBook/HTKFigs/endpointer.eps delete mode 100644 HTKBook/HTKFigs/flatst.eps delete mode 100644 HTKBook/HTKFigs/headapt.eps delete mode 100644 HTKBook/HTKFigs/headaptrdp.eps delete mode 100644 HTKBook/HTKFigs/herestdp.eps delete mode 100644 HTKBook/HTKFigs/hierarch.eps delete mode 100644 HTKBook/HTKFigs/hinitdp.eps delete mode 100644 HTKBook/HTKFigs/hmm1.eps delete mode 100644 HTKBook/HTKFigs/hmmirest_par.eps delete mode 100644 HTKBook/HTKFigs/hmmirest_par.fig delete mode 100644 HTKBook/HTKFigs/hsetdef.eps delete mode 100644 HTKBook/HTKFigs/hslab.eps delete mode 100644 HTKBook/HTKFigs/htktools.eps delete mode 100644 HTKBook/HTKFigs/hvalign.eps delete mode 100644 HTKBook/HTKFigs/isoprob.eps delete mode 100644 HTKBook/HTKFigs/isoword.eps delete mode 100644 HTKBook/HTKFigs/itemtree.eps delete mode 100644 HTKBook/HTKFigs/labegs.eps delete mode 100644 HTKBook/HTKFigs/markovgen.eps delete mode 100644 HTKBook/HTKFigs/melfbank.eps delete mode 100644 HTKBook/HTKFigs/memheap.eps delete mode 100644 HTKBook/HTKFigs/messencode.eps delete mode 100644 HTKBook/HTKFigs/mononet.eps delete mode 100644 HTKBook/HTKFigs/muacc.eps delete mode 100644 HTKBook/HTKFigs/netforcsr.eps delete mode 100644 HTKBook/HTKFigs/overview.eps delete mode 100644 HTKBook/HTKFigs/parher.eps delete mode 100644 HTKBook/HTKFigs/qstree.eps delete mode 100644 HTKBook/HTKFigs/recipe.eps delete mode 100644 HTKBook/HTKFigs/recnetlev.eps delete mode 100644 HTKBook/HTKFigs/recsys.eps delete mode 100644 HTKBook/HTKFigs/regtree1.eps delete mode 100644 HTKBook/HTKFigs/restloop.eps delete mode 100644 HTKBook/HTKFigs/segstore.eps delete mode 100644 HTKBook/HTKFigs/sequence.eps delete mode 100644 HTKBook/HTKFigs/softarch.eps delete mode 100644 HTKBook/HTKFigs/step1.eps delete mode 100644 HTKBook/HTKFigs/step10.eps delete mode 100644 HTKBook/HTKFigs/step11.eps delete mode 100644 HTKBook/HTKFigs/step2.eps delete mode 100644 HTKBook/HTKFigs/step3.eps delete mode 100644 HTKBook/HTKFigs/step4.eps delete mode 100644 HTKBook/HTKFigs/step5.eps delete mode 100644 HTKBook/HTKFigs/step6.eps delete mode 100644 HTKBook/HTKFigs/step7.eps delete mode 100644 HTKBook/HTKFigs/step8.eps delete mode 100644 HTKBook/HTKFigs/step9.eps delete mode 100644 HTKBook/HTKFigs/streams.eps delete mode 100644 HTKBook/HTKFigs/structshare.eps delete mode 100644 HTKBook/HTKFigs/subsmixrep.eps delete mode 100644 HTKBook/HTKFigs/subword.eps delete mode 100644 HTKBook/HTKFigs/sysoview.eps delete mode 100644 HTKBook/HTKFigs/tcover.eps delete mode 100644 HTKBook/HTKFigs/tiedstate.eps delete mode 100644 HTKBook/HTKFigs/tmixeg.eps delete mode 100644 HTKBook/HTKFigs/toolkit.eps delete mode 100644 HTKBook/HTKFigs/tracc.eps delete mode 100644 HTKBook/HTKFigs/tsubword.eps delete mode 100644 HTKBook/HTKFigs/useforiso.eps delete mode 100644 HTKBook/HTKFigs/vaacc.eps delete mode 100644 HTKBook/HTKFigs/vitloop.eps delete mode 100644 HTKBook/HTKFigs/vmatrep.eps delete mode 100644 HTKBook/HTKFigs/vqtohmm.eps delete mode 100644 HTKBook/HTKFigs/vtlnpiecewise.eps delete mode 100644 HTKBook/HTKFigs/vtrellis.eps delete mode 100644 HTKBook/HTKFigs/wdnet.eps delete mode 100644 HTKBook/HTKFigs/wdnet0.eps delete mode 100644 HTKBook/HTKFigs/wdnet1.eps delete mode 100644 HTKBook/HTKFigs/wintnet.eps delete mode 100644 HTKBook/HTKFigs/wlroper.eps delete mode 100644 HTKBook/HTKFigs/wtacc.eps delete mode 100644 HTKBook/HTKFigs/xwrdnet.eps delete mode 100644 HTKBook/HTKRef/Cluster.aux delete mode 100644 HTKBook/HTKRef/Cluster.tex delete mode 100644 HTKBook/HTKRef/HBuild.aux delete mode 100644 HTKBook/HTKRef/HBuild.tex delete mode 100644 HTKBook/HTKRef/HCompV.aux delete mode 100644 HTKBook/HTKRef/HCompV.tex delete mode 100644 HTKBook/HTKRef/HCopy.aux delete mode 100644 HTKBook/HTKRef/HCopy.tex delete mode 100644 HTKBook/HTKRef/HDMan.aux delete mode 100644 HTKBook/HTKRef/HDMan.tex delete mode 100644 HTKBook/HTKRef/HDecode.aux delete mode 100644 HTKBook/HTKRef/HDecode.tex delete mode 100644 HTKBook/HTKRef/HERest.aux delete mode 100644 HTKBook/HTKRef/HERest.tex delete mode 100644 HTKBook/HTKRef/HHEd.aux delete mode 100644 HTKBook/HTKRef/HHEd.tex delete mode 100644 HTKBook/HTKRef/HInit.aux delete mode 100644 HTKBook/HTKRef/HInit.tex delete mode 100644 HTKBook/HTKRef/HLEd.aux delete mode 100644 HTKBook/HTKRef/HLEd.tex delete mode 100644 HTKBook/HTKRef/HLMCopy.aux delete mode 100644 HTKBook/HTKRef/HLMCopy.tex delete mode 100644 HTKBook/HTKRef/HLRescore.aux delete mode 100644 HTKBook/HTKRef/HLRescore.tex delete mode 100644 HTKBook/HTKRef/HLStats.aux delete mode 100644 HTKBook/HTKRef/HLStats.tex delete mode 100644 HTKBook/HTKRef/HList.aux delete mode 100644 HTKBook/HTKRef/HList.tex delete mode 100644 HTKBook/HTKRef/HMMIRest.aux delete mode 100644 HTKBook/HTKRef/HMMIRest.tex delete mode 100644 HTKBook/HTKRef/HParse.aux delete mode 100644 HTKBook/HTKRef/HParse.tex delete mode 100644 HTKBook/HTKRef/HQuant.aux delete mode 100644 HTKBook/HTKRef/HQuant.tex delete mode 100644 HTKBook/HTKRef/HRest.aux delete mode 100644 HTKBook/HTKRef/HRest.tex delete mode 100644 HTKBook/HTKRef/HResults.aux delete mode 100644 HTKBook/HTKRef/HResults.tex delete mode 100644 HTKBook/HTKRef/HSGen.aux delete mode 100644 HTKBook/HTKRef/HSGen.tex delete mode 100644 HTKBook/HTKRef/HSLab.aux delete mode 100644 HTKBook/HTKRef/HSLab.tex delete mode 100644 HTKBook/HTKRef/HSmooth.aux delete mode 100644 HTKBook/HTKRef/HSmooth.tex delete mode 100644 HTKBook/HTKRef/HVite.aux delete mode 100644 HTKBook/HTKRef/HVite.tex delete mode 100644 HTKBook/HTKRef/LAdapt.aux delete mode 100644 HTKBook/HTKRef/LAdapt.tex delete mode 100644 HTKBook/HTKRef/LBuild.aux delete mode 100644 HTKBook/HTKRef/LBuild.tex delete mode 100644 HTKBook/HTKRef/LFoF.aux delete mode 100644 HTKBook/HTKRef/LFoF.tex delete mode 100644 HTKBook/HTKRef/LGCopy.aux delete mode 100644 HTKBook/HTKRef/LGCopy.tex delete mode 100644 HTKBook/HTKRef/LGList.aux delete mode 100644 HTKBook/HTKRef/LGList.tex delete mode 100644 HTKBook/HTKRef/LGPrep.aux delete mode 100644 HTKBook/HTKRef/LGPrep.tex delete mode 100644 HTKBook/HTKRef/LLink.aux delete mode 100644 HTKBook/HTKRef/LLink.tex delete mode 100644 HTKBook/HTKRef/LMerge.aux delete mode 100644 HTKBook/HTKRef/LMerge.tex delete mode 100644 HTKBook/HTKRef/LNewMap.aux delete mode 100644 HTKBook/HTKRef/LNewMap.tex delete mode 100644 HTKBook/HTKRef/LNorm.aux delete mode 100644 HTKBook/HTKRef/LNorm.tex delete mode 100644 HTKBook/HTKRef/LPlex.aux delete mode 100644 HTKBook/HTKRef/LPlex.tex delete mode 100644 HTKBook/HTKRef/LSubset.aux delete mode 100644 HTKBook/HTKRef/LSubset.tex delete mode 100644 HTKBook/HTKRef/tools.aux delete mode 100644 HTKBook/HTKRef/tools.tex delete mode 100644 HTKBook/HTKXFigs/ClassLM.doc delete mode 100644 HTKBook/HTKXFigs/HLMoperation.doc delete mode 100644 HTKBook/HTKXFigs/LTool.doc delete mode 100644 HTKBook/HTKXFigs/Tool.labs.fig delete mode 100644 HTKBook/HTKXFigs/Tool.model.fig delete mode 100644 HTKBook/HTKXFigs/Tool.netdict.fig delete mode 100644 HTKBook/HTKXFigs/Tool.shell.fig delete mode 100644 HTKBook/HTKXFigs/Tool.spio.fig delete mode 100644 HTKBook/HTKXFigs/WordLM.doc delete mode 100644 HTKBook/HTKXFigs/cover.fig delete mode 100644 HTKBook/HTKXFigs/headapt.fig delete mode 100644 HTKBook/HTKXFigs/headaptrdp.fig delete mode 100644 HTKBook/HTKXFigs/softarch-big.fig delete mode 100644 HTKBook/HTKXFigs/softarch.fig delete mode 100644 HTKBook/HTKXFigs/step10.fig delete mode 100644 HTKBook/HTKXFigs/sysoview.fig delete mode 100644 HTKBook/HTKXFigs/vtlnpiecewise.fig delete mode 100644 HTKBook/Makefile delete mode 100644 HTKBook/README delete mode 100644 HTKBook/adapt.tex delete mode 100644 HTKBook/config.tex delete mode 100644 HTKBook/decode.tex delete mode 100644 HTKBook/discmods.tex delete mode 100644 HTKBook/errors.tex delete mode 100644 HTKBook/exampsys.tex delete mode 100644 HTKBook/fundaments.tex delete mode 100644 HTKBook/hlmfiles.tex delete mode 100644 HTKBook/hlmfund.tex delete mode 100644 HTKBook/hlmtutorial.tex delete mode 100644 HTKBook/htkbook-pdf.tex delete mode 100644 HTKBook/htkbook.tex delete mode 100644 HTKBook/htkoview.tex delete mode 100644 HTKBook/htkslf.tex delete mode 100644 HTKBook/labels.tex delete mode 100644 HTKBook/latex2html-init delete mode 100644 HTKBook/models.tex delete mode 100644 HTKBook/netdict.tex delete mode 100644 HTKBook/openviron.tex delete mode 100644 HTKBook/refine.tex delete mode 100644 HTKBook/speechio.tex delete mode 100644 HTKBook/train.tex delete mode 100644 HTKLVRec/Makefile.in delete mode 100644 HTKLib/.directory delete mode 100644 HTKLib/ChangeLog delete mode 100644 HTKLib/ChangeLog.CUHTK create mode 100755 HTKLib/HANNet.c create mode 100755 HTKLib/HANNet.h mode change 100644 => 100755 HTKLib/HAdapt.c mode change 100644 => 100755 HTKLib/HAdapt.h mode change 100644 => 100755 HTKLib/HArc.c mode change 100644 => 100755 HTKLib/HArc.h mode change 100644 => 100755 HTKLib/HAudio.c mode change 100644 => 100755 HTKLib/HAudio.h create mode 100755 HTKLib/HCUDA.cu create mode 100755 HTKLib/HCUDA.h mode change 100644 => 100755 HTKLib/HDict.c mode change 100644 => 100755 HTKLib/HDict.h mode change 100644 => 100755 HTKLib/HExactMPE.c mode change 100644 => 100755 HTKLib/HExactMPE.h mode change 100644 => 100755 HTKLib/HFB.c mode change 100644 => 100755 HTKLib/HFB.h mode change 100644 => 100755 HTKLib/HFBLat.c mode change 100644 => 100755 HTKLib/HFBLat.h mode change 100644 => 100755 HTKLib/HGraf.c mode change 100644 => 100755 HTKLib/HGraf.h mode change 100644 => 100755 HTKLib/HGraf.null.c delete mode 100644 HTKLib/HGraf_WIN32.c mode change 100644 => 100755 HTKLib/HLM.c mode change 100644 => 100755 HTKLib/HLM.h mode change 100644 => 100755 HTKLib/HLabel.c mode change 100644 => 100755 HTKLib/HLabel.h mode change 100644 => 100755 HTKLib/HLat.c mode change 100644 => 100755 HTKLib/HLat.h mode change 100644 => 100755 HTKLib/HMap.c mode change 100644 => 100755 HTKLib/HMap.h mode change 100644 => 100755 HTKLib/HMath.c mode change 100644 => 100755 HTKLib/HMath.h mode change 100644 => 100755 HTKLib/HMem.c mode change 100644 => 100755 HTKLib/HMem.h mode change 100644 => 100755 HTKLib/HModel.c mode change 100644 => 100755 HTKLib/HModel.h create mode 100755 HTKLib/HNCache.c create mode 100755 HTKLib/HNCache.h mode change 100644 => 100755 HTKLib/HNet.c mode change 100644 => 100755 HTKLib/HNet.h mode change 100644 => 100755 HTKLib/HParm.c mode change 100644 => 100755 HTKLib/HParm.h mode change 100644 => 100755 HTKLib/HRec.c mode change 100644 => 100755 HTKLib/HRec.h mode change 100644 => 100755 HTKLib/HShell.c mode change 100644 => 100755 HTKLib/HShell.h mode change 100644 => 100755 HTKLib/HSigP.c mode change 100644 => 100755 HTKLib/HSigP.h mode change 100644 => 100755 HTKLib/HTrain.c mode change 100644 => 100755 HTKLib/HTrain.h mode change 100644 => 100755 HTKLib/HUtil.c mode change 100644 => 100755 HTKLib/HUtil.h mode change 100644 => 100755 HTKLib/HVQ.c mode change 100644 => 100755 HTKLib/HVQ.h mode change 100644 => 100755 HTKLib/HWave.c mode change 100644 => 100755 HTKLib/HWave.h rename HTKLib/{Makefile.in => MakefileCPU} (74%) mode change 100644 => 100755 create mode 100755 HTKLib/MakefileMKL create mode 100755 HTKLib/MakefileNVCC create mode 100755 HTKLib/config.h mode change 100644 => 100755 HTKLib/esig_asc.c mode change 100644 => 100755 HTKLib/esig_edr.c mode change 100644 => 100755 HTKLib/esig_nat.c mode change 100644 => 100755 HTKLib/esignal.c mode change 100644 => 100755 HTKLib/esignal.h delete mode 100644 HTKLib/htk_htklib_nt.mkf delete mode 100644 HTKLib/i686.cpu delete mode 100644 HTKLib/strarr.c delete mode 100644 HTKLib/strarr.h delete mode 100644 HTKTools/.directory delete mode 100644 HTKTools/ChangeLog delete mode 100644 HTKTools/ChangeLog.CUHTK mode change 100644 => 100755 HTKTools/HBuild.c mode change 100644 => 100755 HTKTools/HCompV.c mode change 100644 => 100755 HTKTools/HCopy.c mode change 100644 => 100755 HTKTools/HDMan.c mode change 100644 => 100755 HTKTools/HERest.c mode change 100644 => 100755 HTKTools/HHEd.c mode change 100644 => 100755 HTKTools/HInit.c create mode 100755 HTKTools/HLConf.c mode change 100644 => 100755 HTKTools/HLEd.c mode change 100644 => 100755 HTKTools/HLRescore.c mode change 100644 => 100755 HTKTools/HLStats.c mode change 100644 => 100755 HTKTools/HList.c mode change 100644 => 100755 HTKTools/HMMIRest.c create mode 100755 HTKTools/HNForward.c create mode 100755 HTKTools/HNTrainSGD.c mode change 100644 => 100755 HTKTools/HParse.c mode change 100644 => 100755 HTKTools/HQuant.c mode change 100644 => 100755 HTKTools/HRest.c mode change 100644 => 100755 HTKTools/HResults.c mode change 100644 => 100755 HTKTools/HSGen.c mode change 100644 => 100755 HTKTools/HSLab.c mode change 100644 => 100755 HTKTools/HSmooth.c mode change 100644 => 100755 HTKTools/HVite.c rename HTKTools/{Makefile.in => MakefileCPU} (65%) mode change 100644 => 100755 create mode 100755 HTKTools/MakefileMKL create mode 100755 HTKTools/MakefileNVCC delete mode 100644 HTKTools/htk_htktools_nt.mkf mode change 100644 => 100755 LICENSE delete mode 100644 Makefile.in delete mode 100644 config.guess delete mode 100644 config.sub delete mode 100644 configure delete mode 100644 configure.ac delete mode 100644 env/.directory delete mode 100644 env/ChangeLog delete mode 100644 env/env.decosf_alpha delete mode 100644 env/env.hp700 delete mode 100644 env/env.linux delete mode 100644 env/env.linux-icc8-P4 delete mode 100644 env/env.sgi delete mode 100644 env/env.sun4_solaris delete mode 100644 env/env.sun4_solaris_cc delete mode 100644 env/env.sun4_solaris_gcc delete mode 100644 env/exp.decosf_alpha delete mode 100644 env/exp.hp700 delete mode 100644 env/exp.linux delete mode 100644 env/exp.linux-dec delete mode 100644 env/exp.linux-icc7-P4 delete mode 100644 env/exp.linux-icc8-P4 delete mode 100644 env/exp.linux_icc delete mode 100644 env/exp.sgi delete mode 100644 env/exp.sun4_solaris delete mode 100644 env/exp.sun4_solaris_cc delete mode 100644 env/exp.sun4_solaris_gcc delete mode 100644 install-sh create mode 100755 samples/HTKDemo/ChangeLog create mode 100755 samples/HTKDemo/MakeProtoHMMSet create mode 100755 samples/HTKDemo/README create mode 100755 samples/HTKDemo/README.NT create mode 100755 samples/HTKDemo/accs.scr create mode 100755 samples/HTKDemo/codebooks/currentCodebook create mode 100755 samples/HTKDemo/configs/DcfFormat create mode 100755 samples/HTKDemo/configs/directAudio.dcf create mode 100755 samples/HTKDemo/configs/lbiPlainS1.dcf create mode 100755 samples/HTKDemo/configs/monDiscM64S1Lin.dcf create mode 100755 samples/HTKDemo/configs/monDiscM64S1Tree.dcf create mode 100755 samples/HTKDemo/configs/monDiscM64S3Lin.dcf create mode 100755 samples/HTKDemo/configs/monDiscM64S3Tree.dcf create mode 100755 samples/HTKDemo/configs/monPlainM1S1.dcf create mode 100755 samples/HTKDemo/configs/monPlainM1S3.dcf create mode 100755 samples/HTKDemo/configs/monPlainM1S3FullCov.dcf create mode 100755 samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf create mode 100755 samples/HTKDemo/configs/monPlainM4S1.dcf create mode 100755 samples/HTKDemo/configs/monSharedM1S3.dcf create mode 100755 samples/HTKDemo/configs/monTiedMixS1.dcf create mode 100755 samples/HTKDemo/configs/monTiedMixS3.dcf create mode 100755 samples/HTKDemo/configs/rbiPlainS1.dcf create mode 100755 samples/HTKDemo/configs/triDiscM64S3.dcf create mode 100755 samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf create mode 100755 samples/HTKDemo/configs/triPlainS1.dcf create mode 100755 samples/HTKDemo/configs/triSharedS1.dcf create mode 100755 samples/HTKDemo/configs/triTiedMixS1.dcf create mode 100755 samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf create mode 100755 samples/HTKDemo/configs/triTiedStateS1.dcf create mode 100755 samples/HTKDemo/data/store/te1.mfc create mode 100755 samples/HTKDemo/data/store/te2.mfc create mode 100755 samples/HTKDemo/data/store/te3.mfc create mode 100755 samples/HTKDemo/data/store/tr1.mfc create mode 100755 samples/HTKDemo/data/store/tr2.mfc create mode 100755 samples/HTKDemo/data/store/tr3.mfc create mode 100755 samples/HTKDemo/data/store/tr4.mfc create mode 100755 samples/HTKDemo/data/store/tr5.mfc create mode 100755 samples/HTKDemo/data/store/tr6.mfc create mode 100755 samples/HTKDemo/data/store/tr7.mfc create mode 100755 samples/HTKDemo/data/test/te1.mfc create mode 100755 samples/HTKDemo/data/test/te2.mfc create mode 100755 samples/HTKDemo/data/test/te3.mfc create mode 100755 samples/HTKDemo/data/train/tr1.mfc create mode 100755 samples/HTKDemo/data/train/tr2.mfc create mode 100755 samples/HTKDemo/data/train/tr3.mfc create mode 100755 samples/HTKDemo/data/train/tr4.mfc create mode 100755 samples/HTKDemo/data/train/tr5.mfc create mode 100755 samples/HTKDemo/data/train/tr6.mfc create mode 100755 samples/HTKDemo/data/train/tr7.mfc create mode 100755 samples/HTKDemo/edfiles/contDepPlainhs.hed create mode 100755 samples/HTKDemo/edfiles/contDepTiedhsS1.hed create mode 100755 samples/HTKDemo/edfiles/contDepTiedhsS3.hed create mode 100755 samples/HTKDemo/edfiles/edlabs.led create mode 100755 samples/HTKDemo/edfiles/edllabs.led create mode 100755 samples/HTKDemo/edfiles/edrlabs.led create mode 100755 samples/HTKDemo/edfiles/edtlabs.led create mode 100755 samples/HTKDemo/edfiles/lbiSharedhsM1.hed create mode 100755 samples/HTKDemo/edfiles/lbiTiedState.hed create mode 100755 samples/HTKDemo/edfiles/monInternalTie.hed create mode 100755 samples/HTKDemo/edfiles/monSharedhsM1.hed create mode 100755 samples/HTKDemo/edfiles/monSharedhsM4.hed create mode 100755 samples/HTKDemo/edfiles/monTiedhsS1.hed create mode 100755 samples/HTKDemo/edfiles/monTiedhsS3.hed create mode 100755 samples/HTKDemo/edfiles/rbiSharedhsM1.hed create mode 100755 samples/HTKDemo/edfiles/rbiTiedState.hed create mode 100755 samples/HTKDemo/edfiles/triSharedhsM1.hed create mode 100755 samples/HTKDemo/edfiles/triSharedhsM4.hed create mode 100755 samples/HTKDemo/edfiles/triTiedState.hed create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/te1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/te2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/te3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr4.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr5.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr6.lab create mode 100755 samples/HTKDemo/labels/bcplabs/lbi/tr7.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/te1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/te2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/te3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr4.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr5.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr6.lab create mode 100755 samples/HTKDemo/labels/bcplabs/mon/tr7.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/te1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/te2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/te3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr4.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr5.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr6.lab create mode 100755 samples/HTKDemo/labels/bcplabs/rbi/tr7.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/te1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/te2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/te3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr1.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr2.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr3.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr4.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr5.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr6.lab create mode 100755 samples/HTKDemo/labels/bcplabs/tri/tr7.lab create mode 100755 samples/HTKDemo/lists/allPairedFiles create mode 100755 samples/HTKDemo/lists/allTrainFiles create mode 100755 samples/HTKDemo/lists/bcplist create mode 100755 samples/HTKDemo/lists/bcpvocab create mode 100755 samples/HTKDemo/lists/contDepList create mode 100755 samples/HTKDemo/lists/dataList1 create mode 100755 samples/HTKDemo/lists/dataList2 create mode 100755 samples/HTKDemo/lists/dataList3 create mode 100755 samples/HTKDemo/lists/lbiVocab create mode 100755 samples/HTKDemo/lists/rbiVocab create mode 100755 samples/HTKDemo/lists/testFileStubs create mode 100755 samples/HTKDemo/lists/trainFileStubs create mode 100755 samples/HTKDemo/lists/triVocab create mode 100755 samples/HTKDemo/monlabs.scr create mode 100755 samples/HTKDemo/networks/lbiLattice create mode 100755 samples/HTKDemo/networks/lbiNetwork create mode 100755 samples/HTKDemo/networks/monLattice create mode 100755 samples/HTKDemo/networks/monNetwork create mode 100755 samples/HTKDemo/networks/rbiLattice create mode 100755 samples/HTKDemo/networks/rbiNetwork create mode 100755 samples/HTKDemo/networks/triLattice create mode 100755 samples/HTKDemo/networks/triNetwork create mode 100755 samples/HTKDemo/outaudio create mode 100755 samples/HTKDemo/protoconfs/example.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf create mode 100755 samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf create mode 100755 samples/HTKDemo/results/lbiPlainS1.res create mode 100755 samples/HTKDemo/results/monDiscM64S1Lin.res create mode 100755 samples/HTKDemo/results/monDiscM64S1Tree.res create mode 100755 samples/HTKDemo/results/monDiscM64S3Lin.res create mode 100755 samples/HTKDemo/results/monDiscM64S3Tree.res create mode 100755 samples/HTKDemo/results/monPlainM1S1.res create mode 100755 samples/HTKDemo/results/monPlainM1S3.res create mode 100755 samples/HTKDemo/results/monPlainM1S3FullCov.res create mode 100755 samples/HTKDemo/results/monPlainM1S3HERestPell.res create mode 100755 samples/HTKDemo/results/monPlainM4S1.res create mode 100755 samples/HTKDemo/results/monSharedM1S3.res create mode 100755 samples/HTKDemo/results/monTiedMixS1.res create mode 100755 samples/HTKDemo/results/monTiedMixS3.res create mode 100755 samples/HTKDemo/results/rbiPlainS1.res create mode 100755 samples/HTKDemo/results/triDiscM64S3.res create mode 100755 samples/HTKDemo/results/triDiscM64S3HSmooth.res create mode 100755 samples/HTKDemo/results/triPlainS1.res create mode 100755 samples/HTKDemo/results/triSharedS1.res create mode 100755 samples/HTKDemo/results/triTiedMixS1.res create mode 100755 samples/HTKDemo/results/triTiedMixS1HSmooth.res create mode 100755 samples/HTKDemo/results/triTiedStateS1.res create mode 100755 samples/HTKDemo/runDemo create mode 100755 samples/HTKDemo/runDemo.pl create mode 100755 samples/HTKDemo/test.scr create mode 100755 samples/HTKDemo/tidata.scr create mode 100755 samples/HTKDemo/tidata/te1.adc create mode 100755 samples/HTKDemo/tidata/te1.phn create mode 100755 samples/HTKDemo/tidata/te2.adc create mode 100755 samples/HTKDemo/tidata/te2.phn create mode 100755 samples/HTKDemo/tidata/te3.adc create mode 100755 samples/HTKDemo/tidata/te3.phn create mode 100755 samples/HTKDemo/tidata/tr1.adc create mode 100755 samples/HTKDemo/tidata/tr1.phn create mode 100755 samples/HTKDemo/tidata/tr2.adc create mode 100755 samples/HTKDemo/tidata/tr2.phn create mode 100755 samples/HTKDemo/tidata/tr3.adc create mode 100755 samples/HTKDemo/tidata/tr3.phn create mode 100755 samples/HTKDemo/tidata/tr4.adc create mode 100755 samples/HTKDemo/tidata/tr4.phn create mode 100755 samples/HTKDemo/tidata/tr5.adc create mode 100755 samples/HTKDemo/tidata/tr5.phn create mode 100755 samples/HTKDemo/tidata/tr6.adc create mode 100755 samples/HTKDemo/tidata/tr6.phn create mode 100755 samples/HTKDemo/tidata/tr7.adc create mode 100755 samples/HTKDemo/tidata/tr7.phn create mode 100755 samples/HTKDemo/toolconfs/config.audio create mode 100755 samples/HTKDemo/toolconfs/hcopy.conf create mode 100755 samples/HTKDemo/toolconfs/hcopyDA.conf create mode 100755 samples/HTKDemo/toolconfs/hcopyFB.conf create mode 100755 samples/HTKDemo/toolconfs/herest.conf create mode 100755 samples/HTKDemo/toolconfs/herestCD.conf create mode 100755 samples/HTKDemo/toolconfs/herestVQ.conf create mode 100755 samples/HTKDemo/toolconfs/herest_cmn.conf create mode 100755 samples/HTKDemo/toolconfs/hhed.conf create mode 100755 samples/HTKDemo/toolconfs/hinit.conf create mode 100755 samples/HTKDemo/toolconfs/hinitCD.conf create mode 100755 samples/HTKDemo/toolconfs/hinitVQ.conf create mode 100755 samples/HTKDemo/toolconfs/hquant.conf create mode 100755 samples/HTKDemo/toolconfs/hrest.conf create mode 100755 samples/HTKDemo/toolconfs/hrestCD.conf create mode 100755 samples/HTKDemo/toolconfs/hrestVQ.conf create mode 100755 samples/HTKDemo/toolconfs/hsmooth.conf create mode 100755 samples/HTKDemo/toolconfs/hsmoothCD.conf create mode 100755 samples/HTKDemo/toolconfs/hsmoothVQ.conf create mode 100755 samples/HTKDemo/toolconfs/hvite.conf create mode 100755 samples/HTKDemo/toolconfs/hviteCD.conf create mode 100755 samples/HTKDemo/toolconfs/hviteDA.conf create mode 100755 samples/HTKDemo/toolconfs/hviteVQ.conf create mode 100755 samples/HTKDemo/toolconfs/hvite_cmn.conf create mode 100755 samples/HTKDemo/train.scr create mode 100755 samples/HTKTutorial/ChangeLog create mode 100755 samples/HTKTutorial/makesp create mode 100755 samples/HTKTutorial/maketrihed create mode 100755 samples/HTKTutorial/prompts2mlf create mode 100755 samples/HTKTutorial/prompts2wlist create mode 100755 samples/LICENSE create mode 100755 samples/LMTutorial/5k.wlist create mode 100755 samples/LMTutorial/config create mode 100755 samples/LMTutorial/extras/60k.wlist create mode 100755 samples/LMTutorial/extras/LCond.pl create mode 100755 samples/LMTutorial/extras/TagTextWithClassMap.pl create mode 100755 samples/LMTutorial/extras/getwordlist.pl create mode 100755 samples/LMTutorial/extras/intersection.pl create mode 100755 samples/LMTutorial/test/red-headed_league.txt create mode 100755 samples/LMTutorial/train/abbey_grange.txt create mode 100755 samples/LMTutorial/train/beryl_coronet.txt create mode 100755 samples/LMTutorial/train/black_peter.txt create mode 100755 samples/LMTutorial/train/blue_carbuncle.txt create mode 100755 samples/LMTutorial/train/boscombe_valley.txt create mode 100755 samples/LMTutorial/train/bruce-partington_plans.txt create mode 100755 samples/LMTutorial/train/cardboard_box.txt create mode 100755 samples/LMTutorial/train/case_of_identity.txt create mode 100755 samples/LMTutorial/train/charles_agustus_milverton.txt create mode 100755 samples/LMTutorial/train/copper_beeches.txt create mode 100755 samples/LMTutorial/train/crooked_man.txt create mode 100755 samples/LMTutorial/train/dancing_men.txt create mode 100755 samples/LMTutorial/train/devils_foot.txt create mode 100755 samples/LMTutorial/train/dying_detective.txt create mode 100755 samples/LMTutorial/train/empty_house.txt create mode 100755 samples/LMTutorial/train/engineers_thumb.txt create mode 100755 samples/LMTutorial/train/final_problem.txt create mode 100755 samples/LMTutorial/train/five_orange_pips.txt create mode 100755 samples/LMTutorial/train/gloria_scott.txt create mode 100755 samples/LMTutorial/train/golden_pince-nez.txt create mode 100755 samples/LMTutorial/train/greek_interpreter.txt create mode 100755 samples/LMTutorial/train/his_last_bow.txt create mode 100755 samples/LMTutorial/train/hound_of_baskervilles.txt create mode 100755 samples/LMTutorial/train/lady_frances_carfax.txt create mode 100755 samples/LMTutorial/train/man_with_twisted_lip.txt create mode 100755 samples/LMTutorial/train/missing_three-quarter.txt create mode 100755 samples/LMTutorial/train/musgrave_ritual.txt create mode 100755 samples/LMTutorial/train/naval_treaty.txt create mode 100755 samples/LMTutorial/train/noble_bachelor.txt create mode 100755 samples/LMTutorial/train/norwood_builder.txt create mode 100755 samples/LMTutorial/train/preface.txt create mode 100755 samples/LMTutorial/train/priory_school.txt create mode 100755 samples/LMTutorial/train/red_circle.txt create mode 100755 samples/LMTutorial/train/reigate_puzzle.txt create mode 100755 samples/LMTutorial/train/resident_patient.txt create mode 100755 samples/LMTutorial/train/scandal_in_bohemia.txt create mode 100755 samples/LMTutorial/train/secondain.txt create mode 100755 samples/LMTutorial/train/sign_of_four.txt create mode 100755 samples/LMTutorial/train/silver_blaze.txt create mode 100755 samples/LMTutorial/train/six_napoleons.txt create mode 100755 samples/LMTutorial/train/solitary_cyclist.txt create mode 100755 samples/LMTutorial/train/speckled_band.txt create mode 100755 samples/LMTutorial/train/stock_brokers_clerk.txt create mode 100755 samples/LMTutorial/train/study_in_scarlet.txt create mode 100755 samples/LMTutorial/train/threeudents.txt create mode 100755 samples/LMTutorial/train/valley_of_fear.txt create mode 100755 samples/LMTutorial/train/wisteria_lodge.txt create mode 100755 samples/LMTutorial/train/yellow_face.txt create mode 100755 samples/RMHTK/environment create mode 100755 samples/RMHTK/lib/awks/full.list.awk create mode 100644 samples/RMHTK/lib/awks/mlflabs2scp.awk create mode 100755 samples/RMHTK/lib/awks/ng.net.awk create mode 100755 samples/RMHTK/lib/awks/wp.net.awk create mode 100755 samples/RMHTK/lib/configs/config.adapt create mode 100755 samples/RMHTK/lib/configs/config.basic create mode 100755 samples/RMHTK/lib/configs/config.cmllr create mode 100755 samples/RMHTK/lib/configs/config.code create mode 100755 samples/RMHTK/lib/configs/config.cov create mode 100755 samples/RMHTK/lib/configs/config.debug create mode 100755 samples/RMHTK/lib/configs/config.discrete create mode 100755 samples/RMHTK/lib/configs/config.dnn.hd create mode 100755 samples/RMHTK/lib/configs/config.dnn.xwrd create mode 100755 samples/RMHTK/lib/configs/config.dnnbasic create mode 100755 samples/RMHTK/lib/configs/config.dnncvn create mode 100755 samples/RMHTK/lib/configs/config.hd create mode 100755 samples/RMHTK/lib/configs/config.hd.mod create mode 100755 samples/RMHTK/lib/configs/config.hd.win create mode 100755 samples/RMHTK/lib/configs/config.hlda create mode 100755 samples/RMHTK/lib/configs/config.hlm create mode 100755 samples/RMHTK/lib/configs/config.hlm.win create mode 100755 samples/RMHTK/lib/configs/config.hlr create mode 100755 samples/RMHTK/lib/configs/config.hlr.win create mode 100755 samples/RMHTK/lib/configs/config.logxwrd create mode 100644 samples/RMHTK/lib/configs/config.mfc.uncompress create mode 100755 samples/RMHTK/lib/configs/config.mllr create mode 100644 samples/RMHTK/lib/configs/config.mlp.uncompress create mode 100755 samples/RMHTK/lib/configs/config.mmi create mode 100755 samples/RMHTK/lib/configs/config.mpe create mode 100755 samples/RMHTK/lib/configs/config.mpe.win create mode 100755 samples/RMHTK/lib/configs/config.semit create mode 100755 samples/RMHTK/lib/configs/config.tandem.basic create mode 100644 samples/RMHTK/lib/configs/config.tandem.compress create mode 100755 samples/RMHTK/lib/configs/config.tandem.semit create mode 100755 samples/RMHTK/lib/configs/config.tandem.xwrd create mode 100755 samples/RMHTK/lib/configs/config.xwrd create mode 100755 samples/RMHTK/lib/corrupt create mode 100755 samples/RMHTK/lib/dicts/mono.dct create mode 100755 samples/RMHTK/lib/dicts/mono.ded create mode 100755 samples/RMHTK/lib/dicts/mono.hd.dct create mode 100755 samples/RMHTK/lib/dicts/pcdsril.txt create mode 100755 samples/RMHTK/lib/dicts/sil.txt create mode 100755 samples/RMHTK/lib/dicts/tri.dct create mode 100755 samples/RMHTK/lib/dicts/tri.ded create mode 100755 samples/RMHTK/lib/discrete.hmm create mode 100755 samples/RMHTK/lib/discrete.sp create mode 100755 samples/RMHTK/lib/eq.ng create mode 100755 samples/RMHTK/lib/eq.wp create mode 100755 samples/RMHTK/lib/htefiles/HTE.align create mode 100755 samples/RMHTK/lib/htefiles/HTE.align.trn create mode 100755 samples/RMHTK/lib/htefiles/HTE.dnn.am create mode 100755 samples/RMHTK/lib/htefiles/HTE.dnn.bn create mode 100755 samples/RMHTK/lib/htefiles/HTE.dnn.decode create mode 100755 samples/RMHTK/lib/htefiles/HTE.dnn.latgen create mode 100755 samples/RMHTK/lib/htefiles/HTE.dnn.mpe create mode 100755 samples/RMHTK/lib/htefiles/HTE.hlda create mode 100755 samples/RMHTK/lib/htefiles/HTE.latgen create mode 100755 samples/RMHTK/lib/htefiles/HTE.latgen.3 create mode 100755 samples/RMHTK/lib/htefiles/HTE.mpe create mode 100755 samples/RMHTK/lib/htefiles/HTE.sat.model create mode 100755 samples/RMHTK/lib/htefiles/HTE.sat.xform create mode 100755 samples/RMHTK/lib/htefiles/HTE.semit create mode 100755 samples/RMHTK/lib/htefiles/HTE.tandem.semit create mode 100755 samples/RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn create mode 100755 samples/RMHTK/lib/labs/mono.hled create mode 100755 samples/RMHTK/lib/labs/tri.hled create mode 100755 samples/RMHTK/lib/labs/xwrd.hled create mode 100644 samples/RMHTK/lib/maketandem.hed create mode 100755 samples/RMHTK/lib/null.hled create mode 100755 samples/RMHTK/lib/quests.hed create mode 100755 samples/RMHTK/lib/regtree_c2.hed create mode 100644 samples/RMHTK/lib/replacesil.hed create mode 100755 samples/RMHTK/lib/sents.snr create mode 100755 samples/RMHTK/lib/wordlist create mode 100755 samples/RMHTK/lib/xwrd.hled create mode 100755 samples/RMHTK/perl_scripts/Carp.pm create mode 100755 samples/RMHTK/perl_scripts/Exporter.pm create mode 100755 samples/RMHTK/perl_scripts/MakeProtoHMMSet.prl create mode 100755 samples/RMHTK/perl_scripts/coderm.prl create mode 100755 samples/RMHTK/perl_scripts/discreteMonoSet.prl create mode 100755 samples/RMHTK/perl_scripts/env_conv.pm create mode 100755 samples/RMHTK/perl_scripts/fixrm.prl create mode 100755 samples/RMHTK/perl_scripts/full_list.prl create mode 100755 samples/RMHTK/perl_scripts/get_ndx.prl create mode 100755 samples/RMHTK/perl_scripts/global.pl create mode 100755 samples/RMHTK/perl_scripts/hbuild.prl create mode 100755 samples/RMHTK/perl_scripts/hedit.prl create mode 100755 samples/RMHTK/perl_scripts/herest.prl create mode 100755 samples/RMHTK/perl_scripts/htestrm.prl create mode 100755 samples/RMHTK/perl_scripts/init_discrete.prl create mode 100755 samples/RMHTK/perl_scripts/latgen.prl create mode 100755 samples/RMHTK/perl_scripts/mk_lab.prl create mode 100755 samples/RMHTK/perl_scripts/mk_mlf.prl create mode 100755 samples/RMHTK/perl_scripts/mk_sub_list.prl create mode 100755 samples/RMHTK/perl_scripts/mkclscript.prl create mode 100755 samples/RMHTK/perl_scripts/ng_net.prl create mode 100755 samples/RMHTK/perl_scripts/rest_discrete.prl create mode 100755 samples/RMHTK/perl_scripts/wp_net.prl create mode 100644 samples/RMHTK/python_scripts/CatHTKFeatures.py create mode 100644 samples/RMHTK/python_scripts/ConvertExtSCP.py create mode 100644 samples/RMHTK/python_scripts/GenInitDNN.py create mode 100644 samples/RMHTK/python_scripts/SubsetSCP.py create mode 100755 samples/RMHTK/scripts/addmlp create mode 100755 samples/RMHTK/scripts/coderm create mode 100755 samples/RMHTK/scripts/finetune create mode 100755 samples/RMHTK/scripts/fixrm create mode 100755 samples/RMHTK/scripts/forward create mode 100755 samples/RMHTK/scripts/hbuild create mode 100755 samples/RMHTK/scripts/hedit create mode 100755 samples/RMHTK/scripts/herest create mode 100755 samples/RMHTK/scripts/htestrm create mode 100755 samples/RMHTK/scripts/latgen create mode 100755 samples/RMHTK/scripts/latgen-align create mode 100755 samples/RMHTK/scripts/latgen-decode create mode 100755 samples/RMHTK/scripts/latgen-dnn create mode 100755 samples/RMHTK/scripts/latgen-makelm create mode 100755 samples/RMHTK/scripts/mkclscript create mode 100755 samples/RMHTK/scripts/pretrain create mode 100755 samples/RMHTK/scripts/sequence create mode 100755 samples/RMHTK/scripts/w_decode create mode 100755 samples/RMHTK/scripts/w_edit create mode 100755 samples/RMHTK/steps/step-0 create mode 100755 samples/RMHTK/steps/step-1 create mode 100755 samples/RMHTK/steps/step-10 create mode 100755 samples/RMHTK/steps/step-11 create mode 100755 samples/RMHTK/steps/step-12 create mode 100755 samples/RMHTK/steps/step-13 create mode 100755 samples/RMHTK/steps/step-14 create mode 100755 samples/RMHTK/steps/step-15 create mode 100755 samples/RMHTK/steps/step-16 create mode 100755 samples/RMHTK/steps/step-17 create mode 100755 samples/RMHTK/steps/step-2 create mode 100755 samples/RMHTK/steps/step-3 create mode 100755 samples/RMHTK/steps/step-4 create mode 100755 samples/RMHTK/steps/step-5 create mode 100755 samples/RMHTK/steps/step-6 create mode 100755 samples/RMHTK/steps/step-7 create mode 100755 samples/RMHTK/steps/step-8 create mode 100755 samples/RMHTK/steps/step-9 create mode 100755 samples/RMHTK/work/R1/HTE create mode 100755 samples/RMHTK/work/R1/README create mode 100755 samples/RMHTK/work/R1/hmm0/MODELS create mode 100755 samples/RMHTK/work/R1/hmm0/MODELS~ create mode 100755 samples/RMHTK/work/R1/varProto diff --git a/HLMLib/.directory b/HLMLib/.directory deleted file mode 100644 index 504e714..0000000 --- a/HLMLib/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Timestamp=2009,3,11,9,43,42 -ViewMode=1 diff --git a/HLMLib/ChangeLog b/HLMLib/ChangeLog deleted file mode 100644 index 55fd3ed..0000000 --- a/HLMLib/ChangeLog +++ /dev/null @@ -1,22 +0,0 @@ -2003-07-25 D. Mrva - - * LCMap.c (SetClassWords): Check that a class is not in the list of words excluded from that class. - -2003-04-30 Gareth Moore - - * LGBase.c (ReadHGram): Remove ':' from list of word separators. - -2003-02-23 D. Mrva - - * LGBase.h (MAXINF): set the value to 128 - - * LGBase.c (OpenInputSet): check the max number of input grams allowed - -2002-12-16 Steve Young - - * LModel.h (UNLOG_NATURAL): Remove extra minus sign. - -2002-12-09 Gunnar Evermann - - * Initial import of HLMLib source. - diff --git a/HLMLib/LCMap.c b/HLMLib/LCMap.c old mode 100644 new mode 100755 index 8f040bb..55fcbf0 --- a/HLMLib/LCMap.c +++ b/HLMLib/LCMap.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LCMap: Class Map Routines */ +/* File: LCMap Class map routines */ /* ----------------------------------------------------------- */ -char *lcmap_version = "!HVER!LCMap: 3.4.1 [CUED 12/03/09]"; +char *lcmap_version = "!HVER!LCMap: 3.5.0 [CUED 12/10/15]"; char *lcmap_vc_id = "$Id: LCMap.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LCMap.h b/HLMLib/LCMap.h old mode 100644 new mode 100755 index 89b3632..5403aa8 --- a/HLMLib/LCMap.h +++ b/HLMLib/LCMap.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LCMap: Class Map and Associated Routines */ +/* File: LCMap Class map and associated routines */ /* ----------------------------------------------------------- */ -/* !HVER!lcmap: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LCMap: 3.5.0 [CUED 12/10/15] */ #ifndef _LCMAP_H #define _LCMAP_H @@ -153,10 +156,13 @@ ClassEntry *GetWordClassEntry(ClassMap *c, int wdndx); not found. */ -/* -------------------- End of LCMap.h ---------------------- */ #ifdef __cplusplus } #endif #endif + +/* -------------------- End of LCMap.h ---------------------- */ + + diff --git a/HLMLib/LGBase.c b/HLMLib/LGBase.c old mode 100644 new mode 100755 index 84faeeb..68db2cd --- a/HLMLib/LGBase.c +++ b/HLMLib/LGBase.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGBase: Gram File Database Routines */ +/* File: LGBase Gram file database routines */ /* ----------------------------------------------------------- */ -char *lgbase_version = "!HVER!LGBase: 3.4.1 [CUED 12/03/09]"; +char *lgbase_version = "!HVER!LGBase: 3.5.0 [CUED 12/10/15]"; char *lgbase_vc_id = "$Id: LGBase.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LGBase.h b/HLMLib/LGBase.h old mode 100644 new mode 100755 index fd27687..ca7926f --- a/HLMLib/LGBase.h +++ b/HLMLib/LGBase.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGBase: Gram File Database Routines */ +/* File: LGBase Gram file database routines */ /* ----------------------------------------------------------- */ -/* !HVER!lgbase: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LGBase: 3.5.0 [CUED 12/10/15] */ #ifndef _LGBASE_H_ #define _LGBASE_H_ @@ -263,10 +266,13 @@ FoFTab *ReadFoFTab(MemHeap *mem, char *fn); Create a FoF table holding contents of file fn */ -/* -------------------- End of LGBase.h ---------------------- */ #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LGBase.h ---------------------- */ + diff --git a/HLMLib/LModel.c b/HLMLib/LModel.c old mode 100644 new mode 100755 index 0095ee2..74b7f23 --- a/HLMLib/LModel.c +++ b/HLMLib/LModel.c @@ -3,34 +3,37 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LModel: ARPA style LM handling */ +/* File: LModel ARPA style LM handling */ /* ----------------------------------------------------------- */ -char *lmodel_version = "!HVER!LModel: 3.4.1 [CUED 12/03/09]"; +char *lmodel_version = "!HVER!LModel: 3.5.0 [CUED 12/10/15]"; char *lmodel_vc_id = "$Id: LModel.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; @@ -796,7 +799,7 @@ static int LoadNGram(Source *src, int nSize, BackOffLM *lm, int *itran) LM_Id ndx=0; NGramInfo *gi; LMProbType ptype; - Byte fsize, flags; + Byte flags; SMEntry *se=NULL; FLEntry *feptr=NULL, *fe=NULL; float prob,bowt,scale; @@ -828,7 +831,6 @@ static int LoadNGram(Source *src, int nSize, BackOffLM *lm, int *itran) for (i=0; igInfo[nSize].nEntry; i++) { has_bowt = FALSE; hasOOV = FALSE; if (isBin) { /* binary model */ - fsize = (Byte) GetCh(src); flags = (Byte) GetCh(src); READ_FLOAT(src,&prob,TRUE); for (j=0; jgInfo[0].nEntry+=num_fe; @@ -1186,7 +1188,7 @@ static void ReadClassCounts(Source *src, int nWords, BackOffLM *lm) nid2 = GetNameId(lm->htab, ptr, TRUE); /* Get name id of class */ class_id = atoi(ptr+5) - 1; /* assume called CLASSn */ /* GLM */ - nid2->ptr = (void*) class_id; + nid2->ptr = (void*) (unsigned long int)class_id; ptr = ptr2 + 1; /* Pass over NULL */ ptr += strspn(ptr, " \t"); /* Skip over whitespace */ @@ -1242,7 +1244,7 @@ static void CountClassTotals(BackOffLM *lm) word_id = ((WordProb*)(lm->classBM[i+1]->ptr))->id; if (word_id!=i) HError(15490, "CountClassTotals: Inconsistent word ids found"); - class_id = (int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); + class_id = (int)(unsigned long int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); lm->totals[class_id] += lm->word[i]; } } @@ -1257,7 +1259,7 @@ static void CalcWordClassProbs(BackOffLM *lm) /* For each word */ for (i=0; iclassW; i++) { - class_id = (int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); + class_id = (int)(unsigned long int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); prob = (((double)(lm->word[i]))) / ((double)(lm->totals[class_id])); ((WordProb*)(lm->classBM[i+1]->ptr))->prob = LOG_NATURAL(prob); } diff --git a/HLMLib/LModel.h b/HLMLib/LModel.h old mode 100644 new mode 100755 index 8bae187..facd7b1 --- a/HLMLib/LModel.h +++ b/HLMLib/LModel.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LModel: ARPA style LM handling */ +/* File: LModel ARPA style LM handling */ /* ----------------------------------------------------------- */ -/* !HVER!LModel: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LModel: 3.5.0 [CUED 12/10/15] */ /* Language model handling @@ -271,10 +274,12 @@ float *GetNGramProbVecSE(BackOffLM *lm, int *nId, int nSize, FLEntry *sfe); LogFloat LMTrans2(LModel *LM, LMState src, LabId wdid, LMState *dest); -/* -------------------- End of LModel.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LModel.h ---------------------- */ + diff --git a/HLMLib/LPCalc.c b/HLMLib/LPCalc.c old mode 100644 new mode 100755 index e0b6ecc..1f18522 --- a/HLMLib/LPCalc.c +++ b/HLMLib/LPCalc.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPCalc: probability calculation */ +/* File: LPCalc: probability calculation */ /* ----------------------------------------------------------- */ -char *lpcalc_version = "!HVER!LPCalc: 3.4.1 [CUED 12/03/09]"; +char *lpcalc_version = "!HVER!LPCalc: 3.5.0 [CUED 12/10/15]"; char *lpcalc_vc_id = "$Id: LPCalc.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" /* HMM ToolKit Modules */ diff --git a/HLMLib/LPCalc.h b/HLMLib/LPCalc.h old mode 100644 new mode 100755 index 656def2..f6d00cf --- a/HLMLib/LPCalc.h +++ b/HLMLib/LPCalc.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPCalc: probability calculation */ +/* File: LPCalc probability calculation */ /* ----------------------------------------------------------- */ -/* !HVER!LPCalc: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LPCalc: 3.5.0 [CUED 12/10/15] */ #ifndef _LPCALC_H #define _LPCALC_H @@ -96,10 +99,12 @@ void ComputeFoFTab(FoFTab *ftab, int nSize, NGInputSet *inSet); ComputeFoFTab: scan files and produce FoF table */ -/* -------------------- End of LPCalc.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LPCalc.h ---------------------- */ + diff --git a/HLMLib/LPMerge.c b/HLMLib/LPMerge.c old mode 100644 new mode 100755 index 644331a..f263f77 --- a/HLMLib/LPMerge.c +++ b/HLMLib/LPMerge.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPMerge.c: probability merging */ +/* File: LPMerge.c probability merging */ /* ----------------------------------------------------------- */ -char *lpmerge_version = "!HVER!LPMerge: 3.4.1 [CUED 12/03/09]"; +char *lpmerge_version = "!HVER!LPMerge: 3.5.0 [CUED 12/10/15]"; char *lpmerge_vc_id = "$Id: LPMerge.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" /* HMM ToolKit Modules */ @@ -147,7 +150,8 @@ static BackOffLM *InitTargetModel(MemHeap *heap, int nSize, WordMap *wList) /* InitialiseMerge: create lookup tables */ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) { - int i,j,nw; + int i,nw; + long int j; LMInfo *li; Boolean inLM; LabId lid, *lip; @@ -168,7 +172,7 @@ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) na = (int *) New(heap,(nWords+2)*sizeof(NameId)); for (lip = mi->wList->id, j=1; j<=nWords; j++, lip++) { nid = GetNameId(li->lm->htab, (*lip)->name, FALSE); - na[j] = (nid==NULL) ? 0 : (int) nid->aux; + na[j] = (nid==NULL) ? 0 : (int)(long int)nid->aux; } l2nId[i] = na; } @@ -180,7 +184,7 @@ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) la = (int *) New(heap,(nw+2)*sizeof(int)); for (nip=li->lm->binMap+1,j=1; j<=nw; j++,nip++) { lid = GetLabId((*nip)->name, FALSE); - la[j] = (lid==NULL) ? 0 : (int) lid->aux; + la[j] = (lid==NULL) ? 0 : (int)(long int)lid->aux; } n2lId[i] = la; } @@ -192,7 +196,7 @@ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) /* ensure words present at least in one model */ for (lip = mi->wList->id, j=0; jaux)]!=0) + if (l2nId[i][(int)(long int)((*lip)->aux)]!=0) inLM = TRUE; if (!inLM) HError(15620,"InitialiseMerge: Unable to find word %s in any model\n",(*lip)->name); @@ -420,28 +424,11 @@ BackOffLM *MergeModels(MemHeap *heap, LMInfo *lmInfo, int nLModel, /* ---------------------- Normalisation -------------------- */ -static void NormaliseFE(FLEntry *tgtFE) -{ - int i; - double psum; - FLEntry *fe; - SMEntry *se; - - psum = 0.0; - for (se=tgtFE->sea,i=0; inse; i++,se++) - psum += se->prob; - for (se=tgtFE->sea,i=0; inse; i++,se++) - se->prob = se->prob/psum; - for (fe=tgtFE->fea,i=0; infe; i++,fe++) - NormaliseFE(fe); -} - /* EXPORT->NormaliseLM: normalise probs and calculate back-off weights */ void NormaliseLM(BackOffLM *lm) { FLEntry *context[LM_NSIZE]; - /* NormaliseFE(&lm->root); */ context[0] = &lm->root; CalcBackOff(lm,context,0); } diff --git a/HLMLib/LPMerge.h b/HLMLib/LPMerge.h old mode 100644 new mode 100755 index dc52f24..67f5d7e --- a/HLMLib/LPMerge.h +++ b/HLMLib/LPMerge.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPMerge: LM interpolation */ +/* File: LPMerge LM interpolation */ /* ----------------------------------------------------------- */ -/* !HVER!LPMerge: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LPMerge: 3.5.0 [CUED 12/10/15] */ /* ------------------- Model interpolation ----------------- */ @@ -64,10 +67,12 @@ void NormaliseLM(BackOffLM *lm); Normalise probabilities and calculate back-off weights */ -/* -------------------- End of LPMerge.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LPMerge.h ---------------------- */ + diff --git a/HLMLib/LUtil.c b/HLMLib/LUtil.c old mode 100644 new mode 100755 index e4d0f06..0c86e3c --- a/HLMLib/LUtil.c +++ b/HLMLib/LUtil.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LUtil: General Utility Routines */ +/* File: LUtil General Utility Routines */ /* ----------------------------------------------------------- */ -char *lutil_version = "!HVER!LUtil: 3.4.1 [CUED 12/03/09]"; +char *lutil_version = "!HVER!LUtil: 3.5.0 [CUED 12/10/15]"; char *lutil_vc_id = "$Id: LUtil.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LUtil.h b/HLMLib/LUtil.h old mode 100644 new mode 100755 index f335ac0..470b080 --- a/HLMLib/LUtil.h +++ b/HLMLib/LUtil.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LUtil: General Utility Routines */ +/* File: LUtil General Utility Routines */ /* ----------------------------------------------------------- */ -/* !HVER!LUtil: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LUtil: 3.5.0 [CUED 12/10/15] */ #ifndef _LUTIL_H #define _LUTIL_H @@ -133,10 +136,12 @@ void PrintHashTabStats(HashTab *htab); void usort(void *base, int n, size_t size, int (*compar)(const void *, const void *)); -/* --------------------- End of LUtil.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* --------------------- End of LUtil.h ---------------------- */ + diff --git a/HLMLib/LWMap.c b/HLMLib/LWMap.c old mode 100644 new mode 100755 index 745d4b5..0e870e6 --- a/HLMLib/LWMap.c +++ b/HLMLib/LWMap.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LWMap: Word List and Word Map Routines */ +/* File: LWMap Word List and Word Map Routines */ /* ----------------------------------------------------------- */ -char *lwmap_version = "!HVER!LWMap: 3.4.1 [CUED 12/03/09]"; +char *lwmap_version = "!HVER!LWMap: 3.5.0 [CUED 12/10/15]"; char *lwmap_vc_id = "$Id: LWMap.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LWMap.h b/HLMLib/LWMap.h old mode 100644 new mode 100755 index a8bedee..98a0bf6 --- a/HLMLib/LWMap.h +++ b/HLMLib/LWMap.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LWMap: Word List and Word Map Routines */ +/* File: LWMap Word list and word map routines */ /* ----------------------------------------------------------- */ -/* !HVER!lwmap: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LWMap: 3.5.0 [CUED 12/10/15] */ #ifndef _LWMAP_H @@ -171,10 +174,12 @@ int WordLMCmp(int ndx1, int ndx2, WordMap *wm); +1 if ndx1 ordered after ndx2 (ie same as strcmp) */ -/* -------------------- End of LWMap.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LWMap.h ---------------------- */ + diff --git a/HLMLib/Makefile.in b/HLMLib/MakefileCPU old mode 100644 new mode 100755 similarity index 71% rename from HLMLib/Makefile.in rename to HLMLib/MakefileCPU index ea3dd4d..41fd7a8 --- a/HLMLib/Makefile.in +++ b/HLMLib/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,32 +17,32 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HLMLib/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include -CC = @CC@ -CFLAGS = @CFLAGS@ -DSANITY -I. -I../HTKLib/ -RANLIB = @RANLIB@ -INSTALL = @INSTALL@ +CC = gcc +CFLAGS = -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -DSANITY -I. -I../HTKLib/ +RANLIB = ranlib +INSTALL = /usr/bin/install -c target = HLMLib.a modules = LModel.o LPMerge.o LPCalc.o LUtil.o LWMap.o LCMap.o LGBase.o diff --git a/HLMLib/MakefileMKL b/HLMLib/MakefileMKL new file mode 100755 index 0000000..f852ea2 --- /dev/null +++ b/HLMLib/MakefileMKL @@ -0,0 +1,76 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMLib/MakefileMKL +# ----------------------------------------------------------- + +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = icc +CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DMKL -DPHNALG -I../HTKLib/ +LDFLAGS = -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm + +RANLIB = ranlib +INSTALL = /usr/bin/install -c +target = HLMLib.a +modules = LModel.o LPMerge.o LPCalc.o LUtil.o LWMap.o LCMap.o LGBase.o + +all: $(target) + +$(target): $(modules) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(modules) $(target) + +cleanup: + -rm -f $(modules) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: $(target) mkinstalldir + $(INSTALL) -m 755 $< $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HLMLib/MakefileNVCC b/HLMLib/MakefileNVCC new file mode 100755 index 0000000..5c52f19 --- /dev/null +++ b/HLMLib/MakefileNVCC @@ -0,0 +1,76 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMLib/MakefileNVCC +# ----------------------------------------------------------- + +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = /usr/local/cuda/bin/nvcc +CFLAGS := -m64 -ccbin gcc -gencode arch=compute_30,code=sm_30 -D'ARCH="x86_64"' -DCUDA -DSANITY -I. -I../HTKLib/ +LDFLAGS = -L/usr/local/cuda/lib -Wl,-rpath=/usr/local/cuda/lib -L/usr/local/cuda/lib64 -Wl,-rpath=/usr/local/cuda/lib64 -lcblas -lpthread + +RANLIB = ranlib +INSTALL = /usr/bin/install -c +target = HLMLib.a +modules = LModel.o LPMerge.o LPCalc.o LUtil.o LWMap.o LCMap.o LGBase.o + +all: $(target) + +$(target): $(modules) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(modules) $(target) + +cleanup: + -rm -f $(modules) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: $(target) mkinstalldir + $(INSTALL) -m 755 $< $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HLMLib/htk_hlmlib_nt.mkf b/HLMLib/htk_hlmlib_nt.mkf deleted file mode 100644 index a70440a..0000000 --- a/HLMLib/htk_hlmlib_nt.mkf +++ /dev/null @@ -1,62 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTKLib static library, MSVC -# - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< -CC=cl -CL=link -CPU=win32 - -# the MSDOS is needed to set _fmode to binary in HShell.c -HTKCF = /I "." /I "../HTKLib" /D "WIN32_AUDIO" /D ARCH=\"WIN32\" - -# use the following for optimised compilation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for a debug compilation -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -CFLAGS = $(SYSCF) $(HTKCF) - -# the following is only needed when making a DLL -SYSLF = /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# the following is only needed when making a debug DLL -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# flags used -# /MT multi-threaded executable -# /ML single-threaded executable -# /W1 warning level 1 -# /GX synchronous exception handling -# /O2 maximise speed -# /G5 P5 optimisation -# /G6 P6 optimisation -# /Ob2 allow inlining of functions not tagged with _inline - -libHLM = HLMLib.$(CPU) - -syslib = kernel32.lib user32.lib gdi32.lib winspool.lib \ - comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - uuid.lib odbc32.lib odbccp32.lib winmm.lib - -libs = $(syslib) - -core = LCMap.obj LGBase.obj LModel.obj LPCalc.obj LPMerge.obj \ - LUtil.obj LWMap.obj - - -all: $(libHLM).lib - -$(libHLM).lib: $(core) - lib /OUT:$(libHLM).lib $(core) - lib /list $(libHLM).lib - -clean: - del *.obj $(libHLM).lib - -cleanup: - del *.obj - diff --git a/HLMTools/.directory b/HLMTools/.directory deleted file mode 100644 index 1949c3a..0000000 --- a/HLMTools/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Timestamp=2009,3,11,9,44,15 -ViewMode=1 diff --git a/HLMTools/ChangeLog b/HLMTools/ChangeLog deleted file mode 100644 index 4783664..0000000 --- a/HLMTools/ChangeLog +++ /dev/null @@ -1,79 +0,0 @@ -2003-10-15 Gunnar Evermann - - * LMerge.c: Remove unused VERSION constant. - -2003-02-04 D. Mrva - - * LFoF.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LSubset.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LPlex.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LNorm.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LNewMap.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LMerge.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LLink.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LGPrep.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LGList.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LGCopy.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LBuild.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LAdapt.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * HLMCopy.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - -2003-01-29 D. Mrva - - * LGCopy.c (main): Always exit with Exit(EXIT_SUCCESS) instead of Exit(0). - - * LNorm.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LNewMap.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LMerge.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LLink.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LGPrep.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LGList.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LFoF.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LBuild.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LAdapt.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * HLMCopy.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LPlex.c (main): Always exit with Exit(EXIT_SUCCESS) instead of exit(0). - -2002-12-16 Gunnar Evermann - - * Cluster.c (import_classmap): Fix classmap check. - - * LPlex.c (ProcessTextStream): Always enable buffer size check and - turn warning into error. - From Gareth Moore - -2002-12-09 Gunnar Evermann - - * Initial import of HLMTools source. diff --git a/HLMTools/Cluster.c b/HLMTools/Cluster.c old mode 100644 new mode 100755 index fd76c2a..820a31e --- a/HLMTools/Cluster.c +++ b/HLMTools/Cluster.c @@ -3,33 +3,34 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* author: Gareth Moore */ +/* author: */ +/* Gareth Moore */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 1999-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1999-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* Cluster.c: Cluster words into classes */ - +/* File: Cluster.c Cluster words into classes */ +/* ----------------------------------------------------------- */ -char *Cluster_version = "!HVER!Cluster: 3.4.1 [CUED 12/03/09]"; +char *Cluster_version = "!HVER!Cluster: 3.5.0 [CUED 12/10/15]"; char *Cluster_vc_id = "$Id: Cluster.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; /* HTK/HLM libraries: */ @@ -867,11 +868,13 @@ void do_recovery(char *fname, int words) file = FOpen(fname, NoFilter, &pipe_status); check_file(file, fname, "do_recovery"); - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); if (strncmp(tmp, "Clustering automatic", 20)!=0) { HError(17013, "This is not a recovery status file"); } - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read current word point from status file"); @@ -884,7 +887,8 @@ void do_recovery(char *fname, int words) else { from = atoi(ptr); } - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read recovery class map file name from status file"); @@ -893,7 +897,8 @@ void do_recovery(char *fname, int words) ptr = strtok(ptr, " \t\n"); import_classmap(ptr, words); - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read recovery unknown word status from status file"); @@ -903,7 +908,8 @@ void do_recovery(char *fname, int words) unk_sep = (*ptr=='1'); start_class = unk_sep?3:2; - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read recovery word sort order status from status file"); @@ -1351,7 +1357,8 @@ void import_classmap(char *fname, int numb_words) size = atoi(ptr); /* Read number of words in class */ for (i=0; i= (int)block_end) { + if (((int)(unsigned long int)block+(int)size) >= (int)(unsigned long int)block_end) { block = New(&global_heap, block_grab_size); - block_end = (void *) ((int)block+(int)block_grab_size); + block_end = (void *)(unsigned long int)((int)(unsigned long int)block+(int)block_grab_size); } /* Hand back the next free space */ ptr = block; - block = (void*) ((int) block + (int) size); /* Next free byte */ - block = (void*) ((((int)block)+3) & (~(int)3)); /* Word-align */ + block = (void*)(unsigned long int)((int)(unsigned long int)block + (int) size); /* Next free byte */ + block = (void*)(unsigned long int)((((int)(unsigned long int)block)+3) & (~(int)3)); /* Word-align */ return ptr; } diff --git a/HLMTools/HLMCopy.c b/HLMTools/HLMCopy.c old mode 100644 new mode 100755 index c76337c..f3261d0 --- a/HLMTools/HLMCopy.c +++ b/HLMTools/HLMCopy.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLMCopy.c LM conversion/normalisation utility */ +/* File: HLMCopy.c LM conversion/normalisation utility */ /* ----------------------------------------------------------- */ -char *prog_version = "!HVER!HLMCopy: 3.4.1 [CUED 12/03/09]"; +char *prog_version = "!HVER!HLMCopy: 3.5.0 [CUED 12/10/15]"; char *prog_vc_id = "$Id: HLMCopy.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include diff --git a/HLMTools/LAdapt.c b/HLMTools/LAdapt.c old mode 100644 new mode 100755 index 31d7797..c90d89f --- a/HLMTools/LAdapt.c +++ b/HLMTools/LAdapt.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LAdapt.c - adapt LM with new text */ +/* File: LAdapt.c dapt LM with new text */ /* ----------------------------------------------------------- */ -char *ladapt_version = "!HVER!LAdapt: 3.4.1 [CUED 12/03/09]"; +char *ladapt_version = "!HVER!LAdapt: 3.5.0 [CUED 12/10/15]"; char *ladapt_vc_id = "$Id: LAdapt.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LBuild.c b/HLMTools/LBuild.c old mode 100644 new mode 100755 index 2a4494e..2db1168 --- a/HLMTools/LBuild.c +++ b/HLMTools/LBuild.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LBuild.c - generate LM */ +/* File: LBuild.c generate LM */ /* ----------------------------------------------------------- */ -char *lbuild_version = "!HVER!LBuild: 3.4.1 [CUED 12/03/09]"; +char *lbuild_version = "!HVER!LBuild: 3.5.0 [CUED 12/10/15]"; char *lbuild_vc_id = "$Id: LBuild.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LFoF.c b/HLMTools/LFoF.c old mode 100644 new mode 100755 index be98c58..1a38ecc --- a/HLMTools/LFoF.c +++ b/HLMTools/LFoF.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LFoF.c - compute frequency of frequency files */ +/* File: LFoF.c compute frequency of frequency files */ /* ----------------------------------------------------------- */ -char *lfof_version = "!HVER!LFoF: 3.4.1 [CUED 12/03/09]"; +char *lfof_version = "!HVER!LFoF: 3.5.0 [CUED 12/10/15]"; char *lfof_vc_id = "$Id: LFoF.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LGCopy.c b/HLMTools/LGCopy.c old mode 100644 new mode 100755 index 074e3b0..39f91c6 --- a/HLMTools/LGCopy.c +++ b/HLMTools/LGCopy.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGCopy - copy ngram files and optionally map OOVs */ +/* File: LGCopy copy ngram files and optionally map OOVs */ /* ----------------------------------------------------------- */ -char *lgcopy_version = "!HVER!LGCopy: 3.4.1 [CUED 12/03/09]"; +char *lgcopy_version = "!HVER!LGCopy: 3.5.0 [CUED 12/10/15]"; char *lgcopy_vc_id = "$Id: LGCopy.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LGList.c b/HLMTools/LGList.c old mode 100644 new mode 100755 index 8f2c12a..935906e --- a/HLMTools/LGList.c +++ b/HLMTools/LGList.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGList.c: Display contents of a gram file */ +/* File: LGList.c Display contents of a gram file */ /* ----------------------------------------------------------- */ -char *lglist_version = "!HVER!LGList: 3.4.1 [CUED 12/03/09]"; +char *lglist_version = "!HVER!LGList: 3.5.0 [CUED 12/10/15]"; char *lglist_vc_id = "$Id: LGList.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LGPrep.c b/HLMTools/LGPrep.c old mode 100644 new mode 100755 index 18699b0..43e4c3e --- a/HLMTools/LGPrep.c +++ b/HLMTools/LGPrep.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGPrep - prepare a sorted GramBase */ +/* File: LGPrep prepare a sorted GramBase */ /* ----------------------------------------------------------- */ -char *lgprep_version = "!HVER!LGPrep: 3.4.1 [CUED 12/03/09]"; +char *lgprep_version = "!HVER!LGPrep: 3.5.0 [CUED 12/10/15]"; char *lgprep_vc_id = "$Id: LGPrep.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LLink.c b/HLMTools/LLink.c old mode 100644 new mode 100755 index 190e566..1be6a99 --- a/HLMTools/LLink.c +++ b/HLMTools/LLink.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LFile.c: link LM files to make a class LM */ +/* File: LFile.c link LM files to make a class LM */ /* ----------------------------------------------------------- */ -char *llink_version = "!HVER!LLink: 3.4.1 [CUED 12/03/09]"; +char *llink_version = "!HVER!LLink: 3.5.0 [CUED 12/10/15]"; char *llink_vc_id = "$Id: LLink.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" @@ -142,7 +144,8 @@ int main(int argc, char *argv[]) if (!single_file) { file = CFOpen(wcFile, LangModFilter, &pipe_status); - fscanf(file, "Word|Class %20s", type); + if(fscanf(file, "Word|Class %20s", type)!=1) + HError(17119, "Failed to extract string from %s",wcFile); if (strcmp(type, "probabilities") && strcmp(type, "counts")) { HError(17119, "Word|Class file is of an unknown type"); } @@ -176,7 +179,8 @@ int main(int argc, char *argv[]) fprintf(write, "CLASS MODEL\n"); file = CFOpen(wcFile, LangModFilter, &ps2); - fscanf(file, "Word|Class %20s\n", type); + if(fscanf(file, "Word|Class %20s\n", type)!=1) + HError(17119, "Failed to extract string from %s",wcFile); if (strcmp(type, "probabilities") && strcmp(type, "counts")) { HError(17119, "Word|Class file is of an unknown type"); } diff --git a/HLMTools/LMerge.c b/HLMTools/LMerge.c old mode 100644 new mode 100755 index 0243693..3a3bf1a --- a/HLMTools/LMerge.c +++ b/HLMTools/LMerge.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LMerge: combine language models */ +/* File: LMerge combine language models */ /* ----------------------------------------------------------- */ -char *lmerge_version = "!HVER!LMerge: 3.4.1 [CUED 12/03/09]"; +char *lmerge_version = "!HVER!LMerge: 3.5.0 [CUED 12/10/15]"; char *lmerge_vc_id = "$Id: LMerge.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include diff --git a/HLMTools/LNewMap.c b/HLMTools/LNewMap.c old mode 100644 new mode 100755 index 9fe52b9..2fc0ebc --- a/HLMTools/LNewMap.c +++ b/HLMTools/LNewMap.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LNewMap.c: create an empty word map file */ +/* File: LNewMap.c create an empty word map file */ /* ----------------------------------------------------------- */ -char *lnewmap_version = "!HVER!LNewMap: 3.4.1 [CUED 12/03/09]"; +char *lnewmap_version = "!HVER!LNewMap: 3.5.0 [CUED 12/10/15]"; char *lnewmap_vc_id = "$Id: LNewMap.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LNorm.c b/HLMTools/LNorm.c old mode 100644 new mode 100755 index 403af0a..e340160 --- a/HLMTools/LNorm.c +++ b/HLMTools/LNorm.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LNorm: normalise model */ +/* File: LNorm normalise model */ /* ----------------------------------------------------------- */ -char *lnorm_version = "!HVER!LNorm: 3.4.1 [CUED 12/03/09]"; +char *lnorm_version = "!HVER!LNorm: 3.5.0 [CUED 12/10/15]"; char *lnorm_vc_id = "$Id: LNorm.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include diff --git a/HLMTools/LPlex.c b/HLMTools/LPlex.c old mode 100644 new mode 100755 index 5271490..6fcf829 --- a/HLMTools/LPlex.c +++ b/HLMTools/LPlex.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPlex: compute perplexity */ +/* File: LPlex compute perplexity */ /* ----------------------------------------------------------- */ -char *lplex_version = "!HVER!LPlex: 3.4.1 [CUED 12/03/09]"; +char *lplex_version = "!HVER!LPlex: 3.5.0 [CUED 12/10/15]"; char *lplex_vc_id = "$Id: LPlex.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include @@ -329,22 +331,23 @@ static void LinkEquiv(void) for (p=eqList; p!=NULL; p=p->next) { cl = p->classId; eq = p->equivId; if (eq->aux==NULL) { - eq->aux = (Ptr) (nWords + unkEquiv); + eq->aux = (Ptr)(unsigned long int)(nWords + unkEquiv); unkEquiv++; } - eqId[(int) eq->aux] = cl; + eqId[(unsigned long int)eq->aux] = cl; } } /* Initialise: perform global initialisations */ static void Initialise(void) { - int i,j,ndx; + int j; + unsigned long int i,ndx; float x; LMInfo *li; Boolean inLM; LabId *wid,lab; - NameId *na,nid; + NameId *na; Boolean isPipe; nulClass = GetLabId(nulName,TRUE); @@ -393,7 +396,7 @@ static void Initialise(void) { lab = GetLabId(na[j+1]->name, TRUE); if (lab->aux==NULL) - lab->aux = (Ptr) (++nWords); + lab->aux = (Ptr)(unsigned long int)(++nWords); } } else @@ -404,7 +407,7 @@ static void Initialise(void) { lab = GetLabId(na[j+1]->name,TRUE); if (lab->aux==NULL) - lab->aux = (Ptr) (++nWords); + lab->aux = (Ptr)(unsigned long int)(++nWords); } } } @@ -418,7 +421,7 @@ static void Initialise(void) for (j=0; jlm->classW; j++) { lab = GetLabId(na[j+1]->name,TRUE); - ndx = ((int) lab->aux) - 1; + ndx = ((unsigned long int) lab->aux) - 1; wList.id[ndx] = lab; } } @@ -429,7 +432,7 @@ static void Initialise(void) for (j=0; jlm->vocSize; j++) { lab = GetLabId(na[j+1]->name,TRUE); - ndx = ((int) lab->aux) - 1; + ndx = ((unsigned long int) lab->aux) - 1; wList.id[ndx] = lab; } } @@ -459,14 +462,14 @@ static void Initialise(void) for (wid = wList.id, j=0; jlm->classLM) { - nid = na[(int) ((*wid)->aux)] = GetNameId(li->lm->classH, (*wid)->name, FALSE); + na[(unsigned long int)((*wid)->aux)] = GetNameId(li->lm->classH, (*wid)->name, FALSE); } else { - nid = na[(int) ((*wid)->aux)] = GetNameId(li->lm->htab, (*wid)->name, FALSE); + na[(unsigned long int)((*wid)->aux)] = GetNameId(li->lm->htab, (*wid)->name, FALSE); } #ifdef SANITY - if (nid==NULL) + if (na[(unsigned long int)((*wid)->aux)]==NULL) HError(-16625,"Unable to find word %s in model %s\n",(*wid)->name,li->fn); #endif } @@ -476,7 +479,7 @@ static void Initialise(void) /* ensure words present at least in one model */ for (wid = wList.id, j=0; jaux)]!=NULL) + if (l2nId[i][(unsigned long int)((*wid)->aux)]!=NULL) inLM = TRUE; if (!inLM) HError(16625,"Unable to find word %s in any model\n",(*wid)->name); @@ -485,7 +488,7 @@ static void Initialise(void) /* create equivalence class lookup array */ eqId = (LabId *) New(&permHeap,(nWords+NumEquiv()+2)*sizeof(NameId)); for (wid = wList.id, i=0; iaux)] = NULL; + eqId[(unsigned long int)((*wid)->aux)] = NULL; } /* link equivalence classes */ @@ -616,7 +619,7 @@ static LabId GetEQLab(LabId id) if (id->aux==NULL) return id; - if ((cl = (LabId) eqId[(int) (id->aux)])==NULL) + if ((cl = (LabId) eqId[(unsigned long int)(id->aux)])==NULL) return id; return cl; } @@ -639,7 +642,7 @@ static double GetProb(LabId *wlab, int nSize) if (nLModel==1) { inThisLM = TRUE; for (j=0; jaux)])==NULL) + if ((nGram[j] = l2nId[0][(unsigned long int)(wlab[j]->aux)])==NULL) inThisLM = FALSE; } if (inThisLM) { @@ -656,7 +659,7 @@ static double GetProb(LabId *wlab, int nSize) inAnyLM = FALSE; for (li=lmInfo, i=0; iaux)])==NULL) + if ((nGram[j] = l2nId[i][(unsigned long int) (wlab[j]->aux)])==NULL) inThisLM = FALSE; } if (!inThisLM) diff --git a/HLMTools/LSubset.c b/HLMTools/LSubset.c old mode 100644 new mode 100755 index 310388f..6c2a391 --- a/HLMTools/LSubset.c +++ b/HLMTools/LSubset.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LSubset.c: produce a subset map */ +/* File: LSubset.c produce a subset map */ /* ----------------------------------------------------------- */ -char *lsubset_version = "!HVER!LSubset: 3.4.1 [CUED 12/03/09]"; +char *lsubset_version = "!HVER!LSubset: 3.5.0 [CUED 12/10/15]"; char *lsubset_vc_id = "$Id: LSubset.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/Makefile.in b/HLMTools/MakefileCPU old mode 100644 new mode 100755 similarity index 65% rename from HLMTools/Makefile.in rename to HLMTools/MakefileCPU index baae7c9..abdd7ed --- a/HLMTools/Makefile.in +++ b/HLMTools/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,35 +17,35 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HLMTools/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh inc = ../HTKLib -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include hlib = ../HTKLib llib = ../HLMLib HLIBS = $(hlib)/HTKLib.a $(llib)/HLMLib.a -CC = @CC@ -CFLAGS = @CFLAGS@ -I$(hlib) -I$(llib) -LDFLAGS = @LDFLAGS@ $(HLIBS) -lm -INSTALL = @INSTALL@ +CC = gcc +CFLAGS = -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(hlib) -I$(llib) +LDFLAGS = -L/usr/X11R6/lib $(HLIBS) -lpthread -lm +INSTALL = /usr/bin/install -c PROGS = Cluster HLMCopy LAdapt LBuild LFoF \ LGCopy LGList LGPrep LLink LMerge \ LNewMap LNorm LPlex LSubset @@ -54,9 +54,9 @@ all: $(PROGS) # build $(PROGS) %: %.c $(HLIBS) - if [ ! -d $(bindir) -a X_@TRADHTK@ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) - if [ X_@TRADHTK@ = X_yes ] ; then $(INSTALL) -m 755 $@@BINARY_EXTENSION@ $(bindir) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi strip: $(PROGS) -strip $(PROGS) @@ -71,9 +71,9 @@ distclean: -rm -f *.o $(PROGS) Makefile *.exe install: mkinstalldir $(PROGS) - for program in $(PROGS) ; do $(INSTALL) -m 755 $${program}@BINARY_EXTENSION@ $(bindir) ; done + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done mkinstalldir: - if [ ! -d $(bindir) -a X_@TRADHTK@ = X_yes ] ; then mkdir -p $(bindir) ; fi + -mkdir -p $(bindir) .PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HLMTools/MakefileMKL b/HLMTools/MakefileMKL new file mode 100755 index 0000000..4032b02 --- /dev/null +++ b/HLMTools/MakefileMKL @@ -0,0 +1,81 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMTools/MakefileMKL +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include +hlib = ../HTKLib +llib = ../HLMLib +HLIBS = $(hlib)/HTKLib.a $(llib)/HLMLib.a + +CC = icc +CFLAGS = -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(inc) -DMKL -DPHNALG -I$(hlib) -I$(llib) +LDFLAGS = -L/usr/X11R6/lib $(HLIBS) -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm + +INSTALL = /usr/bin/install -c +PROGS = Cluster HLMCopy LAdapt LBuild LFoF \ + LGCopy LGList LGPrep LLink LMerge \ + LNewMap LNorm LPlex LSubset + +all: $(PROGS) + +# build $(PROGS) +%: %.c $(HLIBS) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) Makefile *.exe + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HLMTools/MakefileNVCC b/HLMTools/MakefileNVCC new file mode 100755 index 0000000..686d4d0 --- /dev/null +++ b/HLMTools/MakefileNVCC @@ -0,0 +1,81 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMTools/MakefileNVCC +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include +hlib = ../HTKLib +llib = ../HLMLib +HLIBS = $(hlib)/HTKLib.a $(llib)/HLMLib.a + +CC = /usr/local/cuda/bin/nvcc +CFLAGS = -m64 -ccbin gcc -gencode arch=compute_35,code=sm_35 -D'ARCH="x86_64"' -DCUDA -D_SVID_SOURCE -DOSS_AUDIO -I$(hlib) -I$(llib) +LDFLAGS = -L/usr/X11R6/lib $(HLIBS) -lcudart -lcublas -lpthread -lm + +INSTALL = /usr/bin/install -c +PROGS = Cluster HLMCopy LAdapt LBuild LFoF \ + LGCopy LGList LGPrep LLink LMerge \ + LNewMap LNorm LPlex LSubset + +all: $(PROGS) + +# build $(PROGS) +%: %.c $(HLIBS) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) Makefile *.exe + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HLMTools/htk_hlmtools_nt.mkf b/HLMTools/htk_hlmtools_nt.mkf deleted file mode 100644 index b053f08..0000000 --- a/HLMTools/htk_hlmtools_nt.mkf +++ /dev/null @@ -1,85 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTK tools, MSVC -# - -.SUFFIXES: .exe - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< - -.obj.exe: - $(CL) $(SYSLF) /OUT:$(HBIN)/$@ $< $(libs) - -CC=cl -CL=link -CPU=win32 - -HBIN = ../bin.win32 - -# use the following for full optimisation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" - -# use the following for debugging -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for non-debug link -SYSLF = /nologo /subsystem:console /incremental:no - -# use the following for debug link -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:console /incremental:no - -# the following is for HLM tools linked with HTKLib and HLMLib -HTKCF = /I "../HTKLib" /I "../HLMLib" /I "." - -htklib = ../HTKLib/HTKLib.$(CPU).lib - -hlmlib = ../HLMLib/HLMLib.$(CPU).lib - -CFLAGS = $(SYSCF) $(HTKCF) - -syslib = winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \ - advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - -libs = $(syslib) $(htklib) $(hlmlib) - -tools = Cluster.exe HLMCopy.exe LAdapt.exe LBuild.exe LFoF.exe LGCopy.exe \ - LGList.exe LGPrep.exe LMerge.exe LNorm.exe LPlex.exe LSubset.exe \ - LNewMap.exe LLink.exe - -Cluster.exe: Cluster.obj - -HLMCopy.exe: HLMCopy.obj - -LAdapt.exe: LAdapt.obj - -LBuild.exe: LBuild.obj - -LFoF.exe: LFoF.obj - -LGCopy.exe: LGCopy.obj - -LGList.exe: LGList.obj - -LGPrep.exe: LGPrep.obj - -LMerge.exe: LMerge.obj - -LNorm.exe: LNorm.obj - -LPlex.exe: LPlex.obj - -LSubset.exe: LSubset.obj - -LNewMap.exe: LNewMap.obj - -LLink.exe: LLink.obj - -all: $(tools) - echo done - -clean: - del *.obj *.exe - -cleanup: - del *.obj diff --git a/HTK/HTK.dsp b/HTK/HTK.dsp deleted file mode 100644 index 5ecd9d1..0000000 --- a/HTK/HTK.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="HTK" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=HTK - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "HTK.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "HTK.mak" CFG="HTK - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "HTK - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "HTK - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "HTK - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x809 /d "NDEBUG" -# ADD RSC /l 0x809 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "HTK - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x809 /d "_DEBUG" -# ADD RSC /l 0x809 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "HTK - Win32 Release" -# Name "HTK - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/HTK/HTK.dsw b/HTK/HTK.dsw deleted file mode 100644 index 0fec66b..0000000 --- a/HTK/HTK.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "HTK"=".\HTK.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/HTK/HTK.ncb b/HTK/HTK.ncb deleted file mode 100644 index 4ec67036ffdc70647db9494dac034aec820555c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33792 zcmeI*O>Wab6u|Kb0s^H}6lf@gg&UBlRA{0iRlu?-9|A=}6v4(D$C(6+*haQfy5|ZU zf-PHC9HB?(4O+2cfg0X(DoCU*szxk~{v$oV*i%o&KWUOQ8I7BPpTue0$(%;5vApbj zNaAkdg-+Ycyq1?*XLY4szc{t<{HZbKv@s>KXtw3y&Rn&8Q!)hs1d1#$y*r>FfB*sr zAb1`skP+eSGYO_(KE`D4c*S>7~nh00Iaga6$pT^FJXRry)>afvE!bovtH*z+?gk zdk1^^-v3jZdG`8+bI*AjME6&nSGH&6{y$^KHf*ckHH}B^%fq__Jqda?b(??gA@n9l z`(Dr4%=+yhb{laR#*y3H+^|~@AGqs5O3fQ z(0Nc=^g9uq3#H}EFtJ78zY`dp|MOX{t`>QrO(prQTIMBPn*~uP9`1*6yWg{a_tPv+ zMs|ZBO0%}@jGbLO>NRDg^|AWl>q}m{Ws@|Bqx{LvNxx7Ivm^s=f2La2akjly zE$jH&mHm0mKSc9-=OG&)jgXCy2OtkZ$o7kfH$gT- znjl|-Y=LZrY=dlvklmLNKLmLg@)gKV$Rm(lklm1G2-#VP_dr@9ZIE_I2V^hgQAj6* z>_`qEeGu{(}GNTtxpFq)HEqMMa9v9l9NiCk{=;T=1u^XKXfadd?tevB*0xVS1Ue6dx?*|%~J(IsT2f~_`G zBc@x{cz%t-rxzgA7-NQWg;XuwwB=LzbH1WG&zRD$SK!lp3evCZ@ayUIhS-=|A!<`M zab%;e2sL!;@CCZpI5!|qYc$w(JrQezbb&ZYmt^9Gk0-r868R9+M zb*_q)a`^f{RBBT@6BD0&OsBOIOfN1o3RJ(9lXyK3pI(Bvj?i5;Q7{u(m2PCO^~U{g z;M2J+2JY{bVxe=Fk2;RNPUv<#8{uK;*EoC{*lOT;p&ri}>(H0$msxJFZ@fs4EpAA( zi>|5ZMt#z+m*LY5NFA=FN;AIk$?r{KAx(si6467 ze(a-v=je`sU^`oHV{@QoJH=&|$Fy_7MX@Oy_dyp$OE9$yREe zn`~a^T_-+QLS=bhBCq+f^O z)1O8R9QV6$^`bYKP>6Qfg6(9;{!SFTq+jpBr=LG%;F-Gt?>_W~6BFdH51HMj*SyjL zjWg`IH;A8+e!UH!e(`NXd^fd8982B6)eS~=O!NLR`?uf!<24#*f4MB|bt6}&Dkkwd zNAHf&p>PN~aeg}g9OJ1L>DR09>0gkAxPDd1YbH)+U9fe^cwNzImcPDbdgtTnXARK{ zNdu?6Uw+%@oO|zxDldQ%Wf9ir{ThK!#&--{BO35tJWj{Zg8WBTv1G!F-$lH7GN4ql z?Mm8BR!oGha#q2}8xnh5jWsRtx(_~m09gdIsvSlncn2)B5lT6TlmknsC8@BbUk&4i z)Xj@n`enkeE6*9=Mry#VJXMl!wr6byYFSF2hTwGWBSk|=Tjsy-CdkUU0F6k$uED3> z-!s7F)PVzX?5)CiOSMeeXoIQM7L-$=f#sD&ANotuuha19!5`86aWUTRuZW+dqZ%vp zhZJ_u@+th834gYD&dwJbxfbcyBk<{o-x}f#oR4Ehs)7)mTG*Gql#*A*=$*^ASAK%J zD}>v*%j>=C*9-7z(N#K*OTqo&K177wrxz|szc$0C6OegwR$9`pA^0?(g7oX+JoW3@ zdFt2m@axTMbRVMgZWSF;|5MB?9^^`=Pp1RwT+)2Ung0`l`M+cXPx4vJ|7r0u{aWV# z{CLFX^85_*e-f*R`@Z{R#r&TO6Z3!cI>r2-JZV0ynEAgrCBw&tqLOt&5He_hS7q&1!ZQA17RYyq+5M)*tV~D*Aom z1lHR32wG!bYQXyIeBb0llKNjDqd@;j>gjCi%IJTG(tn#6!n&I*{*D6m3=lW5MxrGA zOWyw$rGHw%Qi(O*wQWQF+3e9XnTu7sIu3U=tJ`{%n*&sy$-4Tmre^P%p-iFrn%?2j zv)PgUfsEOR+KoHSE#}DR@HaC9V;i#%sEsGFtR)A&feyUx-TFb7b%!U3&Q^_>|5edQ zmS+C9C{Cuol=)vj9;$Az?gAG#Aimk`Ca$?QFI ze%n^FJ#+HHsWde1*B)y`+Yy($3tKHy>vd&@GX2>Mo!}{(TBi`MQz)m@hxrdjRo5)< z?r!bEMAUlG*3&xRq z4W7*ZX+TM&qL=cut=6-{x2C$c`N4s@=$~llK<2HdJWB|Okqtl^M7GRk@-J4 zn0Wr5L_!;zel5@c^WzblU8kN9O;c#}M;>(b%BG^p`UK=f@*9$NXOiBIf@>kc1V?|1tj; z9u;%1Vg4@;bLRho2-!h}nzz&p^M62t`9J@VnAsfje;PdhNBBR@o{0_K?=k;wGA*j# zPm8r!R#z`p>rC}JORvuV!dFyrQT^SoH+p_;hff1H(_%OLYQp#9EI*?dY^8cPG=roy zX)`0iQd*gme!T^sUi^C+za(D;yy&JTihHIsqD#h9jvj$-W483`5AbO|1?kt@@az5$ z(m<*Lh*b%z1SjiCuuW*%C;e)JPe1!-TAUNr;*fYJVf7Ns>;$&XPux3p&q%-Cgii+= z2q_Bg;kV;PfnyuJX~#DQPl^lT6#g>!mHJY{QhfiB{HcW`{r=*9>csp0VmrPvIe`Ap zq4)D*4BtU4EiA{_p?+mZQoDzYy#ABe$JxlfDUP$9jq*F`zYf3u;|A$HaSPSG{bK{C zx5&g+nb;;1+vR@H@XN0o=k?zbmf47T{Wq`wrg3G?#^6Gmy#6~Ou-*aS_1}aSum1)J zy#AZlf78jJ4b1;)VNsOK|0-ZONjs=e^Ol+s{QE!5|M~~SOy`*Y)gT(pyL_g8|68+X z%>U{@@#`!l%lxkbMv|oDGnxM_g4P`IztxTlP1rL3N8gF$?>`n9lMzKc|1$y@S8e)B zdH$y#kJuc~{|rII^FKq7gcUshljnbiN5$N0nE#8zocX^XLUvH0<}EeD{2$QZ`JetF xF|#@5|1@|q|EB@PQ&~|(5znnr<~}{o|MbBjCjbVNN|xt;Dqti?{$I}j{4d4(&)on3 diff --git a/HTKBook/ChangeLog b/HTKBook/ChangeLog deleted file mode 100644 index 828ecea..0000000 --- a/HTKBook/ChangeLog +++ /dev/null @@ -1,197 +0,0 @@ -2006-12-13 Anna Langley - - * updated Makefile for Latex2HTML and added latex2html-init - -2004-07-13 Gunnar Evermann - - * errors.tex: Add error codes for LLF processing. - -2004-04-19 B. Jia - - * HTKRef/HMMIRest.tex: document HMMIRest options -qp and -rp - - * HTKRef/HCompV.tex: document HCompV -p option - - * config.tex: document HParm CMEANPATHMASK and VARSCALEPATHMASK - -2004-04-16 Gunnar Evermann - - * config.tex: document HEREST:UPDATEMODE. - -2004-03-21 M. J. F. Gales - - * Initial documentation for new adaptation code. - -2004-03-08 Anna Langley - - * Makefile: Corrected options for latex2html to - fix problems with navigation links. - -2004-02-07 Gunnar Evermann - - * HTKRef/HDMan.tex: Document -j switch. - Reported by "Ying Lin" - -2003-12-17 Gunnar Evermann - - * errors.tex: Added new error code 3233 (Empty Transcription) - -2003-03-12 Dan Povey - - * HTKRef/HERest.tex: - * HTKRef/HMMIRest.tex: document VARFLOORPERCENTILE. - -2003-03-07 David Mrva - - * hlmtutorial.tex: - * HTKRef/LGCopy.tex: Correct minor inconsistencies. - -2003-02-14 Gunnar Evermann - - * HTKRef/HLRescore.tex: New file. - - * HTKRef/HHEd.tex: New command PS. - -2002-12-19 Gunnar Evermann - - * train.tex: Mention strctural constraints for 2-model - re-estimation model sets. - - * speechio.tex: Document _T qualifier. - - * models.tex: Document input linear transforms. - - * htkoview.tex (New in 3.2): Enumerate new features. - - * HTKRef/HLRescore.tex: New section. - -2002-12-18 Gunnar Evermann - - * errors.tex: Added error code docs for HLRescore and HLat. - -2002-11-15 Gunnar Evermann - - * htkbook.tex: Add Dan Povey to author list. - -2002-07-15 Thomas Hain - - * train.tex: Added section on two-model re-estimation - * HTKRef/HHEd.tex Added descriptions of commands FA, FV and MD. - * errors.tex: Added HHEd error code for CovKind mismatch. - * config.tex: Added config variables for HModel, HHEd and HEREst. - -2002-07-16 Gunnar Evermann - - * htkslf.tex: Update description and include new example lattice. - -2002-07-05 Gunnar Evermann - - * htkoview.tex: Document use of multiple config files. - -2002-06-30 Gunnar Evermann - - * HTKRef/HHEd.tex: Document FC command. - -2002-04-24 Gunnar Evermann - - * refine.tex: Correct RC command example. - -2002-02-19 Håkan Melin - - * speechio.tex: Correct sign in LP cepstrum calculation. - -2002-01-16 Gunnar Evermann - - * Makefile (html): Create dir for html version. - -2002-01-16 Gareth Moore - - * HTKRef/HResults.tex: Add FAQ entry for confusion matrix. - - * netdict.tex: Clarify dictionary format definition. - - * config.tex: Add documentation for all filters in HShell. - - * openviron.tex: Clarify. - - * HTKRef/HResults.tex: Document confusion matrix output. - -2001-12-13 Gunnar Evermann - - * htkoview.tex: New features in 3.1. - - * openviron.tex: Document extended filename syntax. - - * speechio.tex: Document VTLN, cluster-based CMN/CVN and PLP. - - * config.tex: - * errors.tex: New error codes and config variables for the above. - - * HTKXFigs/vtlnpiecewise.fig: - * HTKFigs/vtlnpiecewise.eps: New files. - -2001-09-26 Gunnar Evermann - - * exampsys.tex: Add comment about applying TI to sil/sp. - Save big MMFs as binary. - -2001-08-28 Gunnar Evermann - - * exampsys.tex: Lots of improvements and corrections. - From: Will Bradley and - Alexios Daniel - -2001-07-03 Gunnar Evermann - - * config.tex: Use a multi-page supertabular environment instead of - many small one-page tabulars. - -2001-04-17 Gunnar Evermann - - * errors.tex : Correct error messages and add new error codes. - New range 3400-3499 for HSGen. - - -2001-04-11 Gunnar Evermann - - * HTKRef/HVite.tex: Document pruning increase/limt parameters. - -2001-03-18 Gunnar Evermann - - * errors.tex (HParm): mean & var normalisation. - -2000-12-18 Gunnar Evermann - - * exampsys.tex (Step 13 - Generating the Transforms): add RN - command to regtree.hed - -2000-11-30 Gunnar Evermann - - * config.tex: Add HVITE:SAVEBINARY. - Make LaTeX source more readable. - -2000-11-15 Gunnar Evermann - - * exampsys.tex (Step 10): Fix HDMan invocation. - -2000-09-06 Rich Wareham - - * HTK.tex: Removed warnings when generating HTML - -2000-09-05 Gunnar Evermann - - * *.tex: Add AucTex master file magic. - - * HTKRef/*.tex: Add labels for subsections to avoid LaTeX warnings. - - * exampsys.tex: Remove reference V2.2. - - * htkbook.tex: Hack to allow generation of PDF and PS. - - * HTK.tex: Use relative path for figures. - Use epsfig instead of epsf.tex. - -2000-09-04 Gunnar Evermann - - * created ChangeLog. - diff --git a/HTKBook/ChangeLog.CUHTK b/HTKBook/ChangeLog.CUHTK deleted file mode 100644 index c840b0b..0000000 --- a/HTKBook/ChangeLog.CUHTK +++ /dev/null @@ -1,8 +0,0 @@ -2003-02-14 Dan Povey - - * HTKRef/HMMIRest.tex: Updates for MMI/MPE-MAP. - -2002-11-15 Gunnar Evermann - - * htkbook.tex: - * HTKRef/HMMIRest.tex: New section. diff --git a/HTKBook/HTK.tex b/HTKBook/HTK.tex deleted file mode 100644 index 212c589..0000000 --- a/HTKBook/HTK.tex +++ /dev/null @@ -1,373 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% General HTK macros - Julian Odell 23/04/97 -% (made plain version) Rich Wareham 19/07/00 -% - -% HTK Documentation Utilities - -\usepackage[dvips]{epsfig} -\usepackage{html} -\usepackage{color} -\usepackage{supertabular} - -%begin{latexonly} -\usepackage{calc} -\usepackage{ifthen} % Only include for tex -\newcommand{\iftex}[1]{ #1 } % Do tex -\newcommand{\ifhtml}[1]{ } % Dont do HTML -%end{latexonly} -\html{ - \newcommand{\iftex}[1]{ } % Dont do tex - \newcommand{\ifhtml}[1]{ #1 } % Do HTML - - % And set the page colour - \pagecolor{white} -} - -\newcommand{\ifoddpage}[3] { - \ifthenelse{\isodd{\pageref{f:#1}} } {#2} {#3} -} -\newcommand{\ifevenpage}[3] { - \ifthenelse{\isodd{\pageref{f:#1}} } {#3} {#2} -} - -\newcommand{\htmlparbox}[2] { - \ifhtml{ \parbox{#1} {#2} } -} - -\newcommand{\figDir}{HTKFigs/} - -% Global Constants and document settings - -%begin{latexonly} -\setlength{\oddsidemargin}{\oddsidemargin - 1cm} -\setlength{\textwidth}{\textwidth + 3cm} -\setlength{\topmargin}{\topmargin - 2cm} -\setlength{\textheight}{\textheight + 4cm} -%end{latexonly}\newlength{\pictextwidth} - - -% Basics - -%\href{key} - -% Hack to allow us to generate PDF and PS. -%begin{latexonly} - \providecommand{\href}[1]{\ref{#1}} - \renewcommand{\href}[1]{\ref{#1}} -%end{latexonly} - -% Only do thin if we are generating HTML -\html{ - \newcommand{\href}[1]{\ref{#}} -} - -%\hequation{equation}{eqlabel} -\newcommand{\hequation}[2]{ -\begin{equation} #1 \label{e:#2} -\end{equation} -} - -% Headings - -\newcounter{tabctr}[chapter] -\newcounter{figctr}[chapter] - -\def\thetabctr{\thechapter.\arabic{tabctr}} -\def\thefigctr{\thechapter.\arabic{figctr}} -\def\thesecctr{\thechapter.\arabic{section}} - -\newcommand{\mychaptitle}{} -\newcommand{\mysecttitle}{} - -\newcommand{\mychap}[2]{ - \newpage - \chapter{#1}\label{c:#2} - \iftex{ \renewcommand{\mychaptitle}{\bfseries \rmfamily #1} - \markboth{\mychaptitle}{\mysecttitle} } -} - -\newcommand{\mysect}[2]{ - \section{#1}\label{s:#2} - \iftex{ \renewcommand{\mysecttitle} - { \bfseries \rmfamily \thesecctr \hspace{0.5cm} #1} - \markboth{\mychaptitle}{\mysecttitle} } -} - -\newcommand{\mysubsect}[2]{ - \subsection{#1}\label{s:#2} -% \iftex{ \markboth{\mychaptitle}{\mysecttitle\ - #1} } % Too long -} - -% Formatting Macros - -\newcommand{\htool}[1]{\textsc{#1}} -\newcommand{\ttitem}[1]{\item[{\tt #1}]} -\newcommand{\fwitem}[2]{\item[{\makebox[#1][l]{\tt #2}}]} -\newcommand{\mathitem}[1]{\item[$ #1 $]} -\newcommand{\incop}{\mbox{$ \:+\!\!=\; $}} -\newcommand{\bm}[1]{{\mbox{\boldmath $#1$}}} -\newcommand{\transpose}{{\scriptstyle\sf T}} - -\newenvironment{optlist}{ - \begin{list}{??}{ - } -}{ - \end{list} -} - -\newenvironment{varlist}{ - \begin{list}{??}{ - } -}{ - \end{list} -} - -\newenvironment{program}{ - \ttfamily - \begin{tabbing} - +++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= \kill -}{ - \end{tabbing} -} - -% Table captions are quite special - -%\tabcap{tabname}{caption} -\newcommand{\tabcap}[2]{ - \refstepcounter{tabctr} - \label{t:#1} - \mbox{ \rule{0cm}{0.6cm} - \textbf{ Table. \thetabctr\ \ #2} } -} - -% All the various figure macros - -%\dofig{picname}{width_in_mm}{caption}{capspace} -\newcommand{\dofig}[4]{ - - \begin{center}\parbox{#2mm} { \begin{center} - \setlength{\epsfxsize}{#2mm} - \epsfbox{\figDir/#1.eps} % DIRECTORY OPTION - \refstepcounter{figctr} - \begin{center} - \textbf{ Fig. \thefigctr\ \ #3} - \end{center} \label{f:#1} \end{center} } \end{center} - -} - -%\putfig{picname}{width_in_mm}{caption} -\newcommand{\putfig}[3]{ - \dofig{#1}{#2}{#3}{0} -} - -%\centrefig{picname}{width_in_mm}{caption} -\newcommand{\centrefig}[3]{ - \dofig{#1}{#2}{#3}{0} -} - -%\sidefig{picname}{width_in_mm}{caption}{capspace}{text} -\newcommand{\sidefig}[5]{ - \dofig{#1}{#2}{#3}{#4} - #5 -} - -%\sidepic{picname}{width_in_mm}{text} -\newcommand{\sidepic}[3]{ - - \begin{center}\parbox{#2mm} { \begin{center} - \setlength{\epsfxsize}{#2mm} - \epsfbox{\figDir/#1.eps} % DIRECTORY OPTION - \label{f:#1} \end{center} }\end{center} - - {#3} -} - -% Now programs - -%\doprog{picname}{width_in_mm}{caption}{program} -\newcommand{\doprog}[4]{ - - \begin{center} \parbox{#2mm} {\noindent - \fbox{ \parbox{#2mm}{ \hspace{#2mm} - \begin{program}#4\end{program} - } } - - \refstepcounter{figctr} - \label{f:#1} - - \begin{center} - \textbf{ Fig. \thefigctr\ \ #3} - \end{center} - } \end{center} - -} - -%\sideprog{progname}{width_in_mm}{caption}{prog}{text} -\newcommand{\sideprog}[5]{ - \doprog{#1}{#2}{#3}{#4} - #5 -} - -%\progbyprog{width_in_mm}{progname1}{progname2}{caption1}{caption2}{prog1}{prog2} -\newcommand{\progbyprog}[7]{ - \doprog{#2}{#1}{#4}{#6} - \doprog{#3}{#1}{#5}{#7} - \vspace{0.3cm} -} - - -%\putprog{progname}{width_in_mm}{caption}{prog} -\newcommand{\putprog}[4]{ - - \begin{center} \begin{figure} - \vspace{5mm} - \begin{center} - \framebox[#2mm]{ - \begin{minipage}{#2mm} - \begin{program}#4\end{program} - \end{minipage} } - - \refstepcounter{figctr} - \label{f:#1} - \vspace{0.4cm} - \mbox{ \textbf{ Fig. \thefigctr\ \ #3} } - \end{center} - \end{figure} \end{center} - -} - -% This section includes commands for each document covered -% -% Currently this is -% The HTKBook -% The HAPIBook -% The grapHvite book -% Inside HTK -% Inside grapHvite -% - -% HTKBook stuff - -\newcommand{\HTK}{HTK} -\newcommand{\version}{3.4} -\newcommand{\inthisversion}{In \HTK\ \version ,\ } -\newcommand{\HTKFF}{\HTK} -\newcommand{\HTKBook}{\textit{HTK Book}} -\newcommand{\ESPSwaves}{\textit{ESPS/waves+}} -\newcommand{\erno}[1]{\fwitem{2.0cm} {\ \ \ $#1$}} -\newcommand{\module}[1]{\item[#1]{\ ~}} -\newcommand{\refpart}{Reference Section} - -%\hmkw{hmmKeyword} -\newcommand{\hmkw}[1]{\mbox{$<$\textsf{#1}$>$}} - -%\hmmc{hmmMacro} -\newcommand{\hmmc}[2]{\mbox{$\sim$\textsf{#1 ``#2''}}} - -%\hmmt{hmmMacro} -\newcommand{\hmmt}[1]{\mbox{$\sim$\textsf{#1}}} - - -% HAPIBook stuff - -\newcommand{\HAPI}{{HAPI}} -\newcommand{\NULL}{{\tt NULL}} -\newcommand{\findex}[1]{\index{#1@{\bf #1}}} -\newcommand{\pindex}[1]{\index{configuration parameters!#1}} -\newcommand{\java}{{\sc Java}} -\newcommand{\jhapi}{{\sc Jhapi}} - -% Common grapHvite phrases - -\newcommand{\grapHvite}{\textbf{\textit {grapHvite}}} -\newcommand{\GNB}{\grapHvite\ Netbuilder} -\newcommand{\grapHviteOverview} {{\it \grapHvite\ Overview}} -\newcommand{\seeSec}[1]{see section {\bf \ref{s:#1}}} -\newcommand{\seeSub}[1]{see {section \bf \ref{s:#1}}} -\newcommand{\seeFig}[1]{see Fig {\bf \href{f:#1}}} -\newcommand{\fig} [1]{figure {\href{f:#1}}} -\newcommand{\seeApp}[1]{see Appendix {\bf \ref{c:#1}}} -\newcommand{\app}[1]{Appendix {\bf \ref{c:#1}}} -\newcommand{\sub}[1]{section {\bf \ref{s:#1}}} -\newcommand{\sect}[1]{section {\bf \ref{s:#1}}} - -% GrapHvite Specific Formats - -\newcommand{\facility}[1]{{\it #1}} -\newcommand{\key}[1]{{\sl #1}} -\newcommand{\ul}[1]{\underline{#1}} -\newcommand{\gTerm}[1]{{\bf #1}} -\newcommand{\network}[1]{{\it #1}} -\newcommand{\config}[1]{{\it #1}} -\newcommand{\bb}[1]{{\bf #1}} - -% Colourboxes need some highlighting for HTML - - \newcommand{\button}[1]{\colorbox[gray]{0.83}{{\small{\textsf{#1}}}}} - \newcommand{\menu}[1]{\colorbox[gray]{0.83}{{\small \textbf{#1}}}} - \newcommand{\menuItem}[1]{\colorbox[gray]{0.83}{{\small{ #1}}}} - \newcommand{\gLabel}[1]{{\colorbox[gray] {0.83} {\small{\textsf {#1}}}}} - -\newcommand{\moptitem}[1] { \optitem{\menuItem{#1}}} -\newenvironment{mylist}[1]{ - \begin{list}{}{ - \settowidth{\labelwidth} {#1} - \setlength{\leftmargin}{\labelwidth} - \addtolength{\leftmargin}{\labelsep} - \setlength{\parsep}{0.5ex plus0.2ex minus 0.2ex} - \setlength{\itemsep}{0.3ex} - \renewcommand{\makelabel}[1]{##1\hfill} -} } { - \end{list} -} - -\newenvironment{widelist}{ - \begin{list}{??}{ - \setlength{\itemindent}{0cm} - \setlength{\rightmargin}{0.5cm} - \setlength{\leftmargin}{2.5cm} - \setlength{\listparindent}{0cm} - \setlength{\labelwidth}{\textwidth} - \setlength{\labelsep}{0.5cm} } -}{ - \end{list} -} - -\newcommand{\doMenu}[1]{ - \setlength{\epsfysize} {5cm} - \raisebox{-5cm} - {\epsfbox{#1menu.eps}} % DIRECTORY OPTION -} - -\newcommand{\mysubsub}[2]{ - \subsubsection{#1}\label{s:#2} -} - -% HLM Book - language modelling tools - -\newcommand{\HLM}{HLM} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/HTKFigs/Blocking.eps b/HTKBook/HTKFigs/Blocking.eps deleted file mode 100644 index 7288a58..0000000 --- a/HTKBook/HTKFigs/Blocking.eps +++ /dev/null @@ -1,2388 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Blocking.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/11/94 3:57:00 p.m. -%%BoundingBox: 2.000 445.000 276.462 791.500 -%%QDBoundingBox: 2.000 0.500 276.462 347.000 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.010 5.320 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.428 41.892 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 41.714 84.182 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.010 140.463 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.428 177.035 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 41.714 219.325 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 6.000 113.000 6.000 104.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 114.000 113.000 6.000 113.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 114.000 104.000 114.000 113.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 74.000 131.000 74.000 122.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 182.000 131.000 74.000 131.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 182.000 122.000 182.000 131.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -75.000 85.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -6.000 85.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 8.000 84.999 73.000 85.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 66.000 2.000 0.000 0.000 16.000 89.500 rect -%@EndRect -gsave -46.750 74.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -44.500 4.000 S -(r) -36.713 4.000 S -(a) -32.051 4.000 S -(m) -25.837 4.000 S -(e) -14.948 4.000 S -( ) -8.734 4.000 S -(P) -5.234 4.000 S -(e) 2.551 4.000 S -(r) 8.765 4.000 S -(i) 13.427 4.000 S -(o) 17.317 4.000 S -(d) 24.317 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -5.500 19.500 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -113.500 19.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 111.500 19.500 7.500 19.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 8.500 0.000 0.000 16.000 111.000 rect -%@EndRect -gsave -64.000 8.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -55.000 4.000 S -(i) -41.786 4.000 S -(n) -37.896 4.000 S -(d) -30.896 4.000 S -(o) -23.896 4.000 S -(w) -16.896 4.000 S -( ) -6.786 4.000 S -(D) -3.286 4.000 S -(u) 6.824 4.000 S -(r) 13.824 4.000 S -(a) 18.486 4.000 S -(t) 24.700 4.000 S -(i) 28.589 4.000 S -(o) 32.479 4.000 S -(n) 39.479 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.000 42.000 0.000 0.000 31.000 34.000 rect -%@EndRect -gsave -59.000 175.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.051 -4.000 S -(l) -8.051 -4.000 S -(o) -4.162 -4.000 S -(c) 2.837 -4.000 S -(k) 9.051 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.000 109.500 0.000 0.000 31.000 34.000 rect -%@EndRect -gsave -126.500 175.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.551 -4.000 S -(l) -8.551 -4.000 S -(o) -4.662 -4.000 S -(c) 2.337 -4.000 S -(k) 8.551 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -10.947 11.000 S -(+) -3.947 11.000 S -(1) 3.947 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 60.000 158.000 60.000 113.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -60.000 221.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 59.999 219.000 60.000 194.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -127.500 221.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 127.499 219.000 127.500 194.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 127.000 159.000 127.000 132.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 154.500 163.000 0.000 0.000 24.000 25.000 rect -%@EndRect -gsave -175.500 166.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -12.500 7.000 S -(.) -6.500 7.000 S -(.) -0.500 7.000 S -(.) 5.500 7.000 S -( ) 11.500 7.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 200.500 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -209.500 168.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -9.000 5.000 S -(t) -2.786 5.000 S -(c) 1.103 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 230.000 46.500 0.000 0.000 72.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 239.000 46.500 239.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 248.000 46.500 248.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 257.000 46.500 257.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 266.000 46.500 266.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 275.000 46.500 275.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 284.000 46.500 284.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 293.000 46.500 293.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 230.000 114.000 0.000 0.000 72.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 239.000 114.000 239.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 248.000 114.000 248.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 257.000 114.000 257.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 266.000 114.000 266.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 275.000 114.000 275.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 284.000 114.000 284.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 293.000 114.000 293.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.000 141.000 0.000 0.000 54.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 248.000 141.000 0.000 0.000 54.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 158.250 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 248.000 158.250 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 237.500 166.000 0.000 0.000 46.000 58.000 rect -%@EndRect -gsave -195.000 260.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -27.872 -11.000 S -(a) -20.086 -11.000 S -(r) -13.872 -11.000 S -(a) -9.210 -11.000 S -(m) -2.996 -11.000 S -(e) 7.893 -11.000 S -(t) 14.106 -11.000 S -(e) 17.996 -11.000 S -(r) 24.210 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -18.544 4.000 S -(e) -8.434 4.000 S -(c) -2.220 4.000 S -(t) 3.993 4.000 S -(o) 7.882 4.000 S -(r) 14.882 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -11.551 19.000 S -(i) -3.765 19.000 S -(z) 0.124 19.000 S -(e) 6.337 19.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 299.000 24.000 0.000 0.000 24.000 120.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 323.000 54.000 0.000 0.000 12.000 60.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 299.000 84.000 0.000 0.000 24.000 120.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 323.000 114.000 0.000 0.000 12.000 60.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 331.500 39.500 0.000 0.000 15.000 149.000 rect -%@EndRect -gsave -114.000 339.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -73.170 5.000 S -(p) -65.384 5.000 S -(e) -58.384 5.000 S -(e) -52.170 5.000 S -(c) -45.957 5.000 S -(h) -39.743 5.000 S -( ) -32.743 5.000 S -(V) -29.243 5.000 S -(e) -19.132 5.000 S -(c) -12.918 5.000 S -(t) -6.705 5.000 S -(o) -2.815 5.000 S -(r) 4.184 5.000 S -(s) 8.846 5.000 S -( ) 14.294 5.000 S -(o) 17.794 5.000 S -(r) 24.794 5.000 S -( ) 29.457 5.000 S -(F) 32.957 5.000 S -(r) 40.743 5.000 S -(a) 45.405 5.000 S -(m) 51.619 5.000 S -(e) 62.508 5.000 S -(s) 68.722 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 20.750 20.750 0.000 0.000 17.000 72.011 rect -%@EndRect -gsave -56.755 29.250 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -35.750 5.000 S -(I) -28.548 5.000 S -(N) -21.347 5.000 S -(D) -14.146 5.000 S -(O) -6.945 5.000 S -(W) 0.255 5.000 S -(S) 7.457 5.000 S -(I) 14.658 5.000 S -(Z) 21.859 5.000 S -(E) 29.060 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.250 4.750 0.000 0.000 17.000 72.011 rect -%@EndRect -gsave -40.755 96.750 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -35.750 4.000 S -(A) -28.548 4.000 S -(R) -21.347 4.000 S -(G) -14.146 4.000 S -(E) -6.945 4.000 S -(T) 0.255 4.000 S -(R) 7.457 4.000 S -(A) 14.658 4.000 S -(T) 21.859 4.000 S -(E) 29.060 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 21.750 163.250 0.000 0.000 17.000 72.011 rect -%@EndRect -gsave -199.255 30.250 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -35.250 5.000 S -(O) -28.048 5.000 S -(U) -20.847 5.000 S -(R) -13.646 5.000 S -(C) -6.445 5.000 S -(E) 0.755 5.000 S -(R) 7.957 5.000 S -(A) 15.158 5.000 S -(T) 22.359 5.000 S -(E) 29.560 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/ClassLM.eps b/HTKBook/HTKFigs/ClassLM.eps deleted file mode 100644 index 827704a..0000000 --- a/HTKBook/HTKFigs/ClassLM.eps +++ /dev/null @@ -1,3584 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (ClassLM2.eps) -%%CreationDate: 2/27/2002 3:16 PM -%%BoundingBox: 111 230 481 608 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentNeededFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -%%IncludeFont: Helvetica-Bold -%%IncludeFont: Helvetica-Oblique -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold -[/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Oblique Helvetica-Oblique -[/_Helvetica-Oblique/Helvetica-Oblique 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 256.7642 607.4453 m -254.2446 607.4453 252.3247 605.5254 252.3247 603.0059 c -252.3247 576.7275 l -252.3247 574.3281 254.2446 572.4082 256.7642 572.4082 c -335.5977 572.4082 l -337.998 572.4082 339.917 574.3281 339.917 576.7275 c -339.917 603.0059 l -339.917 605.5254 337.998 607.4453 335.5977 607.4453 c -256.7642 607.4453 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 256.7642 607.4453 m -254.2446 607.4453 252.3247 605.5254 252.3247 603.0059 c -252.3247 576.7275 l -252.3247 574.3281 254.2446 572.4082 256.7642 572.4082 c -335.5977 572.4082 l -337.998 572.4082 339.917 574.3281 339.917 576.7275 c -339.917 603.0059 l -339.917 605.5254 337.998 607.4453 335.5977 607.4453 c -256.7642 607.4453 l -s 0 To -1 0 0 1 285.082 585.4873 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(Text) Tx -(\r) Tx -TO -0 0 0 0 k -374.9541 546.1309 m -462.5469 546.1309 l -462.5469 511.0938 l -374.9541 511.0938 l -374.9541 546.1309 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 374.9541 546.1309 m -374.9541 511.0938 l -462.5469 511.0938 l -462.5469 546.1309 l -374.9541 546.1309 l -s 0 To -1 0 0 1 391.873 524.8926 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --3 Tt --0.035 Tc -(LNew) Tx -(\r) Tx -TO -0 To -1 0 0 1 422.9502 524.8926 0 Tp -TP -0 Tr -20 Tt -0.2336 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 439.3887 524.8926 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -252.3247 546.1309 m -339.917 546.1309 l -339.917 511.0938 l -252.3247 511.0938 l -252.3247 546.1309 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 252.3247 546.1309 m -252.3247 511.0938 l -339.917 511.0938 l -339.917 546.1309 l -252.3247 546.1309 l -s 0 To -1 0 0 1 275.4829 524.8926 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M 5 Tt -0.0584 Tc -(LG) Tx -(\r) Tx -TO -0 To -1 0 0 1 291.5615 524.8926 0 Tp -TP -0 Tr -11 Tt -0.1285 Tc -(Pr) Tx -(\r) Tx -TO -0 To -1 0 0 1 304.04 524.8926 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ep) Tx -(\r) Tx -TO -0 0 0 0 k -256.7642 484.8154 m -254.2446 484.8154 252.3247 482.8955 252.3247 480.376 c -252.3247 454.2178 l -252.3247 451.8184 254.2446 449.7783 256.7642 449.7783 c -335.5977 449.7783 l -337.998 449.7783 339.917 451.8184 339.917 454.2178 c -339.917 480.376 l -339.917 482.8955 337.998 484.8154 335.5977 484.8154 c -256.7642 484.8154 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 256.7642 484.8154 m -254.2446 484.8154 252.3247 482.8955 252.3247 480.376 c -252.3247 454.2178 l -252.3247 451.8184 254.2446 449.7783 256.7642 449.7783 c -335.5977 449.7783 l -337.998 449.7783 339.917 451.8184 339.917 454.2178 c -339.917 480.376 l -339.917 482.8955 337.998 484.8154 335.5977 484.8154 c -256.7642 484.8154 l -s 0 To -1 0 0 1 269.7231 462.8574 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 282.8022 462.8574 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 302.2402 462.8574 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(file) Tx -(\r) Tx -TO -0 To -1 0 0 1 317.2393 462.8574 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -379.3945 484.8154 m -376.874 484.8154 374.9541 482.8955 374.9541 480.376 c -374.9541 454.2178 l -374.9541 451.8184 376.874 449.7783 379.3945 449.7783 c -458.2275 449.7783 l -460.627 449.7783 462.5469 451.8184 462.5469 454.2178 c -462.5469 480.376 l -462.5469 482.8955 460.627 484.8154 458.2275 484.8154 c -379.3945 484.8154 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 379.3945 484.8154 m -376.874 484.8154 374.9541 482.8955 374.9541 480.376 c -374.9541 454.2178 l -374.9541 451.8184 376.874 449.7783 379.3945 449.7783 c -458.2275 449.7783 l -460.627 449.7783 462.5469 451.8184 462.5469 454.2178 c -462.5469 480.376 l -462.5469 482.8955 460.627 484.8154 458.2275 484.8154 c -379.3945 484.8154 l -s 0 To -1 0 0 1 392.2334 462.8574 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M 32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 409.8721 462.8574 0 Tp -TP -0 Tr -6 Tt -0.0701 Tc -(rd) Tx -(\r) Tx -TO -0 To -1 0 0 1 423.3105 462.8574 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 439.6289 462.8574 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -252.3247 423.501 m -339.917 423.501 l -339.917 388.4639 l -252.3247 388.4639 l -252.3247 423.501 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 252.3247 423.501 m -252.3247 388.4639 l -339.917 388.4639 l -339.917 423.501 l -252.3247 423.501 l -s 0 To -1 0 0 1 273.9229 402.2627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --4 Tt --0.0467 Tc -(LGCo) Tx -(\r) Tx -TO -0 To -1 0 0 1 305.4805 402.2627 0 Tp -TP -0 Tr -26 Tt -0.3037 Tc -(py) Tx -(\r) Tx -TO -0 0 0 0 k -374.9541 423.501 m -462.5469 423.501 l -462.5469 388.4639 l -374.9541 388.4639 l -374.9541 423.501 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 374.9541 423.501 m -374.9541 388.4639 l -462.5469 388.4639 l -462.5469 423.501 l -374.9541 423.501 l -s 0 To -1 0 0 1 400.9922 402.2627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M -5 Tt --0.0584 Tc -(LBui) Tx -(\r) Tx -TO -0 To -1 0 0 1 426.9102 402.2627 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ld) Tx -(\r) Tx -TO -0 0 0 0 k -381.5537 362.1855 m -377.9541 362.1855 374.9541 359.1865 374.9541 355.5869 c -374.9541 316.2295 l -374.9541 312.5098 377.9541 309.6299 381.5537 309.6299 c -455.9482 309.6299 l -459.667 309.6299 462.5469 312.5098 462.5469 316.2295 c -462.5469 355.5869 l -462.5469 359.1865 459.667 362.1855 455.9482 362.1855 c -381.5537 362.1855 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 381.5537 362.1855 m -377.9541 362.1855 374.9541 359.1865 374.9541 355.5869 c -374.9541 316.2295 l -374.9541 312.5098 377.9541 309.6299 381.5537 309.6299 c -455.9482 309.6299 l -459.667 309.6299 462.5469 312.5098 462.5469 316.2295 c -462.5469 355.5869 l -462.5469 359.1865 459.667 362.1855 455.9482 362.1855 c -381.5537 362.1855 l -s 0 To -1 0 0 1 389.2334 339.5078 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --3 Tt --0.035 Tc -(Cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 400.3926 339.5078 0 Tp -TP -0 Tr -0 Tt -0 Tc -(a) Tx -(\r) Tx -TO -0 To -1 0 0 1 406.752 339.5078 0 Tp -TP -0 Tr -(ss-cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 430.8701 339.5078 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(as) Tx -(\r) Tx -TO -0 To -1 0 0 1 443.1084 339.5078 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 To -1 0 0 1 390.3135 326.1885 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(co) Tx -(\r) Tx -TO -0 To -1 0 0 1 402.5518 326.1885 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(mp) Tx -(\r) Tx -TO -0 To -1 0 0 1 418.751 326.1885 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(onent) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -296.481 572.4082 m -296.481 551.0498 l -296.481 550.8105 296.3608 550.5703 296.1211 550.5703 c -295.8809 550.5703 295.7612 550.8105 295.7612 550.9297 c -295.7612 572.4082 l -295.7612 572.6484 295.8809 572.7686 296.1211 572.7686 c -296.2412 572.7686 296.481 572.6484 296.481 572.4082 c -296.481 572.4082 l -f 301.041 552.0098 m -296.1211 546.1309 l -291.2017 552.0098 l -301.041 552.0098 l -f *U -*u -296.481 511.0938 m -296.481 489.6152 l -296.481 489.4951 296.3608 489.2549 296.1211 489.2549 c -296.001 489.2549 295.7612 489.4951 295.7612 489.6152 c -295.7612 511.0938 l -295.7612 511.333 295.8809 511.4531 296.1211 511.4531 c -296.3608 511.4531 296.481 511.333 296.481 511.0938 c -296.481 511.0938 l -f 301.041 490.6953 m -296.2412 484.8154 l -291.3213 490.6953 l -301.041 490.6953 l -f *U -*u -419.1104 511.0938 m -419.2305 489.6152 l -419.2305 489.4951 418.9912 489.2549 418.8711 489.2549 c -418.6309 489.2549 418.3906 489.4951 418.3906 489.6152 c -418.3906 511.0938 l -418.3906 511.333 418.5107 511.4531 418.751 511.4531 c -418.9912 511.4531 419.1104 511.333 419.1104 511.0938 c -419.1104 511.0938 l -f 423.6709 490.6953 m -418.8711 484.8154 l -413.9512 490.6953 l -423.6709 490.6953 l -f *U -*u -419.1104 449.7783 m -419.2305 428.3008 l -419.2305 428.1807 418.9912 427.9404 418.8711 427.9404 c -418.6309 427.9404 418.3906 428.1807 418.3906 428.3008 c -418.3906 449.7783 l -418.3906 450.0186 418.5107 450.1387 418.751 450.1387 c -418.9912 450.1387 419.1104 450.0186 419.1104 449.7783 c -419.1104 449.7783 l -f 423.6709 429.3799 m -418.8711 423.501 l -413.9512 429.2607 l -423.6709 429.3799 l -f *U -*u -340.2773 467.417 m -372.915 410.4219 l -373.0342 410.1816 372.915 409.9424 372.7949 409.8223 c -372.5547 409.8223 372.3145 409.8223 372.1943 410.0615 c -339.6777 467.0566 l -339.5576 467.2969 339.5576 467.5371 339.7979 467.6572 c -339.917 467.6572 340.1572 467.6572 340.2773 467.417 c -340.2773 467.417 l -f 376.2744 413.4219 m -374.9541 405.9824 l -367.875 408.6221 l -376.2744 413.4219 l -f *U -*u -296.481 444.9785 m -296.481 428.3008 l -296.481 428.1807 296.3608 427.9404 296.1211 427.9404 c -296.001 427.9404 295.7612 428.1807 295.7612 428.3008 c -295.7612 444.9785 l -295.7612 445.0986 296.001 445.3389 296.1211 445.3389 c -296.3608 445.3389 296.481 445.0986 296.481 444.9785 c -296.481 444.9785 l -f 291.3213 444.0195 m -296.1211 449.7783 l -301.041 444.0195 l -291.3213 444.0195 l -f 301.041 429.3799 m -296.2412 423.501 l -291.3213 429.2607 l -301.041 429.3799 l -f *U -*u -419.1104 383.5439 m -419.2305 366.9854 l -419.2305 366.8652 418.9912 366.626 418.8711 366.626 c -418.6309 366.626 418.3906 366.8652 418.3906 366.9854 c -418.3906 383.5439 l -418.3906 383.7842 418.6309 383.9043 418.751 383.9043 c -418.9912 383.9043 419.1104 383.7842 419.1104 383.5439 c -419.1104 383.5439 l -f 413.9512 382.584 m -418.751 388.4639 l -423.6709 382.584 l -413.9512 382.584 l -f 423.6709 368.0654 m -418.8711 362.1855 l -413.9512 367.9453 l -423.6709 368.0654 l -f *U -*u -342.0771 410.4219 m -372.1943 463.2178 l -372.3145 463.457 372.5547 463.457 372.7949 463.3379 c -372.915 463.2178 373.0342 463.0977 372.915 462.8574 c -342.6768 410.0615 l -342.5576 409.8223 342.3174 409.8223 342.1973 409.8223 c -341.957 409.9424 341.957 410.1816 342.0771 410.4219 c -342.0771 410.4219 l -f 347.1172 408.6221 m -339.917 405.9824 l -338.5977 413.4219 l -347.1172 408.6221 l -f 367.875 464.6572 m -374.9541 467.2969 l -376.2744 459.8574 l -367.875 464.6572 l -f *U -*u -342.6768 524.5322 m -372.915 471.7363 l -373.0342 471.4971 372.915 471.2568 372.7949 471.1367 c -372.5547 471.1367 372.3145 471.1367 372.1943 471.377 c -342.0771 524.1729 l -341.957 524.4121 341.957 524.6523 342.1973 524.6523 c -342.3174 524.7725 342.5576 524.7725 342.6768 524.5322 c -342.6768 524.5322 l -f 338.5977 521.1729 m -339.917 528.6123 l -347.1172 525.9727 l -338.5977 521.1729 l -f 376.2744 474.7363 m -374.9541 467.2969 l -367.875 469.9365 l -376.2744 474.7363 l -f *U -0 0 0 0 k -129.6948 484.8154 m -217.2876 484.8154 l -217.2876 449.7783 l -129.6948 449.7783 l -129.6948 484.8154 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 129.6948 484.8154 m -129.6948 449.7783 l -217.2876 449.7783 l -217.2876 484.8154 l -129.6948 484.8154 l -s 0 To -1 0 0 1 153.813 463.5771 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf -3 Tt -0.035 Tc -(Cluste) Tx -(\r) Tx -TO -0 To -1 0 0 1 189.4502 463.5771 0 Tp -TP -0 Tr -0 Tt -0 Tc -(r) Tx -(\r) Tx -TO -0 0 0 0 k -134.1348 423.501 m -131.6147 423.501 129.6948 421.5811 129.6948 419.0615 c -129.6948 392.7832 l -129.6948 390.3838 131.6147 388.4639 134.1348 388.4639 c -212.9678 388.4639 l -215.3677 388.4639 217.2876 390.3838 217.2876 392.7832 c -217.2876 419.0615 l -217.2876 421.5811 215.3677 423.501 212.9678 423.501 c -134.1348 423.501 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 134.1348 423.501 m -131.6147 423.501 129.6948 421.5811 129.6948 419.0615 c -129.6948 392.7832 l -129.6948 390.3838 131.6147 388.4639 134.1348 388.4639 c -212.9678 388.4639 l -215.3677 388.4639 217.2876 390.3838 217.2876 392.7832 c -217.2876 419.0615 l -217.2876 421.5811 215.3677 423.501 212.9678 423.501 c -134.1348 423.501 l -s 0 To -1 0 0 1 146.2534 401.543 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --2 Tt --0.0234 Tc -(Clas) Tx -(\r) Tx -TO -0 To -1 0 0 1 169.5317 401.543 0 Tp -TP -0 Tr -281 Tt -3.2818 Tc -(sm) Tx -(\r) Tx -TO -0 To -1 0 0 1 188.4902 401.543 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ap) Tx -(\r) Tx -TO -0 0 0 0 k -136.2944 362.1855 m -132.6948 362.1855 129.6948 359.1865 129.6948 355.5869 c -129.6948 316.2295 l -129.6948 312.5098 132.6948 309.6299 136.2944 309.6299 c -210.688 309.6299 l -214.4077 309.6299 217.2876 312.5098 217.2876 316.2295 c -217.2876 355.5869 l -217.2876 359.1865 214.4077 362.1855 210.688 362.1855 c -136.2944 362.1855 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 136.2944 362.1855 m -132.6948 362.1855 129.6948 359.1865 129.6948 355.5869 c -129.6948 316.2295 l -129.6948 312.5098 132.6948 309.6299 136.2944 309.6299 c -210.688 309.6299 l -214.4077 309.6299 217.2876 312.5098 217.2876 316.2295 c -217.2876 355.5869 l -217.2876 359.1865 214.4077 362.1855 210.688 362.1855 c -136.2944 362.1855 l -s 0 To -1 0 0 1 144.6938 339.5078 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M 32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 162.4521 339.5078 0 Tp -TP -0 Tr --4 Tt --0.0467 Tc -(rd-c) Tx -(\r) Tx -TO -0 To -1 0 0 1 182.2505 339.5078 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(la) Tx -(\r) Tx -TO -0 To -1 0 0 1 191.3696 339.5078 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(ss) Tx -(\r) Tx -TO -0 To -1 0 0 1 145.0537 326.0693 0 Tp -TP -0 Tr -(co) Tx -(\r) Tx -TO -0 To -1 0 0 1 157.2925 326.0693 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(mp) Tx -(\r) Tx -TO -0 To -1 0 0 1 173.4912 326.0693 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(onent) Tx -(\r) Tx -TO -0 0 0 0 k -252.3247 353.4268 m -339.917 353.4268 l -339.917 318.3896 l -252.3247 318.3896 l -252.3247 353.4268 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 252.3247 353.4268 m -252.3247 318.3896 l -339.917 318.3896 l -339.917 353.4268 l -252.3247 353.4268 l -s 0 To -1 0 0 1 281.0024 332.1885 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --3 Tt --0.035 Tc -(LLin) Tx -(\r) Tx -TO -0 To -1 0 0 1 305.6006 332.1885 0 Tp -TP -0 Tr -0 Tt -0 Tc -(k) Tx -(\r) Tx -TO -0 0 0 0 k -258.9243 283.2324 m -255.3242 283.2324 252.3247 280.3525 252.3247 276.7529 c -252.3247 237.2764 l -252.3247 233.6768 255.3242 230.7969 258.9243 230.7969 c -333.3184 230.7969 l -337.0381 230.7969 339.917 233.6768 339.917 237.2764 c -339.917 276.7529 l -339.917 280.3525 337.0381 283.2324 333.3184 283.2324 c -258.9243 283.2324 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 258.9243 283.2324 m -255.3242 283.2324 252.3247 280.3525 252.3247 276.7529 c -252.3247 237.2764 l -252.3247 233.6768 255.3242 230.7969 258.9243 230.7969 c -333.3184 230.7969 l -337.0381 230.7969 339.917 233.6768 339.917 237.2764 c -339.917 276.7529 l -339.917 280.3525 337.0381 283.2324 333.3184 283.2324 c -258.9243 283.2324 l -s 0 To -1 0 0 1 261.8037 260.6738 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --3 Tt --0.035 Tc -(Cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 272.9629 260.6738 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(as) Tx -(\r) Tx -TO -0 To -1 0 0 1 285.2021 260.6738 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 To -1 0 0 1 294.3213 260.6738 0 Tp -TP -0 Tr -/_Helvetica-Oblique 11.6789 Tf -(n) Tx -(\r) Tx -TO -0 To -1 0 0 1 300.6807 260.6738 0 Tp -TP -0 Tr -/_Helvetica 11.6789 Tf -(-) Tx -(\r) Tx -TO -q 304.6406 271.1133 m -333.6777 271.1133 l -333.6777 258.1543 l -304.6406 258.1543 l -H W N 0 To -1 0 0 1 304.6406 260.6738 0 Tp -TP -0 Tr -0 O -0 0 0 1 k --1 Tt --0.0117 Tc -(gram) Tx -(\r) Tx -TO -Q 0 A -0 To -1 0 0 1 288.4419 247.2354 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M []0 d /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(LM) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -173.8511 444.8594 m -173.8511 428.3008 l -173.8511 428.1807 173.7314 427.9404 173.4912 427.9404 c -173.3711 427.9404 173.1313 428.1807 173.1313 428.3008 c -173.1313 444.8594 l -173.1313 445.0986 173.2515 445.2188 173.4912 445.2188 c -173.7314 445.2188 173.8511 445.0986 173.8511 444.8594 c -173.8511 444.8594 l -f 168.6919 443.8994 m -173.4912 449.7783 l -178.4111 443.8994 l -168.6919 443.8994 l -f 178.4111 429.3799 m -173.4912 423.501 l -168.6919 429.2607 l -178.4111 429.3799 l -f *U -*u -252.3247 466.9375 m -222.207 466.8174 l -221.9673 466.8174 221.8472 467.0566 221.8472 467.1768 c -221.8472 467.417 221.9673 467.5371 222.207 467.5371 c -252.3247 467.6572 l -252.5645 467.6572 252.6846 467.5371 252.6846 467.2969 c -252.6846 467.0566 252.5645 466.9375 252.3247 466.9375 c -252.3247 466.9375 l -f 223.167 462.3779 m -217.2876 467.1768 l -223.167 472.0967 l -223.167 462.3779 l -f *U -*u -129.6948 466.9375 m -112.1763 466.9375 l -112.5361 467.2969 l -112.5361 335.9082 l -112.1763 336.2676 l -124.8955 336.2676 l -125.1353 336.2676 125.2554 336.1484 125.2554 335.9082 c -125.2554 335.668 125.1353 335.5479 124.8955 335.5479 c -112.1763 335.5479 l -111.9365 335.5479 111.8164 335.668 111.8164 335.9082 c -111.8164 467.2969 l -111.8164 467.5371 111.9365 467.6572 112.1763 467.6572 c -129.6948 467.6572 l -129.9351 467.6572 130.0547 467.5371 130.0547 467.2969 c -130.0547 467.0566 129.9351 466.9375 129.6948 466.9375 c -129.6948 466.9375 l -f 123.9355 340.708 m -129.6948 335.9082 l -123.9355 330.9883 l -123.9355 340.708 l -f *U -*u -217.2876 336.2676 m -247.5249 336.2676 l -247.645 336.2676 247.8853 336.0283 247.8853 335.7881 c -247.8853 335.668 247.645 335.4277 247.5249 335.4277 c -217.2876 335.5479 l -217.0479 335.5479 216.9277 335.668 216.9277 335.9082 c -216.9277 336.1484 217.0479 336.2676 217.2876 336.2676 c -217.2876 336.2676 l -f 246.4453 340.708 m -252.3247 335.7881 l -246.4453 330.9883 l -246.4453 340.708 l -f *U -*u -374.9541 335.5479 m -344.8369 335.4277 l -344.5967 335.4277 344.4775 335.668 344.4775 335.7881 c -344.4775 336.0283 344.5967 336.2676 344.8369 336.2676 c -374.9541 336.2676 l -375.1943 336.2676 375.3145 336.1484 375.3145 335.9082 c -375.3145 335.668 375.1943 335.5479 374.9541 335.5479 c -374.9541 335.5479 l -f 345.7969 330.9883 m -339.917 335.7881 l -345.7969 340.708 l -345.7969 330.9883 l -f *U -*u -296.481 318.3896 m -296.6011 288.1514 l -296.6011 287.9121 296.3608 287.792 296.1211 287.792 c -296.001 287.792 295.7612 287.9121 295.7612 288.1514 c -295.7612 318.3896 l -295.7612 318.6289 295.8809 318.749 296.1211 318.749 c -296.3608 318.749 296.481 318.6289 296.481 318.3896 c -296.481 318.3896 l -f 301.041 289.1113 m -296.2412 283.2324 l -291.3213 289.1113 l -301.041 289.1113 l -f *U -*u -462.5469 467.6572 m -480.0654 467.6572 l -479.7061 467.2969 l -479.7061 502.334 l -480.0654 501.9746 l -173.4912 501.9746 l -173.8511 502.334 l -173.8511 489.6152 l -173.8511 489.4951 173.7314 489.2549 173.4912 489.2549 c -173.2515 489.2549 173.1313 489.4951 173.1313 489.6152 c -173.1313 502.334 l -173.1313 502.5742 173.2515 502.6943 173.4912 502.6943 c -480.0654 502.6943 l -480.3057 502.6943 480.4258 502.5742 480.4258 502.334 c -480.4258 467.2969 l -480.4258 467.0566 480.3057 466.9375 480.0654 466.9375 c -462.5469 466.9375 l -462.4268 466.9375 462.1875 467.0566 462.1875 467.2969 c -462.1875 467.5371 462.4268 467.6572 462.5469 467.6572 c -462.5469 467.6572 l -f 178.4111 490.6953 m -173.4912 484.8154 l -168.6919 490.6953 l -178.4111 490.6953 l -f *U -*u -217.2876 406.3418 m -247.5249 406.2227 l -247.645 406.2227 247.8853 406.1025 247.8853 405.8623 c -247.8853 405.6221 247.645 405.502 247.5249 405.502 c -217.2876 405.6221 l -217.0479 405.6221 216.9277 405.7422 216.9277 405.9824 c -216.9277 406.2227 217.0479 406.3418 217.2876 406.3418 c -217.2876 406.3418 l -f 246.5654 410.7822 m -252.3247 405.8623 l -246.4453 401.0625 l -246.5654 410.7822 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/Config.eps b/HTKBook/HTKFigs/Config.eps deleted file mode 100644 index 9d49d41..0000000 --- a/HTKBook/HTKFigs/Config.eps +++ /dev/null @@ -1,1843 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Config.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/14/94 6:08:14 p.m. -%%BoundingBox: 17.500 625.500 222.986 773.500 -%%QDBoundingBox: 17.500 18.500 222.986 166.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 72.000 18.000 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 108.000 18.000 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.500 173.500 0.000 0.000 27.000 49.486 rect -%@EndRect -gsave -198.243 153.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -24.000 -3.000 S -(u) -15.996 -3.000 S -(i) -9.996 -3.000 S -(l) -6.662 -3.000 S -(t) -3.328 -3.000 S -(-) 0.005 -3.000 S -(i) 4.001 -3.000 S -(n) 7.335 -3.000 S -( ) 13.335 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -24.000 10.000 S -(e) -15.333 10.000 S -(f) -10.007 10.000 S -(a) -6.011 10.000 S -(u) -0.685 10.000 S -(l) 5.314 10.000 S -(t) 8.648 10.000 S -(s) 11.982 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 18.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 27.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 36.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 45.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 54.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 63.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 72.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 81.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 90.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 99.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 108.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 117.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 126.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 135.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 144.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 153.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 18.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 54.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 63.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 72.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 81.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 99.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 117.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 126.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 153.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 27.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 54.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 63.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 117.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 135.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 153.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -90.000 63.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 89.999 59.000 90.000 36.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 173.500 0.000 0.000 27.000 33.333 rect -%@EndRect -gsave -190.166 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -16.000 -3.000 S -(o) -7.996 -3.000 S -(n) -1.996 -3.000 S -(f) 4.003 -3.000 S -(i) 8.000 -3.000 S -(g) 11.333 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -16.000 10.000 S -(i) -9.326 10.000 S -(l) -5.992 10.000 S -(e) -2.658 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.500 173.500 0.000 0.000 27.000 40.652 rect -%@EndRect -gsave -193.826 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -20.000 -3.000 S -(s) -11.333 -3.000 S -(e) -6.664 -3.000 S -(r) -1.337 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -20.000 10.000 S -(e) -11.333 10.000 S -(f) -6.007 10.000 S -(a) -2.011 10.000 S -(u) 3.314 10.000 S -(l) 9.314 10.000 S -(t) 12.648 10.000 S -(s) 15.982 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.500 27.500 0.000 0.000 14.000 123.632 rect -%@EndRect -gsave -89.316 25.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -61.000 3.000 S -(o) -52.996 3.000 S -(n) -46.996 3.000 S -(f) -40.996 3.000 S -(i) -37.000 3.000 S -(g) -33.666 3.000 S -(u) -27.666 3.000 S -(r) -21.666 3.000 S -(a) -17.669 3.000 S -(t) -12.343 3.000 S -(i) -9.009 3.000 S -(o) -5.675 3.000 S -(n) 0.324 3.000 S -( ) 6.324 3.000 S -(P) 9.324 3.000 S -(a) 15.998 3.000 S -(r) 21.324 3.000 S -(a) 25.320 3.000 S -(m) 30.646 3.000 S -(e) 39.980 3.000 S -(t) 45.306 3.000 S -(e) 48.640 3.000 S -(r) 53.966 3.000 S -(s) 57.962 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/HLMoperation.eps b/HTKBook/HTKFigs/HLMoperation.eps deleted file mode 100644 index ae80d4f..0000000 --- a/HTKBook/HTKFigs/HLMoperation.eps +++ /dev/null @@ -1,3128 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (IntroDiagram.eps) -%%CreationDate: 2/21/2002 2:02 AM -%%BoundingBox: 177 300 415 538 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentNeededFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -%%IncludeFont: Helvetica-Bold -%%IncludeFont: Helvetica-Oblique -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold -[/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Oblique Helvetica-Oblique -[/_Helvetica-Oblique/Helvetica-Oblique 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 182.3105 537.3711 m -179.791 537.3711 177.8711 535.4512 177.8711 533.0518 c -177.8711 506.6533 l -177.8711 504.2539 179.791 502.334 182.3105 502.334 c -269.9033 502.334 l -272.3027 502.334 274.2227 504.2539 274.2227 506.6533 c -274.2227 533.0518 l -274.2227 535.4512 272.3027 537.3711 269.9033 537.3711 c -182.3105 537.3711 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 182.3105 537.3711 m -179.791 537.3711 177.8711 535.4512 177.8711 533.0518 c -177.8711 506.6533 l -177.8711 504.2539 179.791 502.334 182.3105 502.334 c -269.9033 502.334 l -272.3027 502.334 274.2227 504.2539 274.2227 506.6533 c -274.2227 533.0518 l -274.2227 535.4512 272.3027 537.3711 269.9033 537.3711 c -182.3105 537.3711 l -s 0 To -1 0 0 1 191.4297 515.4131 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Bold 11.6789 Tf -0 Ts -100 Tz --5 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0584 Tc -0 Tw -(Tr) Tx -(\r) Tx -TO -0 To -1 0 0 1 203.1885 515.4131 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ai) Tx -(\r) Tx -TO -0 To -1 0 0 1 212.7881 515.4131 0 Tp -TP -0 Tr -0 Tt -0 Tc -(ning) Tx -(\r) Tx -TO -0 To -1 0 0 1 240.7461 515.4131 0 Tp -TP -0 Tr --4 Tt --0.0467 Tc -(te) Tx -(\r) Tx -TO -0 To -1 0 0 1 251.1846 515.4131 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(xt) Tx -(\r) Tx -TO -0 0 0 0 k -322.459 537.3711 m -320.0596 537.3711 318.0195 535.4512 318.0195 533.0518 c -318.0195 506.6533 l -318.0195 504.2539 320.0596 502.334 322.459 502.334 c -410.0518 502.334 l -412.4512 502.334 414.3711 504.2539 414.3711 506.6533 c -414.3711 533.0518 l -414.3711 535.4512 412.4512 537.3711 410.0518 537.3711 c -322.459 537.3711 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 322.459 537.3711 m -320.0596 537.3711 318.0195 535.4512 318.0195 533.0518 c -318.0195 506.6533 l -318.0195 504.2539 320.0596 502.334 322.459 502.334 c -410.0518 502.334 l -412.4512 502.334 414.3711 504.2539 414.3711 506.6533 c -414.3711 533.0518 l -414.3711 535.4512 412.4512 537.3711 410.0518 537.3711 c -322.459 537.3711 l -s 0 To -1 0 0 1 339.9775 515.4131 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 352.9365 515.4131 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 372.4951 515.4131 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(file) Tx -(\r) Tx -TO -0 To -1 0 0 1 387.4932 515.4131 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -177.8711 476.0566 m -414.3711 476.0566 l -414.3711 423.501 l -177.8711 423.501 l -177.8711 476.0566 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 177.8711 476.0566 m -177.8711 423.501 l -414.3711 423.501 l -414.3711 476.0566 l -177.8711 476.0566 l -s 0 To -1 0 0 1 188.0703 455.0576 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M (Vocabu) Tx -(\r) Tx -TO -0 To -1 0 0 1 227.5469 455.0576 0 Tp -TP -0 Tr -5 Tt -0.0584 Tc -(lary) Tx -(\r) Tx -TO -0 To -1 0 0 1 249.7451 455.0576 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(and) Tx -(\r) Tx -TO -0 To -1 0 0 1 272.4229 455.0576 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 280.9424 455.0576 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(as) Tx -(\r) Tx -TO -0 To -1 0 0 1 293.1816 455.0576 0 Tp -TP -0 Tr -281 Tt -3.2818 Tc -(sm) Tx -(\r) Tx -TO -0 To -1 0 0 1 312.1396 455.0576 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ap) Tx -(\r) Tx -TO -0 To -1 0 0 1 324.9785 455.0576 0 Tp -TP -0 Tr -(pi) Tx -(\r) Tx -TO -0 To -1 0 0 1 334.0986 455.0576 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ng,) Tx -(\r) Tx -TO -0 To -1 0 0 1 353.5361 455.0576 0 Tp -TP -0 Tr -(plus) Tx -(\r) Tx -TO -0 To -1 0 0 1 378.2549 455.0576 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 388.5732 455.0576 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 257.5439 441.7393 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(fi) Tx -(\r) Tx -TO -0 To -1 0 0 1 263.4238 441.7393 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(le) Tx -(\r) Tx -TO -0 To -1 0 0 1 275.7832 441.7393 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(se) Tx -(\r) Tx -TO -0 To -1 0 0 1 288.0225 441.7393 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(que) Tx -(\r) Tx -TO -0 To -1 0 0 1 307.5801 441.7393 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(nc) Tx -(\r) Tx -TO -0 To -1 0 0 1 319.8193 441.7393 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 328.9385 441.7393 0 Tp -TP -0 Tr -0 Tt -0 Tc -(g) Tx -(\r) Tx -TO -0 0 0 0 k -322.459 397.2227 m -320.0596 397.2227 318.0195 395.3027 318.0195 392.9033 c -318.0195 366.5059 l -318.0195 364.1055 320.0596 362.1855 322.459 362.1855 c -410.0518 362.1855 l -412.4512 362.1855 414.3711 364.1055 414.3711 366.5059 c -414.3711 392.9033 l -414.3711 395.3027 412.4512 397.2227 410.0518 397.2227 c -322.459 397.2227 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 322.459 397.2227 m -320.0596 397.2227 318.0195 395.3027 318.0195 392.9033 c -318.0195 366.5059 l -318.0195 364.1055 320.0596 362.1855 322.459 362.1855 c -410.0518 362.1855 l -412.4512 362.1855 414.3711 364.1055 414.3711 366.5059 c -414.3711 392.9033 l -414.3711 395.3027 412.4512 397.2227 410.0518 397.2227 c -322.459 397.2227 l -s 0 To -1 0 0 1 338.5381 375.1445 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Oblique 11.6789 Tf -(n) Tx -(\r) Tx -TO -0 To -1 0 0 1 344.8975 375.1445 0 Tp -TP -0 Tr -/_Helvetica 11.6789 Tf -1 Tt -0.0117 Tc -(-gra) Tx -(\r) Tx -TO -0 To -1 0 0 1 365.6553 375.1445 0 Tp -TP -0 Tr -287 Tt -3.3518 Tc -(mL) Tx -(\r) Tx -TO -0 To -1 0 0 1 385.0938 375.1445 0 Tp -TP -0 Tr -0 Tt -0 Tc -(M) Tx -(\r) Tx -TO -0 0 0 0 k -182.3105 397.2227 m -179.791 397.2227 177.8711 395.3027 177.8711 392.9033 c -177.8711 366.5059 l -177.8711 364.1055 179.791 362.1855 182.3105 362.1855 c -269.9033 362.1855 l -272.3027 362.1855 274.2227 364.1055 274.2227 366.5059 c -274.2227 392.9033 l -274.2227 395.3027 272.3027 397.2227 269.9033 397.2227 c -182.3105 397.2227 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 182.3105 397.2227 m -179.791 397.2227 177.8711 395.3027 177.8711 392.9033 c -177.8711 366.5059 l -177.8711 364.1055 179.791 362.1855 182.3105 362.1855 c -269.9033 362.1855 l -272.3027 362.1855 274.2227 364.1055 274.2227 366.5059 c -274.2227 392.9033 l -274.2227 395.3027 272.3027 397.2227 269.9033 397.2227 c -182.3105 397.2227 l -s 0 To -1 0 0 1 202.5889 375.2646 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Bold 11.6789 Tf --15 Tt --0.1752 Tc -(Te) Tx -(\r) Tx -TO -0 To -1 0 0 1 216.1475 375.2646 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(st) Tx -(\r) Tx -TO -0 To -1 0 0 1 229.8262 375.2646 0 Tp -TP -0 Tr -(text) Tx -(\r) Tx -TO -0 0 0 0 k -182.3105 335.9082 m -179.791 335.9082 177.8711 333.9883 177.8711 331.5879 c -177.8711 305.3105 l -177.8711 302.9111 179.791 300.8711 182.3105 300.8711 c -410.0518 300.8711 l -412.4512 300.8711 414.3711 302.9111 414.3711 305.3105 c -414.3711 331.5879 l -414.3711 333.9883 412.4512 335.9082 410.0518 335.9082 c -182.3105 335.9082 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 182.3105 335.9082 m -179.791 335.9082 177.8711 333.9883 177.8711 331.5879 c -177.8711 305.3105 l -177.8711 302.9111 179.791 300.8711 182.3105 300.8711 c -410.0518 300.8711 l -412.4512 300.8711 414.3711 302.9111 414.3711 305.3105 c -414.3711 331.5879 l -414.3711 333.9883 412.4512 335.9082 410.0518 335.9082 c -182.3105 335.9082 l -s 0 To -1 0 0 1 270.9834 313.9502 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --2 Tt --0.0234 Tc -(Perplexi) Tx -(\r) Tx -TO -0 To -1 0 0 1 313.2197 313.9502 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ty) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -274.2227 520.2129 m -313.2197 520.2129 l -313.3398 520.2129 313.5801 519.9727 313.5801 519.8525 c -313.5801 519.6123 313.3398 519.373 313.2197 519.373 c -274.2227 519.4922 l -273.9834 519.4922 273.8633 519.6123 273.8633 519.8525 c -273.8633 520.0928 273.9834 520.2129 274.2227 520.2129 c -274.2227 520.2129 l -f 312.2598 524.6523 m -318.0195 519.7324 l -312.1396 514.9326 l -312.2598 524.6523 l -f *U -*u -366.375 501.9746 m -300.8613 477.4961 l -300.6211 477.376 300.3809 477.4961 300.3809 477.6162 c -300.2607 477.8564 300.3809 478.0957 300.6211 478.0957 c -366.1357 502.6943 l -366.2559 502.6943 366.4951 502.6943 366.6152 502.4541 c -366.6152 502.2139 366.4951 502.0938 366.375 501.9746 c -366.375 501.9746 l -f 303.2607 473.5361 m -296.1816 476.0566 l -299.9014 482.6553 l -303.2607 473.5361 l -f *U -*u -296.3018 423.8604 m -361.8154 399.2627 l -361.9355 399.2627 362.0557 399.0225 362.0557 398.7832 c -361.9355 398.6631 361.6963 398.543 361.5762 398.6631 c -296.0615 423.1406 l -295.8213 423.2607 295.7012 423.501 295.8213 423.6211 c -295.8213 423.8604 296.0615 423.9805 296.3018 423.8604 c -296.3018 423.8604 l -f 362.416 403.8223 m -366.2559 397.2227 l -359.0557 394.7031 l -362.416 403.8223 l -f *U -*u -226.2266 362.5459 m -291.7412 337.9482 l -291.8613 337.9482 291.9814 337.708 291.8613 337.4678 c -291.8613 337.3477 291.6221 337.2275 291.502 337.3477 c -225.9873 361.8262 l -225.7471 361.9453 225.627 362.0654 225.7471 362.3057 c -225.7471 362.4258 225.9873 362.5459 226.2266 362.5459 c -226.2266 362.5459 l -f 292.3418 342.5078 m -296.1816 335.9082 l -288.9814 333.3877 l -292.3418 342.5078 l -f *U -*u -366.375 361.8262 m -300.8613 337.3477 l -300.6211 337.2275 300.3809 337.3477 300.3809 337.4678 c -300.2607 337.708 300.3809 337.9482 300.6211 337.9482 c -366.1357 362.5459 l -366.2559 362.5459 366.4951 362.4258 366.6152 362.3057 c -366.6152 362.0654 366.4951 361.9453 366.375 361.8262 c -366.375 361.8262 l -f 303.2607 333.3877 m -296.1816 335.9082 l -299.9014 342.5078 l -303.2607 333.3877 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/HTKFormat.eps b/HTKBook/HTKFigs/HTKFormat.eps deleted file mode 100644 index 3cf492f..0000000 --- a/HTKBook/HTKFigs/HTKFormat.eps +++ /dev/null @@ -1,4998 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: HTKFormat.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/6/94 2:47:27 p.m. -%%BoundingBox: 14.750 588.250 468.750 765.750 -%%QDBoundingBox: 14.750 26.250 468.750 203.750 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 48.250 90.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 48.250 108.250 0.000 0.000 18.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 55.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 61.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 55.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 61.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 53.250 143.250 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -151.750 59.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -8.250 3.000 S -( ) -4.749 3.000 S -(¥) -2.249 3.000 S -( ) 1.251 3.000 S -(¥) 3.751 3.000 S -( ) 7.252 3.000 S -( ) 9.752 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 55.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 61.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 66.250 126.250 48.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.250 90.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.250 108.250 0.000 0.000 18.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 82.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 88.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 82.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 88.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 82.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 88.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 93.250 126.250 75.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.250 198.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.250 204.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -208.250 83.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 90.250 0.000 0.000 18.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 109.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 115.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 109.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 115.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 109.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 115.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 120.250 126.250 102.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.250 15.250 0.000 0.000 12.000 34.000 rect -%@EndRect -gsave -32.250 57.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -16.250 4.000 S -(P) -8.919 4.000 S -(C) -2.246 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.250 15.250 0.000 0.000 12.000 58.583 rect -%@EndRect -gsave -44.541 83.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -29.250 4.000 S -(P) -21.919 4.000 S -(C) -15.246 4.000 S -(_) -7.242 4.000 S -(E) -1.242 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 15.250 0.000 0.000 12.000 60.166 rect -%@EndRect -gsave -45.333 109.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -29.250 4.000 S -(P) -21.919 4.000 S -(C) -15.246 4.000 S -(_) -7.242 4.000 S -(D) -1.242 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 15.250 0.000 0.000 12.000 80.750 rect -%@EndRect -gsave -55.625 136.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -40.250 4.000 S -(P) -32.919 4.000 S -(C) -26.246 4.000 S -(_) -18.242 4.000 S -(E) -12.242 4.000 S -(_) -4.912 4.000 S -(D) 1.087 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.250 15.250 0.000 0.000 12.000 104.500 rect -%@EndRect -gsave -67.500 165.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -52.250 4.000 S -(P) -44.919 4.000 S -(C) -38.246 4.000 S -(_) -30.242 4.000 S -(E) -24.242 4.000 S -(_) -16.912 4.000 S -(D) -10.912 4.000 S -(_) -2.246 4.000 S -(N) 3.753 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 216.250 0.000 0.000 18.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 234.250 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.250 209.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -212.250 116.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.250 226.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -229.750 116.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.250 298.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -302.750 116.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.250 120.250 198.250 102.250 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.750 199.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -206.250 109.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -206.250 109.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 217.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -223.750 109.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -223.750 109.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 289.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -295.750 109.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -295.750 109.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 108.250 0.000 0.000 18.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 136.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 142.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 136.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 142.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 136.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 142.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 147.250 126.250 129.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 198.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.250 204.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -208.250 137.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 216.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 216.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 227.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -230.250 143.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 244.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -247.750 143.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 316.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -320.750 143.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.250 147.250 180.250 129.250 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.750 217.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -224.250 136.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -224.250 136.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 235.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -241.750 136.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -241.750 136.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 307.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -313.750 136.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -313.750 136.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 129.250 306.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.250 327.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -333.750 137.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -333.750 137.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 198.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 216.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.250 209.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -212.250 170.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.250 226.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -229.750 170.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.250 298.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -302.750 170.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.250 174.250 234.250 156.250 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.750 199.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -206.250 163.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -206.250 163.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 217.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -223.750 163.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -223.750 163.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 289.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -295.750 163.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -295.750 163.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 288.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.250 309.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -315.750 164.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -315.750 164.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 108.250 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 163.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 163.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 169.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 163.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 163.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 169.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 163.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 163.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 169.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 174.250 126.250 156.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 84.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 111.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.250 252.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -261.250 111.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.250 147.250 234.250 129.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.250 147.250 252.250 129.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 138.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.250 270.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -279.250 138.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 165.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.250 252.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -261.250 165.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 15.250 0.000 0.000 12.000 66.000 rect -%@EndRect -gsave -48.250 190.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -32.250 4.000 S -(P) -24.919 4.000 S -(C) -18.246 4.000 S -(_) -10.242 4.000 S -(E) -4.242 4.000 S -(_) 3.087 4.000 S -(D) 9.087 4.000 S -(_) 17.753 4.000 S -(A) 23.753 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 108.250 0.000 0.000 18.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 196.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 196.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 196.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 201.250 126.250 183.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 198.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.250 204.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -208.250 191.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.250 201.250 180.250 183.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 192.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 216.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 216.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 227.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -230.250 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 244.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -247.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 316.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -320.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.750 217.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -224.250 190.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -224.250 190.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 235.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -241.750 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -241.750 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 307.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -313.750 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -313.750 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 183.250 306.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.250 327.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -333.750 191.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -333.750 191.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.250 201.250 234.250 183.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.250 201.250 252.250 183.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.250 270.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -279.250 192.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.750 237.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -241.750 32.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.750 244.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -246.750 38.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.750 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 28.750 256.750 0.000 0.000 12.000 75.000 rect -%@EndRect -gsave -294.250 34.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -36.750 3.000 S -(a) -30.080 3.000 S -(s) -25.641 3.000 S -(i) -21.750 3.000 S -(c) -18.971 3.000 S -( ) -14.533 3.000 S -(C) -12.033 3.000 S -(o) -5.363 3.000 S -(e) -0.363 3.000 S -(f) 4.075 3.000 S -(f) 7.405 3.000 S -(i) 10.735 3.000 S -(c) 13.513 3.000 S -(i) 17.952 3.000 S -(e) 20.730 3.000 S -(n) 25.168 3.000 S -(t) 30.168 3.000 S -(s) 32.947 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.750 238.750 0.000 0.000 12.000 68.000 rect -%@EndRect -gsave -272.750 49.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -33.750 3.000 S -( ) -27.641 3.000 S -( ) -25.141 3.000 S -( ) -22.641 3.000 S -( ) -20.141 3.000 S -( ) -17.641 3.000 S -(L) -15.141 3.000 S -(o) -9.033 3.000 S -(g) -4.033 3.000 S -( ) 0.966 3.000 S -(E) 3.466 3.000 S -(n) 9.575 3.000 S -(e) 14.575 3.000 S -(r) 19.013 3.000 S -(g) 22.343 3.000 S -(y) 27.343 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.750 272.250 0.000 0.000 12.000 72.000 rect -%@EndRect -gsave -308.250 65.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -35.250 3.000 S -(e) -28.028 3.000 S -(l) -23.589 3.000 S -(t) -20.811 3.000 S -(a) -18.033 3.000 S -( ) -13.594 3.000 S -(c) -11.094 3.000 S -(o) -6.656 3.000 S -(e) -1.656 3.000 S -(f) 2.782 3.000 S -(f) 6.112 3.000 S -(i) 9.442 3.000 S -(c) 12.220 3.000 S -(i) 16.659 3.000 S -(e) 19.437 3.000 S -(n) 23.875 3.000 S -(t) 28.875 3.000 S -(s) 31.654 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 60.250 255.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -262.250 66.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -262.250 66.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.808 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 65.250 246.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -248.750 71.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.750 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 60.250 235.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -242.250 66.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -242.250 66.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.250 250.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -252.750 67.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(,) -1.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.750 272.250 0.000 0.000 12.000 102.000 rect -%@EndRect -gsave -323.250 83.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -50.250 3.000 S -(c) -43.028 3.000 S -(c) -38.589 3.000 S -(e) -34.151 3.000 S -(l) -29.712 3.000 S -(e) -26.934 3.000 S -(r) -22.496 3.000 S -(a) -19.166 3.000 S -(t) -14.727 3.000 S -(i) -11.949 3.000 S -(o) -9.170 3.000 S -(n) -4.170 3.000 S -( ) 0.829 3.000 S -(c) 3.329 3.000 S -(o) 7.767 3.000 S -(e) 12.767 3.000 S -(f) 17.206 3.000 S -(f) 20.536 3.000 S -(i) 23.866 3.000 S -(c) 26.644 3.000 S -(i) 31.083 3.000 S -(e) 33.861 3.000 S -(n) 38.299 3.000 S -(t) 43.299 3.000 S -(s) 46.078 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.250 255.750 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -262.750 84.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.750 3.000 S -grestore -restore -save -gsave -262.750 84.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.631 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 246.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -248.750 89.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.750 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.250 235.750 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -242.750 84.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.750 3.000 S -grestore -restore -save -gsave -242.750 84.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.631 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.250 250.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -252.750 85.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(,) -1.750 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 342.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 342.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 353.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -356.250 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 370.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -373.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 442.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -446.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.750 343.750 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -350.750 190.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.750 3.000 S -grestore -restore -save -gsave -350.750 190.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.631 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 361.250 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -368.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.250 3.000 S -grestore -restore -save -gsave -368.250 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.131 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 433.250 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -440.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.250 3.000 S -grestore -restore -save -gsave -440.250 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.131 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 183.250 432.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.250 453.250 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -460.250 191.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.250 3.000 S -grestore -restore -save -gsave -460.250 191.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.131 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.250 201.250 360.250 183.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.250 201.250 378.250 183.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.250 396.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -405.250 192.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/LTool.eps b/HTKBook/HTKFigs/LTool.eps deleted file mode 100644 index 32aeb7d..0000000 --- a/HTKBook/HTKFigs/LTool.eps +++ /dev/null @@ -1,3670 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (BlockDiagram.eps) -%%CreationDate: 2/21/2002 2:24 AM -%%BoundingBox: 85 322 507 516 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%DocumentNeededFonts: Helvetica -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 96.8174 366.6865 m -85.8984 355.7666 l -85.8984 323.0088 l -145.0537 323.0088 l -155.9727 333.9287 l -155.9727 366.6865 l -96.8174 366.6865 l -f 85.8984 355.7666 m -145.0537 355.7666 l -155.9727 366.6865 l -96.8174 366.6865 l -85.8984 355.7666 l -f 0.1843 0.1255 0.102 0.0118 k -145.0537 355.7666 m -155.9727 366.6865 l -155.9727 333.9287 l -145.0537 323.0088 l -145.0537 355.7666 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 96.8174 366.6865 m -85.8984 355.7666 l -85.8984 323.0088 l -145.0537 323.0088 l -155.9727 333.9287 l -155.9727 366.6865 l -96.8174 366.6865 l -s 85.8984 355.7666 m -145.0537 355.7666 l -155.9727 366.6865 l -S 0 D -145.0537 355.7666 m -145.0537 323.0088 l -S *U -0 To -1 0 0 1 105.2168 336.8076 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(LUti) Tx -(\r) Tx -TO -0 To -1 0 0 1 125.9746 336.8076 0 Tp -TP -0 Tr -0 Tt -0 Tc -(l) Tx -(\r) Tx -TO -0 0 0 0 k -96.8174 401.7236 m -85.8984 390.8037 l -85.8984 357.9268 l -145.0537 357.9268 l -155.9727 368.8447 l -155.9727 401.7236 l -96.8174 401.7236 l -f 85.8984 390.8037 m -145.0537 390.8037 l -155.9727 401.7236 l -96.8174 401.7236 l -85.8984 390.8037 l -f 0.1843 0.1255 0.102 0.0118 k -145.0537 390.8037 m -155.9727 401.7236 l -155.9727 368.8447 l -145.0537 357.9268 l -145.0537 390.8037 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 96.8174 401.7236 m -85.8984 390.8037 l -85.8984 357.9268 l -145.0537 357.9268 l -155.9727 368.8447 l -155.9727 401.7236 l -96.8174 401.7236 l -s 85.8984 390.8037 m -145.0537 390.8037 l -155.9727 401.7236 l -S 0 D -145.0537 390.8037 m -145.0537 357.9268 l -S *U -0 To -1 0 0 1 98.2568 371.7256 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -12 Tt --0.1401 Tc -(LP) Tx -(\r) Tx -TO -0 To -1 0 0 1 112.416 371.7256 0 Tp -TP -0 Tr -1 Tt -0.0117 Tc -(Calc) Tx -(\r) Tx -TO -0 0 0 0 k -96.8174 436.7598 m -85.8984 425.8408 l -85.8984 392.9639 l -145.0537 392.9639 l -155.9727 403.8818 l -155.9727 436.7598 l -96.8174 436.7598 l -f 85.8984 425.8408 m -145.0537 425.8408 l -155.9727 436.7598 l -96.8174 436.7598 l -85.8984 425.8408 l -f 0.1843 0.1255 0.102 0.0118 k -145.0537 425.8408 m -155.9727 436.7598 l -155.9727 403.8818 l -145.0537 392.9639 l -145.0537 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 96.8174 436.7598 m -85.8984 425.8408 l -85.8984 392.9639 l -145.0537 392.9639 l -155.9727 403.8818 l -155.9727 436.7598 l -96.8174 436.7598 l -s 85.8984 425.8408 m -145.0537 425.8408 l -155.9727 436.7598 l -S 0 D -145.0537 425.8408 m -145.0537 392.9639 l -S *U -0 To -1 0 0 1 97.8975 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -12 Tt --0.1401 Tc -(LM) Tx -(\r) Tx -TO -0 To -1 0 0 1 114.0957 406.7627 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(odel) Tx -(\r) Tx -TO -0 0 0 0 k -170.251 414.5615 m -147.2129 391.6436 l -147.2129 322.6494 l -328.998 322.6494 l -351.916 345.6865 l -351.916 414.5615 l -170.251 414.5615 l -f 147.2129 391.6436 m -328.998 391.6436 l -351.916 414.5615 l -170.251 414.5615 l -147.2129 391.6436 l -f 0.1843 0.1255 0.102 0.0118 k -328.998 391.6436 m -351.916 414.5615 l -351.916 345.6865 l -328.998 322.6494 l -328.998 391.6436 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 170.251 414.5615 m -147.2129 391.6436 l -147.2129 322.6494 l -328.998 322.6494 l -351.916 345.6865 l -351.916 414.5615 l -170.251 414.5615 l -s 147.2129 391.6436 m -328.998 391.6436 l -351.916 414.5615 l -S 0 D -328.998 391.6436 m -328.998 322.6494 l -S *U -0 To -1 0 0 1 159.4521 353.2471 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -3 Tt --0.035 Tc -(HT) Tx -(\r) Tx -TO -0 To -1 0 0 1 174.9307 353.2471 0 Tp -TP -0 Tr -289 Tt -3.3752 Tc -(KL) Tx -(\r) Tx -TO -0 To -1 0 0 1 192.4492 353.2471 0 Tp -TP -0 Tr -9 Tt -0.1051 Tc -(an) Tx -(\r) Tx -TO -0 To -1 0 0 1 205.4082 353.2471 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(guage) Tx -(\r) Tx -TO -0 To -1 0 0 1 241.166 353.2471 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(Mode) Tx -(\r) Tx -TO -0 To -1 0 0 1 270.3232 353.2471 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(ll) Tx -(\r) Tx -TO -0 To -1 0 0 1 275.6025 353.2471 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 284.6016 353.2471 0 Tp -TP -0 Tr -276 Tt -3.2234 Tc -(gt) Tx -(\r) Tx -TO -0 To -1 0 0 1 297.5605 353.2471 0 Tp -TP -0 Tr -9 Tt -0.1051 Tc -(oo) Tx -(\r) Tx -TO -0 To -1 0 0 1 310.5195 353.2471 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(ls) Tx -(\r) Tx -TO -0.0784 0.0549 0.0392 0 k -158.1318 436.7598 m -147.2129 425.8408 l -147.2129 392.9639 l -206.3682 392.9639 l -217.2871 403.8818 l -217.2871 436.7598 l -158.1318 436.7598 l -f 0.0588 0.0392 0.0314 0 k -147.2129 425.8408 m -206.3682 425.8408 l -217.2871 436.7598 l -158.1318 436.7598 l -147.2129 425.8408 l -f 0.2431 0.1686 0.1373 0.0235 k -206.3682 425.8408 m -217.2871 436.7598 l -217.2871 403.8818 l -206.3682 392.9639 l -206.3682 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 158.1318 436.7598 m -147.2129 425.8408 l -147.2129 392.9639 l -206.3682 392.9639 l -217.2871 403.8818 l -217.2871 436.7598 l -158.1318 436.7598 l -s 147.2129 425.8408 m -206.3682 425.8408 l -217.2871 436.7598 l -S 0 D -206.3682 425.8408 m -206.3682 392.9639 l -S *U -0 To -1 0 0 1 157.292 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -1 Tt --0.0117 Tc -(LG) Tx -(\r) Tx -TO -0 To -1 0 0 1 172.7715 406.7627 0 Tp -TP -0 Tr -11 Tt -0.1285 Tc -(Ba) Tx -(\r) Tx -TO -0 To -1 0 0 1 187.0498 406.7627 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(se) Tx -(\r) Tx -TO -0.0784 0.0549 0.0392 0 k -219.4473 436.7598 m -208.5283 425.8408 l -208.5283 392.9639 l -267.6836 392.9639 l -278.6025 403.8818 l -278.6025 436.7598 l -219.4473 436.7598 l -f 0.0588 0.0392 0.0314 0 k -208.5283 425.8408 m -267.6836 425.8408 l -278.6025 436.7598 l -219.4473 436.7598 l -208.5283 425.8408 l -f 0.2431 0.1686 0.1373 0.0235 k -267.6836 425.8408 m -278.6025 436.7598 l -278.6025 403.8818 l -267.6836 392.9639 l -267.6836 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 219.4473 436.7598 m -208.5283 425.8408 l -208.5283 392.9639 l -267.6836 392.9639 l -278.6025 403.8818 l -278.6025 436.7598 l -219.4473 436.7598 l -s 208.5283 425.8408 m -267.6836 425.8408 l -278.6025 436.7598 l -S 0 D -267.6836 425.8408 m -267.6836 392.9639 l -S *U -0 To -1 0 0 1 219.4473 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -22 Tt --0.2569 Tc -(LW) Tx -(\r) Tx -TO -0 To -1 0 0 1 237.2061 406.7627 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 253.2842 406.7627 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0.0784 0.0549 0.0392 0 k -280.7627 436.7598 m -269.8428 425.8408 l -269.8428 392.9639 l -328.998 392.9639 l -339.917 403.8818 l -339.917 436.7598 l -280.7627 436.7598 l -f 0.0588 0.0392 0.0314 0 k -269.8428 425.8408 m -328.998 425.8408 l -339.917 436.7598 l -280.7627 436.7598 l -269.8428 425.8408 l -f 0.2431 0.1686 0.1373 0.0235 k -328.998 425.8408 m -339.917 436.7598 l -339.917 403.8818 l -328.998 392.9639 l -328.998 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 280.7627 436.7598 m -269.8428 425.8408 l -269.8428 392.9639 l -328.998 392.9639 l -339.917 403.8818 l -339.917 436.7598 l -280.7627 436.7598 l -s 269.8428 425.8408 m -328.998 425.8408 l -339.917 436.7598 l -S 0 D -328.998 425.8408 m -328.998 392.9639 l -S *U -0 To -1 0 0 1 282.2021 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -12 Tt --0.1401 Tc -(LC) Tx -(\r) Tx -TO -0 To -1 0 0 1 296.9609 406.7627 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 313.2793 406.7627 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -342.0771 366.6865 m -331.1582 355.7666 l -331.1582 322.8896 l -390.3135 322.8896 l -401.2324 333.8076 l -401.2324 366.6865 l -342.0771 366.6865 l -f 331.1582 355.7666 m -390.3135 355.7666 l -401.2324 366.6865 l -342.0771 366.6865 l -331.1582 355.7666 l -f 0.1843 0.1255 0.102 0.0118 k -390.3135 355.7666 m -401.2324 366.6865 l -401.2324 333.8076 l -390.3135 322.8896 l -390.3135 355.7666 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 342.0771 366.6865 m -331.1582 355.7666 l -331.1582 322.8896 l -390.3135 322.8896 l -401.2324 333.8076 l -401.2324 366.6865 l -342.0771 366.6865 l -s 331.1582 355.7666 m -390.3135 355.7666 l -401.2324 366.6865 l -S 0 D -390.3135 355.7666 m -390.3135 322.8896 l -S *U -0 To -1 0 0 1 345.0771 336.6885 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -2 Tt --0.0234 Tc -(HMem) Tx -(\r) Tx -TO -0 0 0 0 k -342.0771 401.7236 m -331.1582 390.8037 l -331.1582 358.0459 l -390.3135 358.0459 l -401.2324 368.9658 l -401.2324 401.7236 l -342.0771 401.7236 l -f 331.1582 390.8037 m -390.3135 390.8037 l -401.2324 401.7236 l -342.0771 401.7236 l -331.1582 390.8037 l -f 0.1843 0.1255 0.102 0.0118 k -390.3135 390.8037 m -401.2324 401.7236 l -401.2324 368.9658 l -390.3135 358.0459 l -390.3135 390.8037 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 342.0771 401.7236 m -331.1582 390.8037 l -331.1582 358.0459 l -390.3135 358.0459 l -401.2324 368.9658 l -401.2324 401.7236 l -342.0771 401.7236 l -s 331.1582 390.8037 m -390.3135 390.8037 l -401.2324 401.7236 l -S 0 D -390.3135 390.8037 m -390.3135 358.0459 l -S *U -0 To -1 0 0 1 344.957 371.8447 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -3 Tt --0.035 Tc -(HS) Tx -(\r) Tx -TO -0 To -1 0 0 1 361.2754 371.8447 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(he) Tx -(\r) Tx -TO -0 To -1 0 0 1 374.1143 371.8447 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(ll) Tx -(\r) Tx -TO -0 0 0 0 k -342.0771 436.7598 m -331.1582 425.8408 l -331.1582 392.9639 l -390.3135 392.9639 l -401.2324 403.8818 l -401.2324 436.7598 l -342.0771 436.7598 l -f 331.1582 425.8408 m -390.3135 425.8408 l -401.2324 436.7598 l -342.0771 436.7598 l -331.1582 425.8408 l -f 0.1843 0.1255 0.102 0.0118 k -390.3135 425.8408 m -401.2324 436.7598 l -401.2324 403.8818 l -390.3135 392.9639 l -390.3135 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 342.0771 436.7598 m -331.1582 425.8408 l -331.1582 392.9639 l -390.3135 392.9639 l -401.2324 403.8818 l -401.2324 436.7598 l -342.0771 436.7598 l -s 331.1582 425.8408 m -390.3135 425.8408 l -401.2324 436.7598 l -S 0 D -390.3135 425.8408 m -390.3135 392.9639 l -S *U -0 To -1 0 0 1 347.957 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -1 Tt --0.0117 Tc -(HDict) Tx -(\r) Tx -TO -0 0 0 0 k -85.8984 515.5933 m -155.9727 515.5933 l -155.9727 471.7969 l -85.8984 471.7969 l -85.8984 515.5933 l -f 0 To -1 0 0 1 95.3779 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k -(Langu) Tx -(\r) Tx -TO -0 To -1 0 0 1 127.8945 494.9551 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ag) Tx -(\r) Tx -TO -0 To -1 0 0 1 140.8535 494.9551 0 Tp -TP -0 Tr -0 Tt -0 Tc -(e) Tx -(\r) Tx -TO -0 To -1 0 0 1 105.457 481.5161 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(Mode) Tx -(\r) Tx -TO -0 To -1 0 0 1 134.4941 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(l) Tx -(\r) Tx -TO -0 0 0 0 k -155.9727 515.5933 m -217.2871 515.5933 l -217.2871 471.7969 l -155.9727 471.7969 l -155.9727 515.5933 l -f 0 To -1 0 0 1 172.4111 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k --2 Tt --0.0234 Tc -(Clas) Tx -(\r) Tx -TO -0 To -1 0 0 1 195.6895 494.9551 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 To -1 0 0 1 175.6504 481.5161 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 191.8496 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -217.2871 515.5933 m -278.6025 515.5933 l -278.6025 471.917 l -217.2871 471.917 l -217.2871 515.5933 l -f 0 To -1 0 0 1 234.3262 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k -32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 252.085 494.9551 0 Tp -TP -0 Tr --4 Tt --0.0467 Tc -(rd) Tx -(\r) Tx -TO -0 To -1 0 0 1 236.9658 481.5161 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 253.165 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -269.8428 515.5933 m -331.1582 515.5933 l -331.1582 471.917 l -269.8428 471.917 l -269.8428 515.5933 l -f 0 To -1 0 0 1 286.2822 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 299.2412 494.9551 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 290.4814 481.5161 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(fi) Tx -(\r) Tx -TO -0 To -1 0 0 1 296.2412 481.5161 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(le) Tx -(\r) Tx -TO -0 To -1 0 0 1 305.3604 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -331.1582 506.834 m -404.2324 506.834 l -404.2324 463.0376 l -331.1582 463.0376 l -331.1582 506.834 l -f 0 To -1 0 0 1 342.0771 486.3154 0 Tp -TP -0 Tr -0 0 0 1 k -(Dict) Tx -(\r) Tx -TO -0 To -1 0 0 1 362.1152 486.3154 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(io) Tx -(\r) Tx -TO -0 To -1 0 0 1 371.2344 486.3154 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(nar) Tx -(\r) Tx -TO -0 To -1 0 0 1 388.1533 486.3154 0 Tp -TP -0 Tr -0 Tt -0 Tc -(y) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -182.6104 466.9971 m -182.6104 450.4385 l -182.6104 450.1987 182.4902 450.0786 182.25 450.0786 c -182.1299 450.0786 181.8906 450.1987 181.8906 450.4385 c -181.8906 466.9971 l -181.8906 467.2373 182.0107 467.3574 182.25 467.3574 c -182.4902 467.3574 182.6104 467.2373 182.6104 466.9971 c -182.6104 466.9971 l -f 179.3701 466.0376 m -182.25 471.917 l -185.25 466.0376 l -179.3701 466.0376 l -f 185.25 451.3984 m -182.3701 445.6392 l -179.3701 451.3984 l -185.25 451.3984 l -f *U -*u -243.9258 466.9971 m -244.0449 450.4385 l -244.0449 450.1987 243.8057 450.0786 243.5654 450.0786 c -243.4453 450.0786 243.2051 450.1987 243.2051 450.4385 c -243.2051 466.9971 l -243.2051 467.2373 243.4453 467.3574 243.5654 467.3574 c -243.8057 467.3574 243.9258 467.2373 243.9258 466.9971 c -243.9258 466.9971 l -f 240.6855 466.0376 m -243.5654 471.917 l -246.5654 466.0376 l -240.6855 466.0376 l -f 246.5654 451.3984 m -243.6855 445.6392 l -240.6855 451.3984 l -246.5654 451.3984 l -f *U -*u -305.2402 466.9971 m -305.3604 450.4385 l -305.3604 450.1987 305.1201 450.0786 304.8799 450.0786 c -304.7607 450.0786 304.5205 450.1987 304.5205 450.4385 c -304.5205 466.9971 l -304.5205 467.2373 304.7607 467.3574 304.8799 467.3574 c -305.1201 467.3574 305.2402 467.2373 305.2402 466.9971 c -305.2402 466.9971 l -f 302.001 466.0376 m -304.8799 471.917 l -307.8799 466.0376 l -302.001 466.0376 l -f 307.8799 451.3984 m -305 445.6392 l -302.001 451.3984 l -307.8799 451.3984 l -f *U -*u -366.5547 466.9971 m -366.6748 450.4385 l -366.6748 450.1987 366.4355 450.0786 366.3154 450.0786 c -366.0752 450.0786 365.835 450.1987 365.835 450.4385 c -365.835 466.9971 l -365.835 467.2373 366.0752 467.3574 366.1953 467.3574 c -366.4355 467.3574 366.5547 467.2373 366.5547 466.9971 c -366.5547 466.9971 l -f 363.3154 466.0376 m -366.1953 471.917 l -369.1953 466.0376 l -363.3154 466.0376 l -f 369.1953 451.3984 m -366.3154 445.6392 l -363.3154 451.3984 l -369.1953 451.3984 l -f *U -*u -121.2949 466.9971 m -121.2949 450.4385 l -121.2949 450.1987 121.1758 450.0786 120.9355 450.0786 c -120.8154 450.0786 120.5752 450.1987 120.5752 450.4385 c -120.5752 466.9971 l -120.5752 467.2373 120.6953 467.3574 120.9355 467.3574 c -121.1758 467.3574 121.2949 467.2373 121.2949 466.9971 c -121.2949 466.9971 l -f 118.0557 466.0376 m -120.9355 471.917 l -123.8154 466.0376 l -118.0557 466.0376 l -f 123.9355 451.3984 m -120.9355 445.6392 l -118.0557 451.3984 l -123.9355 451.3984 l -f *U -0 0 0 0 k -418.751 401.7236 m -506.3438 401.7236 l -506.3438 357.9268 l -418.751 357.9268 l -418.751 401.7236 l -f 0 To -1 0 0 1 440.2295 381.085 0 Tp -TP -0 Tr -0 0 0 1 k --5 Tt --0.0584 Tc -(Term) Tx -(\r) Tx -TO -0 To -1 0 0 1 467.3467 381.085 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 476.4658 381.085 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(al) Tx -(\r) Tx -TO -0 To -1 0 0 1 432.4297 367.6455 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 441.5488 367.6455 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(pu) Tx -(\r) Tx -TO -0 To -1 0 0 1 454.3877 367.6455 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(t/) Tx -(\r) Tx -TO -0 To -1 0 0 1 460.9873 367.6455 0 Tp -TP -0 Tr -2 Tt -0.0234 Tc -(outpu) Tx -(\r) Tx -TO -0 To -1 0 0 1 490.1445 367.6455 0 Tp -TP -0 Tr -0 Tt -0 Tc -(t) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -422.71 375.085 m -414.9111 374.9658 l -414.6709 374.9658 414.5508 375.2041 414.5508 375.3252 c -414.5508 375.5654 414.6709 375.6846 414.9111 375.6846 c -422.71 375.8057 l -422.8301 375.8057 423.0703 375.5654 423.0703 375.4443 c -423.0703 375.2041 422.8301 375.085 422.71 375.085 c -422.71 375.085 l -f 421.6309 378.3252 m -427.5098 375.4443 l -421.751 372.4443 l -421.6309 378.3252 l -f 415.8711 372.4443 m -409.9912 375.3252 l -415.8711 378.3252 l -415.8711 372.4443 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/MMFeg.eps b/HTKBook/HTKFigs/MMFeg.eps deleted file mode 100644 index efd4f62..0000000 --- a/HTKBook/HTKFigs/MMFeg.eps +++ /dev/null @@ -1,1193 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: MMFeg.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:3/17/97 10:39:20 p.m. -%%BoundingBox: 26 593 334 765 -%%QDBoundingBox: 26.500 27.500 333.513 198.500 -%%DocumentFonts: -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=F tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 36.500 0.000 0.000 13.000 32.405 rect -%@EndRect -gsave -52.702 34.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -16.000 4.000 S -(a) -10.599 4.000 S -(c) -5.198 4.000 S -(r) 0.202 4.000 S -(o) 5.603 4.000 S -(s) 11.004 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 50.500 36.500 0.000 0.000 73.000 135.013 rect -%@EndRect -gsave -104.006 87.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 -26.000 S -(o) -61.599 -26.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -14.000 S -( ) -61.599 -14.000 S -( ) -56.198 -14.000 S -(<) -50.797 -14.000 S -(V) -45.396 -14.000 S -(e) -39.995 -14.000 S -(c) -34.594 -14.000 S -(S) -29.193 -14.000 S -(i) -23.792 -14.000 S -(z) -18.392 -14.000 S -(e) -12.991 -14.000 S -(>) -7.590 -14.000 S -( ) -2.189 -14.000 S -(3) 3.211 -14.000 S -(9) 8.612 -14.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -2.000 S -( ) -61.599 -2.000 S -( ) -56.198 -2.000 S -(<) -50.797 -2.000 S -(M) -45.396 -2.000 S -(F) -39.995 -2.000 S -(C) -34.594 -2.000 S -(C) -29.193 -2.000 S -(_) -23.792 -2.000 S -(0) -18.392 -2.000 S -(_) -12.991 -2.000 S -(D) -7.590 -2.000 S -(_) -2.189 -2.000 S -(A) 3.211 -2.000 S -(>) 8.612 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 10.000 S -(v) -61.599 10.000 S -( ) -56.198 10.000 S -(") -50.797 10.000 S -(v) -45.396 10.000 S -(a) -39.995 10.000 S -(r) -34.594 10.000 S -(F) -29.193 10.000 S -(l) -23.792 10.000 S -(o) -18.392 10.000 S -(o) -12.991 10.000 S -(r) -7.590 10.000 S -(1) -2.189 10.000 S -(") 3.211 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 22.000 S -( ) -61.599 22.000 S -( ) -56.198 22.000 S -(<) -50.797 22.000 S -(V) -45.396 22.000 S -(a) -39.995 22.000 S -(r) -34.594 22.000 S -(i) -29.193 22.000 S -(a) -23.792 22.000 S -(n) -18.392 22.000 S -(c) -12.991 22.000 S -(e) -7.590 22.000 S -(>) -2.189 22.000 S -( ) 3.211 22.000 S -(3) 8.612 22.000 S -(9) 14.013 22.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 34.000 S -( ) -61.599 34.000 S -( ) -56.198 34.000 S -( ) -50.797 34.000 S -( ) -45.396 34.000 S -( ) -39.995 34.000 S -(0) -34.594 34.000 S -(.) -29.193 34.000 S -(0) -23.792 34.000 S -(0) -18.392 34.000 S -(1) -12.991 34.000 S -(2) -7.590 34.000 S -( ) -2.189 34.000 S -(0) 3.211 34.000 S -(.) 8.612 34.000 S -(0) 14.013 34.000 S -(0) 19.414 34.000 S -(0) 24.814 34.000 S -(3) 30.215 34.000 S -( ) 35.616 34.000 S -(.) 41.017 34.000 S -(.) 46.418 34.000 S -(.) 51.819 34.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 27.000 0.000 0.000 90.000 135.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 198.500 0.000 0.000 13.000 37.806 rect -%@EndRect -gsave -217.403 34.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -18.000 4.000 S -(m) -12.599 4.000 S -(m) -7.198 4.000 S -(d) -1.797 4.000 S -(e) 3.603 4.000 S -(f) 9.004 4.000 S -(s) 14.405 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.500 198.500 0.000 0.000 85.000 135.013 rect -%@EndRect -gsave -266.006 92.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 -32.000 S -(h) -61.599 -32.000 S -( ) -56.198 -32.000 S -(") -50.797 -32.000 S -(a) -45.396 -32.000 S -(a) -39.995 -32.000 S -(") -34.594 -32.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -20.000 S -( ) -61.599 -20.000 S -( ) -56.198 -20.000 S -(<) -50.797 -20.000 S -(B) -45.396 -20.000 S -(e) -39.995 -20.000 S -(g) -34.594 -20.000 S -(i) -29.193 -20.000 S -(n) -23.792 -20.000 S -(H) -18.392 -20.000 S -(M) -12.991 -20.000 S -(M) -7.590 -20.000 S -(>) -2.189 -20.000 S -( ) 3.211 -20.000 S -(.) 8.612 -20.000 S -(.) 14.013 -20.000 S -(.) 19.414 -20.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -8.000 S -( ) -61.599 -8.000 S -( ) -56.198 -8.000 S -(<) -50.797 -8.000 S -(E) -45.396 -8.000 S -(n) -39.995 -8.000 S -(d) -34.594 -8.000 S -(H) -29.193 -8.000 S -(M) -23.792 -8.000 S -(M) -18.392 -8.000 S -(>) -12.991 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 4.000 S -(h) -61.599 4.000 S -( ) -56.198 4.000 S -(") -50.797 4.000 S -(e) -45.396 4.000 S -(h) -39.995 4.000 S -(") -34.594 4.000 S -( ) -29.193 4.000 S -( ) -23.792 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 16.000 S -( ) -61.599 16.000 S -( ) -56.198 16.000 S -(<) -50.797 16.000 S -(B) -45.396 16.000 S -(e) -39.995 16.000 S -(g) -34.594 16.000 S -(i) -29.193 16.000 S -(n) -23.792 16.000 S -(H) -18.392 16.000 S -(M) -12.991 16.000 S -(M) -7.590 16.000 S -(>) -2.189 16.000 S -( ) 3.211 16.000 S -(.) 8.612 16.000 S -(.) 14.013 16.000 S -(.) 19.414 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 28.000 S -( ) -61.599 28.000 S -( ) -56.198 28.000 S -(<) -50.797 28.000 S -(E) -45.396 28.000 S -(n) -39.995 28.000 S -(d) -34.594 28.000 S -(H) -29.193 28.000 S -(M) -23.792 28.000 S -(M) -18.392 28.000 S -(>) -12.991 28.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -67.000 40.000 S -(.) -61.599 40.000 S -(.) -56.198 40.000 S -( ) -50.797 40.000 S -(e) -45.396 40.000 S -(t) -39.995 40.000 S -(c) -34.594 40.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 189.000 0.000 0.000 153.000 135.000 rect -%@EndRect -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Spmods.eps b/HTKBook/HTKFigs/Spmods.eps deleted file mode 100644 index 9967b18..0000000 --- a/HTKBook/HTKFigs/Spmods.eps +++ /dev/null @@ -1,1825 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Spmods.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/30/94 10:06:09 a.m. -%%BoundingBox: 23.500 496.500 251.449 728.500 -%%QDBoundingBox: 23.500 63.500 251.449 295.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 176.000 117.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 171.000 135.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 148.756 181.487 136.000 195.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 192.000 132.000 0.000 0.000 6.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 168.000 132.000 0.000 0.000 6.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 174.000 114.000 0.000 0.000 6.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 174.000 150.000 0.000 0.000 6.000 7.000 rect -%@EndOval -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.000 108.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 124.500 117.500 0.000 0.000 14.000 36.644 rect -%@EndRect -gsave -135.822 131.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.000 3.000 S -(W) -9.333 3.000 S -(a) 1.992 3.000 S -(v) 7.318 3.000 S -(e) 13.318 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 108.500 0.000 0.000 27.000 51.304 rect -%@EndRect -gsave -134.152 77.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -25.000 -3.000 S -(a) -13.673 -3.000 S -(v) -8.347 -3.000 S -(e) -2.347 -3.000 S -(f) 2.978 -3.000 S -(o) 6.974 -3.000 S -(r) 12.974 -3.000 S -(m) 16.970 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -8.681 10.000 S -(i) -2.007 10.000 S -(l) 1.326 10.000 S -(e) 4.660 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 117.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.999 115.000 135.000 90.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 36.500 0.000 0.000 27.000 48.638 rect -%@EndRect -gsave -60.819 77.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -24.000 -3.000 S -(a) -17.326 -3.000 S -(r) -12.000 -3.000 S -(a) -8.003 -3.000 S -(m) -2.677 -3.000 S -(e) 6.656 -3.000 S -(t) 11.982 -3.000 S -(e) 15.316 -3.000 S -(r) 20.642 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -9.014 10.000 S -(i) -2.340 10.000 S -(l) 0.993 10.000 S -(e) 4.327 10.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 108.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.500 118.500 0.000 0.000 14.000 33.996 rect -%@EndRect -gsave -135.498 230.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(P) -7.333 3.000 S -(a) -0.660 3.000 S -(r) 4.666 3.000 S -(m) 8.662 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.000 180.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 124.500 189.500 0.000 0.000 14.000 38.666 rect -%@EndRect -gsave -208.833 131.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.000 3.000 S -(A) -10.333 3.000 S -(u) -1.667 3.000 S -(d) 4.332 3.000 S -(i) 10.332 3.000 S -(o) 13.666 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 180.500 0.000 0.000 27.000 51.304 rect -%@EndRect -gsave -206.152 77.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -14.347 -3.000 S -(u) -5.681 -3.000 S -(d) 0.318 -3.000 S -(i) 6.318 -3.000 S -(o) 9.652 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -12.012 10.000 S -(n) -8.016 10.000 S -(p) -2.016 10.000 S -(u) 3.983 10.000 S -(t) 9.983 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 117.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 206.999 115.000 207.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 198.000 135.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 162.000 63.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 162.000 63.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -63.000 117.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 62.999 115.000 63.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 162.000 207.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 162.000 207.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 173.000 153.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 270.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.999 268.000 135.000 243.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 270.500 23.500 0.000 0.000 25.000 227.949 rect -%@EndRect -gsave -137.474 283.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -30.686 -2.000 S -(b) -22.020 -2.000 S -(s) -16.020 -2.000 S -(e) -11.350 -2.000 S -(r) -6.024 -2.000 S -(v) -2.028 -2.000 S -(a) 3.971 -2.000 S -(t) 9.297 -2.000 S -(i) 12.631 -2.000 S -(o) 15.965 -2.000 S -(n) 21.965 -2.000 S -(s) 27.965 -2.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -80.670 10.000 S -(P) -77.340 10.000 S -(a) -71.779 10.000 S -(r) -67.340 10.000 S -(a) -64.010 10.000 S -(m) -59.572 10.000 S -(e) -51.793 10.000 S -(t) -47.355 10.000 S -(e) -44.577 10.000 S -(r) -40.138 10.000 S -( ) -36.808 10.000 S -(V) -34.308 10.000 S -(e) -27.086 10.000 S -(c) -22.648 10.000 S -(t) -18.209 10.000 S -(o) -15.431 10.000 S -(r) -10.431 10.000 S -(s) -7.101 10.000 S -( ) -3.209 10.000 S -(a) -0.709 10.000 S -(n) 3.728 10.000 S -(d) 8.728 10.000 S -(/) 13.728 10.000 S -(o) 16.506 10.000 S -(r) 21.506 10.000 S -( ) 24.836 10.000 S -(V) 27.336 10.000 S -(Q) 34.558 10.000 S -( ) 41.780 10.000 S -(S) 44.280 10.000 S -(y) 49.841 10.000 S -(m) 54.841 10.000 S -(b) 62.620 10.000 S -(o) 67.620 10.000 S -(l) 72.620 10.000 S -(s) 75.398 10.000 S -(\)) 79.290 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 99.000 27.000 0.000 0.000 153.000 216.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 36.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 224.500 48.500 0.000 0.000 14.000 31.347 rect -%@EndRect -gsave -64.173 231.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(S) -6.333 3.000 S -(i) 0.339 3.000 S -(g) 3.673 3.000 S -(P) 9.673 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 230.000 180.000 230.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 180.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 224.500 194.500 0.000 0.000 14.000 25.998 rect -%@EndRect -gsave -207.499 231.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -12.000 3.000 S -(V) -3.333 3.000 S -(Q) 5.332 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 230.000 108.000 230.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.decode.eps b/HTKBook/HTKFigs/Tool.decode.eps deleted file mode 100644 index c34b2f9..0000000 --- a/HTKBook/HTKFigs/Tool.decode.eps +++ /dev/null @@ -1,2711 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.decode.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 9:35:45 a.m. -%%BoundingBox: 71.601 560.938 389.624 785.062 -%%QDBoundingBox: 71.601 6.937 389.624 231.061 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%+ Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 115.262 133.601 0.000 0.000 75.000 145.800 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 100.262 133.601 0.000 0.000 15.000 162.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 15.000] CP -[24.300 0.000] CP -[162.000 0.000 ] CP -[145.800 15.000 ] CP -[145.800 15.000 0.000 15.000 0.000 15.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 100.262 279.401 0.000 0.000 90.000 16.199 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[16.199 0.000] CP -[16.199 75.000] CP -[0.000 90.000 ] CP -[0.000 15.000 ] CP -[0.000 15.000 16.199 0.000 16.199 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 125.679 171.851 0.000 0.000 39.000 81.496 rect -%@EndRect -gsave -212.599 145.179 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -25.031 -4.000 S -(V) -11.030 -4.000 S -13.000 (_Times-Bold) fess -(I) 1.968 -4.000 S -(T) 7.221 -4.000 S -(E) 16.226 -4.000 S -18.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -28.771 15.000 S -(H) -22.777 15.000 S -(R) -8.776 15.000 S -13.000 (_Times-Bold) fess -(E) 4.222 15.000 S -(C) 13.227 15.000 S -18.000 (_Times-Bold) fess -(\)) 22.976 15.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -214.601 109.262 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 214.601 105.262 214.601 48.262 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -277.851 107.512 moveto -/Triangular 16.799 8.399 false 302.937 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 280.024 104.154 295.976 79.512 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 46.425 72.101 0.000 0.000 12.666 9.189 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 22.500 91.739 0.000 0.000 26.599 8.500 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.300 90.479 0.000 0.000 15.199 11.333 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -113.147 52.900 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 111.980 52.900 101.813 52.900 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 22.500 114.406 0.000 0.000 26.599 8.500 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.300 113.147 0.000 0.000 15.199 11.333 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.814 52.900 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.647 52.900 124.480 52.900 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.479 52.993 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.313 52.993 81.290 52.993 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 46.425 135.911 0.000 0.000 12.666 9.189 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.358 159.601 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 26.833 175.092 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.183 193.006 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.358 216.846 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 26.833 232.337 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.183 250.251 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -154.601 109.262 moveto -/Triangular 16.799 8.399 false 229.201 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 151.986 106.235 116.601 65.262 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 18.087 319.842 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.554 319.842 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 59.645 319.842 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.842 22.243 moveto -/Triangular 7.049 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.842 22.243 310.923 22.243 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.842 34.710 moveto -/Triangular 7.049 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.842 34.710 310.923 34.710 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.842 63.801 moveto -/Triangular 7.049 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.842 63.801 310.923 63.801 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 22.243 306.464 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 34.710 306.464 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 55.489 306.464 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 346.598 22.243 342.139 22.243 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 346.598 34.710 342.139 34.710 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 346.598 63.801 342.139 63.801 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 22.243 342.139 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 34.710 342.139 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 55.489 342.139 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.057 43.022 351.057 26.399 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 38.866 351.057 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 47.178 351.057 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.057 59.645 351.057 51.333 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.464 43.022 306.464 26.399 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 38.866 297.545 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 47.178 297.545 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.464 59.645 306.464 51.333 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 58.869 326.512 0.000 0.000 8.000 21.680 rect -%@EndRect -gsave -337.352 62.869 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -9.987 2.000 S -(e) -7.324 2.000 S -(r) -4.660 2.000 S -(o) -2.662 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 17.311 325.292 0.000 0.000 8.000 27.338 rect -%@EndRect -gsave -338.962 21.311 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.207 2.000 S -(n) -10.207 2.000 S -(e) -7.207 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.185 326.106 0.000 0.000 8.000 31.106 rect -%@EndRect -gsave -341.659 34.185 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -15.393 2.000 S -(w) -13.726 2.000 S -(o) -9.393 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 302.005 47.178 297.607 47.178 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 359.790 47.178 355.516 47.178 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 43.022 275.249 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.658 283.177 0.000 0.000 8.000 14.188 rect -%@EndRect -gsave -290.271 46.658 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.322 2.000 S -(i) -3.987 2.000 S -(l) -2.320 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 43.022 359.976 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.658 368.310 0.000 0.000 8.000 20.813 rect -%@EndRect -gsave -378.717 46.658 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -10.189 2.000 S -(i) -7.854 2.000 S -(l) -6.187 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 46.947 351.800 0.000 0.000 8.773 5.945 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 46.947 301.262 0.000 0.000 8.773 5.945 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.526 75.114 304.234 75.114 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 357.746 72.112 357.746 51.333 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 68.188 350.314 0.000 0.000 6.926 7.432 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 68.188 301.262 0.000 0.000 6.926 7.432 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 301.262 71.882 301.262 50.641 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -324.549 75.114 moveto -/Triangular 7.049 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.549 75.114 333.715 75.114 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Helvetica -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica /Helvetica EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 6.937 210.311 0.000 0.000 20.000 10.010 rect -%@EndRect -gsave -215.317 16.937 T translate -0.0 rotate -1 1 scale -18.000 (_Helvetica) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(?) -4.188 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -214.601 217.262 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 214.601 213.262 214.601 190.262 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 217.061 179.061 0.000 0.000 14.000 77.308 rect -%@EndRect -gsave -217.716 224.061 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -38.438 3.000 S -(n) -32.438 3.000 S -(e) -26.438 3.000 S -( ) -21.112 3.000 S -(t) -18.112 3.000 S -(w) -14.778 3.000 S -(o) -6.112 3.000 S -( ) -0.112 3.000 S -(t) 2.887 3.000 S -(h) 6.221 3.000 S -(r) 12.221 3.000 S -(e) 16.218 3.000 S -(e) 21.544 3.000 S -( ) 26.870 3.000 S -(.) 29.870 3.000 S -(.) 32.870 3.000 S -(.) 35.870 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.500 325.500 0.000 0.000 14.000 9.000 rect -%@EndRect -gsave -330.000 47.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -4.000 3.000 S -(.) -1.000 3.000 S -(.) 2.000 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.disc.eps b/HTKBook/HTKFigs/Tool.disc.eps deleted file mode 100644 index cd3ccb6..0000000 --- a/HTKBook/HTKFigs/Tool.disc.eps +++ /dev/null @@ -1,2605 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.disc.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/29/95 11:35:52 p.m. -%%BoundingBox: 44.000 559.137 297.366 752.262 -%%QDBoundingBox: 44.000 39.737 297.366 232.862 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 126.000 45.000 0.000 0.000 45.000 135.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 58.500 0.000 0.000 31.000 114.551 rect -%@EndRect -gsave -115.775 147.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -57.000 -3.000 S -(I) -46.110 -3.000 S -10.000 (_Times-Bold) fess -(N) -40.662 -3.000 S -(I) -33.079 -3.000 S -(T) -28.993 -3.000 S -14.000 (_Times-Bold) fess -( ) -21.989 -3.000 S -(/) -18.489 -3.000 S -( ) -14.600 -3.000 S -(H) -11.100 -3.000 S -(S) -0.210 -3.000 S -10.000 (_Times-Bold) fess -(M) 7.575 -3.000 S -(O) 17.486 -3.000 S -(O) 25.653 -3.000 S -(T) 33.820 -3.000 S -(H) 40.823 -3.000 S -14.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -57.000 12.000 S -(R) -46.110 12.000 S -10.000 (_Times-Bold) fess -(E) -36.000 12.000 S -(S) -28.996 12.000 S -(T) -23.156 12.000 S -14.000 (_Times-Bold) fess -( ) -16.153 12.000 S -(/) -12.653 12.000 S -( ) -8.763 12.000 S -(H) -5.263 12.000 S -(E) 5.625 12.000 S -(R) 14.963 12.000 S -10.000 (_Times-Bold) fess -(E) 25.073 12.000 S -(S) 32.077 12.000 S -(T) 37.916 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -117.000 117.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 116.999 113.000 117.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -117.000 198.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 116.999 194.000 117.000 171.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 219.723 56.500 0.000 0.000 11.375 10.658 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.237 79.277 0.000 0.000 23.887 9.859 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 218.712 77.817 0.000 0.000 13.649 13.145 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -104.108 225.537 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 102.941 225.537 90.962 225.537 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -79.277 211.887 moveto -/Triangular 8.224 7.049 false 275.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.379 210.725 79.642 207.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.237 105.568 0.000 0.000 23.887 9.859 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 218.712 104.108 0.000 0.000 13.649 13.145 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.399 225.537 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.232 225.537 117.253 225.537 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -105.568 211.887 moveto -/Triangular 8.224 7.049 false 275.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 105.670 210.725 105.934 207.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.237 131.860 0.000 0.000 23.887 9.859 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 218.712 130.399 0.000 0.000 13.649 13.145 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -156.690 225.537 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.523 225.537 143.545 225.537 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -131.860 211.887 moveto -/Triangular 8.224 7.049 false 275.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.961 210.725 132.225 207.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -77.817 225.621 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 76.650 225.621 67.158 225.621 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 219.723 155.980 0.000 0.000 11.375 10.658 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.274 59.500 0.000 0.000 11.666 10.161 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.237 81.215 0.000 0.000 24.499 9.399 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 61.237 79.822 0.000 0.000 13.999 12.532 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -104.887 68.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 103.720 68.237 92.354 68.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.215 54.237 moveto -/Triangular 8.224 7.049 false 274.672 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.309 53.074 81.563 49.959 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.237 106.279 0.000 0.000 24.499 9.399 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 61.237 104.887 0.000 0.000 13.999 12.532 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -129.951 68.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.784 68.237 117.419 68.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -106.279 54.237 moveto -/Triangular 8.224 7.049 false 274.672 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.374 53.074 106.627 49.959 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.237 131.344 0.000 0.000 24.499 9.399 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 61.237 129.951 0.000 0.000 13.999 12.532 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.016 68.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.849 68.237 142.483 68.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -131.344 54.237 moveto -/Triangular 8.224 7.049 false 274.672 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.438 53.074 131.692 49.959 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -79.822 68.323 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 78.655 68.323 69.661 68.323 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.274 154.338 0.000 0.000 11.666 10.161 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.830 202.000 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.131] CP -[0.294 2.377 0.606 0.162 0.937 0.486] CP -[1.268 0.810 1.562 2.161 1.819 4.538] CP -[2.076 6.915 2.499 9.293 3.087 11.670] CP -[3.675 14.047 4.117 14.804 4.411 13.939] CP -[4.705 13.075 4.962 11.616 5.183 9.563] CP -[5.403 7.510 5.716 5.835 6.120 4.538] CP -[6.524 3.241 6.910 3.457 7.278 5.186] CP -[7.646 6.915 7.903 8.320 8.050 9.401] CP -[8.197 10.481 8.601 10.049 9.263 8.104] CP -[9.925 6.159 10.605 5.511 11.303 6.159] CP -[12.002 6.807 12.461 7.023 12.682 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.209 214.792 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.450] CP -[0.437 8.137 0.802 7.616 1.094 6.885] CP -[1.386 6.155 1.614 5.503 1.778 4.929] CP -[1.942 4.355 2.107 3.547 2.271 2.503] CP -[2.435 1.460 2.645 0.782 2.900 0.469] CP -[3.156 0.156 3.411 0.443 3.666 1.330] CP -[3.922 2.217 4.122 3.156 4.268 4.147] CP -[4.414 5.138 4.533 5.764 4.624 6.025] CP -[4.715 6.286 4.816 6.912 4.925 7.903] CP -[5.035 8.894 5.244 9.989 5.554 11.189] CP -[5.865 12.389 6.102 13.093 6.266 13.302] CP -[6.430 13.511 6.649 13.537 6.923 13.380] CP -[7.196 13.224 7.379 12.963 7.470 12.598] CP -[7.561 12.232 7.716 11.424 7.935 10.172] CP -[8.154 8.920 8.364 7.929 8.565 7.198] CP -[8.765 6.468 8.920 5.790 9.030 5.164] CP -[9.139 4.538 9.267 4.564 9.413 5.242] CP -[9.559 5.920 9.714 6.703 9.878 7.590] CP -[10.042 8.477 10.243 9.103 10.480 9.468] CP -[10.717 9.833 10.890 9.494 11.000 8.450] CP -[11.109 7.407 11.210 6.520 11.301 5.790] CP -[11.392 5.060 11.556 5.060 11.794 5.790] CP -[12.031 6.520 12.240 7.355 12.423 8.294] CP -[12.605 9.233 12.788 9.755 12.970 9.859] CP -[13.153 9.963 13.308 9.624 13.435 8.842] CP -[13.563 8.059 13.764 7.538 14.037 7.277] CP -[14.311 7.016 14.521 7.303 14.667 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.643 229.585 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.936] CP -[0.750 1.978 1.258 0.814 1.523 2.444] CP -[1.788 4.074 2.053 5.529 2.319 6.809] CP -[2.584 8.090 2.815 7.799 3.014 5.936] CP -[3.213 4.074 3.357 2.910 3.445 2.444] CP -[3.533 1.978 3.732 2.793 4.041 4.889] CP -[4.350 6.984 4.571 8.905 4.704 10.651] CP -[4.836 12.397 5.046 12.513 5.333 11.000] CP -[5.620 9.487 5.985 7.450 6.427 4.889] CP -[6.868 2.328 7.200 1.222 7.420 1.571] CP -[7.641 1.920 7.840 2.793 8.017 4.190] CP -[8.193 5.587 8.436 6.344 8.746 6.460] CP -[9.055 6.577 9.342 6.344 9.607 5.762] CP -[9.872 5.180 10.126 5.180 10.369 5.762] CP -[10.612 6.344 10.844 6.518 11.065 6.286] CP -[11.285 6.053 11.628 6.227 12.092 6.809] CP -[12.555 7.391 12.942 7.624 13.251 7.508] CP -[13.560 7.391 13.847 7.100 14.112 6.635] CP -[14.377 6.169 14.631 5.645 14.874 5.063] CP -[15.117 4.481 15.360 4.539 15.603 5.238] CP -[15.846 5.936 16.122 6.460 16.431 6.809] CP -[16.741 7.159 17.050 7.042 17.359 6.460] CP -[17.668 5.878 17.944 5.762 18.187 6.111] CP -[18.430 6.460 18.971 6.635 19.811 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.830 249.271 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.131] CP -[0.294 2.377 0.606 0.162 0.937 0.486] CP -[1.268 0.810 1.562 2.161 1.819 4.538] CP -[2.076 6.915 2.499 9.293 3.087 11.670] CP -[3.675 14.047 4.117 14.804 4.411 13.939] CP -[4.705 13.075 4.962 11.616 5.183 9.563] CP -[5.403 7.510 5.716 5.835 6.120 4.538] CP -[6.524 3.241 6.910 3.457 7.278 5.186] CP -[7.646 6.915 7.903 8.320 8.050 9.401] CP -[8.197 10.481 8.601 10.049 9.263 8.104] CP -[9.925 6.159 10.605 5.511 11.303 6.159] CP -[12.002 6.807 12.461 7.023 12.682 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.209 262.064 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.450] CP -[0.437 8.137 0.802 7.616 1.094 6.885] CP -[1.386 6.155 1.614 5.503 1.778 4.929] CP -[1.942 4.355 2.107 3.547 2.271 2.503] CP -[2.435 1.460 2.645 0.782 2.900 0.469] CP -[3.156 0.156 3.411 0.443 3.666 1.330] CP -[3.922 2.217 4.122 3.156 4.268 4.147] CP -[4.414 5.138 4.533 5.764 4.624 6.025] CP -[4.715 6.286 4.816 6.912 4.925 7.903] CP -[5.035 8.894 5.244 9.989 5.554 11.189] CP -[5.865 12.389 6.102 13.093 6.266 13.302] CP -[6.430 13.511 6.649 13.537 6.923 13.380] CP -[7.196 13.224 7.379 12.963 7.470 12.598] CP -[7.561 12.232 7.716 11.424 7.935 10.172] CP -[8.154 8.920 8.364 7.929 8.565 7.198] CP -[8.765 6.468 8.920 5.790 9.030 5.164] CP -[9.139 4.538 9.267 4.564 9.413 5.242] CP -[9.559 5.920 9.714 6.703 9.878 7.590] CP -[10.042 8.477 10.243 9.103 10.480 9.468] CP -[10.717 9.833 10.890 9.494 11.000 8.450] CP -[11.109 7.407 11.210 6.520 11.301 5.790] CP -[11.392 5.060 11.556 5.060 11.793 5.790] CP -[12.031 6.520 12.240 7.355 12.423 8.294] CP -[12.605 9.233 12.788 9.755 12.970 9.859] CP -[13.153 9.963 13.308 9.624 13.435 8.842] CP -[13.563 8.059 13.764 7.538 14.037 7.277] CP -[14.311 7.016 14.521 7.303 14.667 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.643 276.856 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.936] CP -[0.750 1.978 1.258 0.814 1.523 2.444] CP -[1.788 4.074 2.054 5.529 2.319 6.809] CP -[2.584 8.090 2.815 7.799 3.014 5.936] CP -[3.213 4.074 3.357 2.910 3.445 2.444] CP -[3.533 1.978 3.732 2.793 4.041 4.889] CP -[4.350 6.984 4.571 8.905 4.704 10.651] CP -[4.836 12.397 5.046 12.513 5.333 11.000] CP -[5.620 9.487 5.985 7.450 6.427 4.889] CP -[6.868 2.328 7.200 1.222 7.420 1.571] CP -[7.641 1.920 7.840 2.793 8.017 4.190] CP -[8.193 5.587 8.436 6.344 8.746 6.460] CP -[9.055 6.577 9.342 6.344 9.607 5.762] CP -[9.872 5.180 10.126 5.180 10.369 5.762] CP -[10.612 6.344 10.844 6.518 11.065 6.286] CP -[11.285 6.053 11.628 6.227 12.092 6.809] CP -[12.555 7.391 12.942 7.624 13.251 7.508] CP -[13.560 7.391 13.847 7.100 14.112 6.635] CP -[14.377 6.169 14.631 5.645 14.874 5.063] CP -[15.117 4.481 15.360 4.539 15.603 5.238] CP -[15.846 5.936 16.122 6.460 16.431 6.809] CP -[16.741 7.159 17.050 7.042 17.359 6.460] CP -[17.668 5.878 17.944 5.762 18.187 6.111] CP -[18.430 6.460 18.971 6.635 19.811 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.195 284.183 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[12.682 7.131] CP -[12.388 2.377 12.075 0.162 11.744 0.486] CP -[11.414 0.810 11.119 2.161 10.862 4.538] CP -[10.605 6.915 10.182 9.293 9.594 11.670] CP -[9.006 14.047 8.565 14.804 8.271 13.939] CP -[7.976 13.075 7.719 11.616 7.499 9.563] CP -[7.278 7.510 6.966 5.835 6.561 4.538] CP -[6.157 3.241 5.771 3.457 5.403 5.186] CP -[5.036 6.915 4.778 8.320 4.631 9.401] CP -[4.484 10.481 4.080 10.049 3.418 8.104] CP -[2.757 6.159 2.076 5.511 1.378 6.159] CP -[0.680 6.807 0.220 7.023 0.000 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.574 269.406 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[14.667 8.450] CP -[14.229 8.137 13.864 7.616 13.572 6.885] CP -[13.280 6.155 13.052 5.503 12.888 4.929] CP -[12.724 4.355 12.560 3.547 12.396 2.503] CP -[12.231 1.460 12.022 0.782 11.766 0.469] CP -[11.511 0.156 11.255 0.443 11.000 1.330] CP -[10.745 2.217 10.544 3.156 10.398 4.147] CP -[10.252 5.138 10.133 5.764 10.042 6.025] CP -[9.951 6.286 9.851 6.912 9.741 7.903] CP -[9.632 8.894 9.422 9.989 9.112 11.189] CP -[8.802 12.389 8.565 13.093 8.400 13.302] CP -[8.236 13.511 8.017 13.537 7.744 13.380] CP -[7.470 13.224 7.288 12.963 7.196 12.598] CP -[7.105 12.232 6.950 11.424 6.731 10.172] CP -[6.512 8.920 6.302 7.929 6.102 7.198] CP -[5.901 6.468 5.746 5.790 5.637 5.164] CP -[5.527 4.538 5.399 4.564 5.253 5.242] CP -[5.107 5.920 4.952 6.703 4.788 7.590] CP -[4.624 8.477 4.423 9.103 4.186 9.468] CP -[3.949 9.833 3.776 9.494 3.666 8.450] CP -[3.557 7.407 3.457 6.520 3.365 5.790] CP -[3.274 5.060 3.110 5.060 2.873 5.790] CP -[2.636 6.520 2.426 7.355 2.243 8.294] CP -[2.061 9.233 1.878 9.755 1.696 9.859] CP -[1.514 9.963 1.359 9.624 1.231 8.842] CP -[1.103 8.059 0.903 7.538 0.629 7.277] CP -[0.355 7.016 0.145 7.303 0.000 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.009 249.469 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[19.811 5.936] CP -[19.060 1.978 18.552 0.814 18.287 2.444] CP -[18.022 4.074 17.757 5.529 17.492 6.809] CP -[17.227 8.090 16.995 7.799 16.796 5.936] CP -[16.597 4.074 16.454 2.910 16.365 2.444] CP -[16.277 1.978 16.078 2.793 15.769 4.889] CP -[15.460 6.984 15.239 8.905 15.106 10.651] CP -[14.974 12.397 14.764 12.513 14.477 11.000] CP -[14.190 9.487 13.825 7.450 13.384 4.889] CP -[12.942 2.328 12.611 1.222 12.390 1.571] CP -[12.169 1.920 11.970 2.793 11.793 4.190] CP -[11.617 5.587 11.374 6.344 11.065 6.460] CP -[10.755 6.577 10.468 6.344 10.203 5.762] CP -[9.938 5.180 9.684 5.180 9.441 5.762] CP -[9.198 6.344 8.966 6.518 8.746 6.286] CP -[8.525 6.053 8.182 6.227 7.719 6.809] CP -[7.255 7.391 6.868 7.624 6.559 7.508] CP -[6.250 7.391 5.963 7.100 5.698 6.635] CP -[5.433 6.169 5.179 5.645 4.936 5.063] CP -[4.693 4.481 4.450 4.539 4.207 5.238] CP -[3.964 5.936 3.688 6.460 3.379 6.809] CP -[3.069 7.159 2.760 7.042 2.451 6.460] CP -[2.142 5.878 1.866 5.762 1.623 6.111] CP -[1.380 6.460 0.839 6.635 -0.000 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.830 235.898 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[12.682 7.131] CP -[12.388 2.377 12.075 0.162 11.744 0.486] CP -[11.414 0.810 11.119 2.161 10.862 4.538] CP -[10.605 6.915 10.182 9.293 9.594 11.670] CP -[9.006 14.047 8.565 14.804 8.271 13.939] CP -[7.976 13.075 7.719 11.616 7.499 9.563] CP -[7.278 7.510 6.966 5.835 6.561 4.538] CP -[6.157 3.241 5.771 3.457 5.403 5.186] CP -[5.036 6.915 4.778 8.320 4.631 9.401] CP -[4.484 10.481 4.080 10.049 3.418 8.104] CP -[2.757 6.159 2.076 5.511 1.378 6.159] CP -[0.680 6.807 0.220 7.023 0.000 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.209 221.120 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[14.667 8.450] CP -[14.229 8.137 13.864 7.616 13.572 6.885] CP -[13.280 6.155 13.052 5.503 12.888 4.929] CP -[12.724 4.355 12.560 3.547 12.396 2.503] CP -[12.231 1.460 12.022 0.782 11.766 0.469] CP -[11.511 0.156 11.255 0.443 11.000 1.330] CP -[10.745 2.217 10.544 3.156 10.398 4.147] CP -[10.252 5.138 10.133 5.764 10.042 6.025] CP -[9.951 6.286 9.851 6.912 9.741 7.903] CP -[9.632 8.894 9.422 9.989 9.112 11.189] CP -[8.802 12.389 8.565 13.093 8.400 13.302] CP -[8.236 13.511 8.017 13.537 7.744 13.380] CP -[7.470 13.224 7.288 12.963 7.196 12.598] CP -[7.105 12.232 6.950 11.424 6.731 10.172] CP -[6.512 8.920 6.302 7.929 6.102 7.198] CP -[5.901 6.468 5.746 5.790 5.637 5.164] CP -[5.527 4.538 5.399 4.564 5.253 5.242] CP -[5.108 5.920 4.952 6.703 4.788 7.590] CP -[4.624 8.477 4.423 9.103 4.186 9.468] CP -[3.949 9.833 3.776 9.494 3.666 8.450] CP -[3.557 7.407 3.457 6.520 3.365 5.790] CP -[3.274 5.060 3.110 5.060 2.873 5.790] CP -[2.636 6.520 2.426 7.355 2.243 8.294] CP -[2.061 9.233 1.879 9.755 1.696 9.859] CP -[1.514 9.963 1.359 9.624 1.231 8.842] CP -[1.103 8.059 0.903 7.538 0.629 7.277] CP -[0.355 7.016 0.145 7.303 0.000 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.558 200.634 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[19.811 5.936] CP -[19.060 1.978 18.552 0.814 18.287 2.444] CP -[18.022 4.074 17.757 5.529 17.492 6.809] CP -[17.227 8.090 16.995 7.799 16.796 5.936] CP -[16.597 4.074 16.454 2.910 16.365 2.444] CP -[16.277 1.978 16.078 2.793 15.769 4.889] CP -[15.460 6.984 15.239 8.905 15.106 10.651] CP -[14.974 12.397 14.764 12.513 14.477 11.000] CP -[14.190 9.487 13.825 7.450 13.384 4.889] CP -[12.942 2.328 12.611 1.222 12.390 1.571] CP -[12.169 1.920 11.970 2.793 11.793 4.190] CP -[11.617 5.587 11.374 6.344 11.065 6.460] CP -[10.755 6.577 10.468 6.344 10.203 5.762] CP -[9.938 5.180 9.684 5.180 9.441 5.762] CP -[9.198 6.344 8.966 6.518 8.746 6.286] CP -[8.525 6.053 8.182 6.227 7.719 6.809] CP -[7.255 7.391 6.868 7.624 6.559 7.508] CP -[6.250 7.391 5.963 7.100 5.698 6.635] CP -[5.433 6.169 5.179 5.645 4.936 5.063] CP -[4.693 4.481 4.450 4.539 4.207 5.238] CP -[3.964 5.936 3.688 6.460 3.379 6.809] CP -[3.069 7.159 2.760 7.042 2.451 6.460] CP -[2.142 5.878 1.866 5.762 1.623 6.111] CP -[1.380 6.460 0.839 6.635 0.000 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 117.000 45.000 0.000 0.000 9.000 153.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.000] CP -[18.000 0.000] CP -[153.000 0.000 ] CP -[135.000 9.000 ] CP -[135.000 9.000 0.000 9.000 0.000 9.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 117.000 180.000 0.000 0.000 54.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.000] CP -[18.000 0.000] CP -[18.000 36.000 ] CP -[0.000 54.000 ] CP -[0.000 54.000 0.000 9.000 0.000 9.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 128.326 215.000 0.000 0.000 41.633 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 120.000 269.000 0.000 0.000 49.960 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.326] CP -[18.000 0.000] CP -[18.000 33.306 ] CP -[0.000 49.960 ] CP -[0.000 49.960 0.000 8.326 0.000 8.326] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 120.000 215.000 0.000 0.000 8.326 72.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.326] CP -[18.000 0.000] CP -[72.000 0.000 ] CP -[54.000 8.326 ] CP -[54.000 8.326 0.000 8.326 0.000 8.326] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 138.571 218.576 0.000 0.000 16.000 51.531 rect -%@EndRect -gsave -244.341 146.571 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -24.923 4.000 S -(Q) -14.033 4.000 S -10.000 (_Times-Bold) fess -(U) -3.144 4.000 S -(A) 4.438 4.000 S -(N) 12.021 4.000 S -(T) 19.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -256.000 123.000 moveto -/Triangular 9.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 255.999 120.666 256.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -186.000 143.000 moveto -/Triangular 9.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 188.333 142.999 213.000 143.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.hedit.eps b/HTKBook/HTKFigs/Tool.hedit.eps deleted file mode 100644 index e0081d9..0000000 --- a/HTKBook/HTKFigs/Tool.hedit.eps +++ /dev/null @@ -1,1838 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.hedit.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 7:01:46 a.m. -%%BoundingBox: 44.000 489.237 226.000 762.262 -%%QDBoundingBox: 44.000 29.737 226.000 302.762 -%%DocumentFonts: Times-Bold -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 126.000 45.000 0.000 0.000 90.000 162.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 155.500 105.500 0.000 0.000 20.000 67.551 rect -%@EndRect -gsave -139.275 165.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -33.000 5.000 S -(H) -18.999 5.000 S -(E) -4.998 5.000 S -13.000 (_Times-Bold) fess -(D) 7.007 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 45.000 0.000 0.000 18.000 180.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[27.000 0.000] CP -[180.000 0.000 ] CP -[162.000 18.000 ] CP -[162.000 18.000 0.000 18.000 0.000 18.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 207.000 0.000 0.000 108.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[18.000 0.000] CP -[18.000 90.000] CP -[0.000 108.000 ] CP -[0.000 18.000 ] CP -[0.000 18.000 18.000 0.000 18.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 117.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 113.000 135.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 243.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 239.000 135.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 267.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 239.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 275.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 275.237 109.558 275.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 257.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 256.075 94.758 251.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 275.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 275.237 143.932 275.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 239.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 275.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 275.237 178.306 275.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 257.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 256.075 163.506 251.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 275.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 275.348 78.435 275.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 267.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 66.237 109.558 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 47.075 94.758 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 128.654 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 66.237 143.932 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -128.654 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.755 47.075 129.132 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 66.237 178.306 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 47.075 163.506 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 66.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 66.348 78.435 66.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 269.000 100.000 0.000 0.000 30.000 70.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 269.000 100.000 0.000 0.000 30.000 70.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -139.493 299.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.326 299.237 130.306 299.237 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.labs.eps b/HTKBook/HTKFigs/Tool.labs.eps deleted file mode 100644 index 1f5151e..0000000 --- a/HTKBook/HTKFigs/Tool.labs.eps +++ /dev/null @@ -1,482 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.labs.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:09 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 416 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 416 0 lineto 416 353 lineto closepath clip newpath --179.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Bold ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Bold ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.langmod.eps b/HTKBook/HTKFigs/Tool.langmod.eps deleted file mode 100644 index c356993..0000000 --- a/HTKBook/HTKFigs/Tool.langmod.eps +++ /dev/null @@ -1,2412 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.langmod.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/31/95 10:07:51 p.m. -%%BoundingBox: 71.500 557.500 448.808 781.500 -%%QDBoundingBox: 71.500 10.500 448.808 234.500 -%%DocumentFonts: Times-Bold -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 90.000 180.000 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 81.500 0.000 0.000 53.000 45.110 rect -%@EndRect -gsave -104.055 123.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 -16.000 S -(A) -13.333 -16.000 S -(u) -4.667 -16.000 S -(d) 1.332 -16.000 S -(i) 7.332 -16.000 S -(o) 10.666 -16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 -3.000 S -(W) -13.333 -3.000 S -(a) -2.007 -3.000 S -(v) 3.318 -3.000 S -(e) 9.318 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 10.000 S -(P) -13.333 10.000 S -(a) -6.660 10.000 S -(r) -1.333 10.000 S -(m) 2.662 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 23.000 S -(V) -13.333 23.000 S -(Q) -4.667 23.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 135.500 0.000 0.000 14.000 35.982 rect -%@EndRect -gsave -153.491 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 3.000 S -(L) -8.333 3.000 S -(a) -1.003 3.000 S -(b) 4.322 3.000 S -(e) 10.322 3.000 S -(l) 15.648 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 194.500 0.000 0.000 14.000 28.664 rect -%@EndRect -gsave -208.832 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 3.000 S -(L) -4.666 3.000 S -(M) 3.337 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 247.500 0.000 0.000 14.000 25.992 rect -%@EndRect -gsave -260.496 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -12.000 3.000 S -(N) -3.333 3.000 S -(e) 5.332 3.000 S -(t) 10.658 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 297.500 0.000 0.000 27.000 65.996 rect -%@EndRect -gsave -330.498 146.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -32.000 -3.000 S -(M) -23.333 -3.000 S -(o) -12.664 -3.000 S -(d) -6.664 -3.000 S -(e) -0.664 -3.000 S -(l) 4.662 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -32.000 10.000 S -(U) -23.333 10.000 S -(t) -14.667 10.000 S -(i) -11.333 10.000 S -(l) -8.000 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.500 297.500 0.000 0.000 14.000 33.333 rect -%@EndRect -gsave -314.166 178.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(S) -7.333 3.000 S -(h) -0.660 3.000 S -(e) 5.339 3.000 S -(l) 10.666 3.000 S -(l) 14.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 207.500 299.500 0.000 0.000 14.000 30.650 rect -%@EndRect -gsave -314.825 214.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(G) -6.333 3.000 S -(r) 2.332 3.000 S -(a) 6.328 3.000 S -(f) 11.654 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 81.500 0.000 0.000 14.000 33.996 rect -%@EndRect -gsave -98.498 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(M) -7.333 3.000 S -(e) 3.335 3.000 S -(m) 8.662 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 137.500 0.000 0.000 14.000 33.996 rect -%@EndRect -gsave -154.498 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(M) -7.333 3.000 S -(a) 3.335 3.000 S -(t) 8.662 3.000 S -(h) 11.996 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 189.500 0.000 0.000 14.000 34.652 rect -%@EndRect -gsave -206.826 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 3.000 S -(T) -8.333 3.000 S -(r) -1.003 3.000 S -(a) 2.992 3.000 S -(i) 8.318 3.000 S -(n) 11.652 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 246.500 0.000 0.000 14.000 27.322 rect -%@EndRect -gsave -260.161 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -13.000 3.000 S -(R) -4.333 3.000 S -(e) 3.669 3.000 S -(c) 8.996 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.500 83.500 0.000 0.000 14.000 31.347 rect -%@EndRect -gsave -99.173 178.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(S) -6.333 3.000 S -(i) 0.339 3.000 S -(g) 3.673 3.000 S -(P) 9.673 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.000 72.000 0.000 0.000 144.000 270.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 234.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 126.000 180.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 126.000 234.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 234.000 288.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 126.000 126.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 198.000 72.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 162.000 72.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 162.000 288.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 81.000 72.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 81.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 81.000 180.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 81.000 234.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.000 81.000 288.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 81.000 342.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 110.000 342.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 142.000 342.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 386.000 175.000 342.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 386.000 206.000 342.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 234.000 180.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 234.000 234.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 81.000 117.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 206.000 387.000 81.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 176.500 0.000 0.000 16.000 58.713 rect -%@EndRect -gsave -205.856 161.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.000 4.000 S -(T) -18.889 4.000 S -(K) -10.337 4.000 S -( ) -0.227 4.000 S -(T) 3.272 4.000 S -(o) 11.824 4.000 S -(o) 18.824 4.000 S -(l) 25.824 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 171.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -405.000 171.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.000 171.000 362.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 207.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -405.000 207.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.000 207.000 362.000 207.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 390.500 0.000 0.000 27.000 54.980 rect -%@EndRect -gsave -417.990 167.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -21.500 -3.000 S -(e) -14.169 -3.000 S -(r) -8.843 -3.000 S -(m) -4.847 -3.000 S -(i) 4.486 -3.000 S -(n) 7.820 -3.000 S -(a) 13.820 -3.000 S -(l) 19.146 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -7.507 10.000 S -(/) -3.511 10.000 S -(O) -0.177 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 189.500 387.500 0.000 0.000 27.000 61.308 rect -%@EndRect -gsave -418.154 203.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -23.000 -3.000 S -(r) -14.333 -3.000 S -(a) -10.337 -3.000 S -(p) -5.011 -3.000 S -(h) 0.988 -3.000 S -(i) 6.988 -3.000 S -(c) 10.322 -3.000 S -(a) 15.648 -3.000 S -(l) 20.974 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -7.343 10.000 S -(/) -3.347 10.000 S -(O) -0.013 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -123.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -123.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 122.999 85.000 123.000 53.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -178.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -178.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.999 85.000 178.000 53.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -287.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.999 85.000 287.000 53.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -403.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.000 53.000 403.000 134.937 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.500 98.500 0.000 0.000 27.000 52.652 rect -%@EndRect -gsave -124.826 37.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.000 -3.000 S -(p) -10.326 -3.000 S -(e) -4.326 -3.000 S -(e) 1.000 -3.000 S -(c) 6.326 -3.000 S -(h) 11.652 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -11.000 10.000 S -(a) -2.333 10.000 S -(t) 2.992 10.000 S -(a) 6.326 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 36.500 161.500 0.000 0.000 14.000 31.986 rect -%@EndRect -gsave -177.493 43.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -15.000 3.000 S -(a) -7.669 3.000 S -(b) -2.343 3.000 S -(e) 3.656 3.000 S -(l) 8.982 3.000 S -(s) 12.316 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.500 201.500 0.000 0.000 27.000 56.308 rect -%@EndRect -gsave -229.654 37.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -25.184 -3.000 S -(a) -17.180 -3.000 S -(n) -11.180 -3.000 S -(g) -4.506 -3.000 S -(u) 1.493 -3.000 S -(a) 8.166 -3.000 S -(g) 14.166 -3.000 S -(e) 20.166 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -16.175 10.000 S -(o) -4.849 10.000 S -(d) 1.150 10.000 S -(e) 7.824 10.000 S -(l) 13.150 10.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.500 252.500 0.000 0.000 40.000 67.998 rect -%@EndRect -gsave -286.499 30.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -19.658 -10.000 S -(a) -12.328 -10.000 S -(t) -7.001 -10.000 S -(t) -3.667 -10.000 S -(i) -0.333 -10.000 S -(c) 3.000 -10.000 S -(e) 8.326 -10.000 S -(s) 13.652 -10.000 S -(/) 18.322 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -24.000 3.000 S -(o) -15.996 3.000 S -(n) -9.996 3.000 S -(s) -3.996 3.000 S -(t) 0.673 3.000 S -(r) 4.007 3.000 S -(a) 8.003 3.000 S -(i) 13.330 3.000 S -(n) 16.664 3.000 S -(t) 22.664 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -19.995 16.000 S -(e) -11.329 16.000 S -(t) -6.002 16.000 S -(w) -2.668 16.000 S -(o) 5.997 16.000 S -(r) 11.997 16.000 S -(k) 15.993 16.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 36.500 313.500 0.000 0.000 14.000 65.994 rect -%@EndRect -gsave -346.497 43.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -24.661 3.000 S -(i) -15.995 3.000 S -(c) -12.661 3.000 S -(t) -7.334 3.000 S -(i) -4.000 3.000 S -(o) -0.666 3.000 S -(n) 5.333 3.000 S -(a) 11.333 3.000 S -(r) 16.659 3.000 S -(y) 20.655 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -345.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -345.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 344.999 85.000 345.000 53.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.500 373.500 0.000 0.000 27.000 65.994 rect -%@EndRect -gsave -406.497 37.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.005 -3.000 S -(M) -5.339 -3.000 S -(M) 5.330 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -26.000 10.000 S -(e) -17.333 10.000 S -(f) -12.007 10.000 S -(i) -8.011 10.000 S -(n) -4.677 10.000 S -(i) 1.322 10.000 S -(t) 4.656 10.000 S -(i) 7.990 10.000 S -(o) 11.324 10.000 S -(n) 17.324 10.000 S -(s) 23.324 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 135.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.406 135.000 362.000 135.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 301.500 0.000 0.000 14.000 29.326 rect -%@EndRect -gsave -316.163 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 3.000 S -(D) -5.333 3.000 S -(i) 3.332 3.000 S -(c) 6.666 3.000 S -(t) 11.992 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 81.000 180.000 0.000 0.000 9.000 99.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.000] CP -[45.000 0.000] CP -[99.000 0.000 ] CP -[54.000 9.000 ] CP -[54.000 9.000 0.000 9.000 0.000 9.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -231.000 51.000 moveto -/Triangular 16.799 8.399 false 90.006 DrawArrowHead -231.000 87.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 230.999 83.000 231.000 55.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.model.eps b/HTKBook/HTKFigs/Tool.model.eps deleted file mode 100644 index 596031b..0000000 --- a/HTKBook/HTKFigs/Tool.model.eps +++ /dev/null @@ -1,482 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.model.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 416 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 416 0 lineto 416 353 lineto closepath clip newpath --179.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 4895 2574 m - 4895 3166 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 4599 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Bold ff 210.00 scf sf -8937 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.netdict.eps b/HTKBook/HTKFigs/Tool.netdict.eps deleted file mode 100644 index 7884f69..0000000 --- a/HTKBook/HTKFigs/Tool.netdict.eps +++ /dev/null @@ -1,488 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.netdict.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 420 355 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 355 moveto 0 0 lineto 420 0 lineto 420 355 lineto closepath clip newpath --175.0 410.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 4855 2587 m 5810 2587 l 5810 3184 l 4855 3184 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 5810 2587 m 6765 2587 l 6765 3184 l 5810 3184 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6750 2587 m 7705 2587 l 7705 3184 l 6750 3184 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6765 2587 m 7422 2169 l 8377 2169 l 7720 2587 l 6765 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 4855 2587 m 5512 2169 l 6467 2169 l 5810 2587 l 4855 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 5810 2587 m 6467 2169 l 7422 2169 l 6765 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7720 2587 m 8377 2169 l 8377 2766 l 7720 3184 l 7720 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7720 4378 m - 6765 4378 l gs col-1 s gr -% Polyline -n 7720 4974 m - 6765 4974 l gs col-1 s gr -% Polyline -n 7720 3184 m 8377 2766 l 8377 3363 l 7720 3781 l - cp gs col-1 s gr -% Polyline -n 2945 3781 m 3900 3781 l 3900 4378 l 2945 4378 l - cp gs col-1 s gr -% Polyline -n 6765 3781 m 7720 3781 l 7720 4378 l 6765 4378 l - cp gs col-1 s gr -% Polyline -n 7720 3781 m 8377 3363 l 8377 3960 l 7720 4378 l - cp gs col-1 s gr -% Polyline -n 5810 2587 m 6765 2587 l 7422 2169 l 6467 2169 l 5810 2587 l - cp gs col-1 s gr -% Polyline -n 2945 2587 m 3900 2587 l 3900 3781 l 2945 3781 l - cp gs col-1 s gr -% Polyline -n 2945 4378 m 3900 4378 l 3900 4974 l 2945 4974 l - cp gs col-1 s gr -% Polyline -n 2945 2587 m 3602 2169 l 4557 2169 l 3900 2587 l 2945 2587 l - cp gs col-1 s gr -% Polyline -n 3900 2587 m 4855 2587 l 4855 3184 l 3900 3184 l - cp gs col-1 s gr -% Polyline -n 2945 4974 m 3900 4974 l 3900 5571 l 2945 5571 l - cp gs col-1 s gr -% Polyline -n 6765 3781 m - 7720 3781 l gs col-1 s gr -% Polyline -n 6765 3781 m 7720 3781 l 7720 4378 l 6765 4378 l - cp gs col-1 s gr -% Polyline -n 7720 2587 m - 8377 2169 l gs col-1 s gr -% Polyline -n 7720 4378 m - 8377 3960 l gs col-1 s gr -% Polyline -n 7720 3781 m - 8377 3363 l gs col-1 s gr -% Polyline -n 7720 3184 m - 8377 2766 l gs col-1 s gr -% Polyline -n 7720 5571 m - 8377 5154 l gs col-1 s gr -% Polyline -n 6825 3184 m - 3900 3184 l gs col-1 s gr -% Polyline -n 7720 4974 m - 8377 4557 l gs col-1 s gr -% Polyline -n 7720 3781 m 8377 3363 l 8377 3960 l 7720 4378 l 7720 3781 l - cp gs col-1 s gr -% Polyline -n 3900 4974 m - 6765 4974 l gs col-1 s gr -% Polyline -n 6765 3184 m - 6765 5571 l gs col-1 s gr -% Polyline -n 8377 2766 m - 8377 5154 l gs col-1 s gr -% Polyline -n 3900 3184 m - 3900 5571 l gs col-1 s gr -% Polyline -n 3900 4378 m - 2945 4378 l gs col-1 s gr -% Polyline -n 2945 4974 m - 3900 4974 l gs col-1 s gr -% Polyline -n 4855 2587 m - 4855 3184 l gs col-1 s gr -% Polyline -n 2945 2587 m - 3602 2169 l gs col-1 s gr -% Polyline -n 3900 2587 m - 3900 3243 l gs col-1 s gr -% Polyline -n 3900 2587 m - 4557 2169 l gs col-1 s gr -% Polyline -gs clippath -3840 2363 m 3960 2363 l 3960 2076 l 3900 2316 l 3840 2076 l cp -3960 1617 m 3840 1617 l 3840 1904 l 3900 1664 l 3960 1904 l cp -eoclip -n 3900 1632 m - 3900 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3960 1904 m 3900 1664 l 3840 1904 l 3960 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3840 2076 m 3900 2316 l 3960 2076 l 3840 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4795 2363 m 4915 2363 l 4915 2076 l 4855 2316 l 4795 2076 l cp -4915 1617 m 4795 1617 l 4795 1904 l 4855 1664 l 4915 1904 l cp -eoclip -n 4855 1632 m - 4855 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4915 1904 m 4855 1664 l 4795 1904 l 4915 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4795 2076 m 4855 2316 l 4915 2076 l 4795 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5750 2363 m 5870 2363 l 5870 2076 l 5810 2316 l 5750 2076 l cp -5870 1617 m 5750 1617 l 5750 1904 l 5810 1664 l 5870 1904 l cp -eoclip -n 5810 1632 m - 5810 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5870 1904 m 5810 1664 l 5750 1904 l 5870 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5750 2076 m 5810 2316 l 5870 2076 l 5750 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6705 2363 m 6825 2363 l 6825 2076 l 6765 2316 l 6705 2076 l cp -6825 1617 m 6705 1617 l 6705 1904 l 6765 1664 l 6825 1904 l cp -eoclip -n 6765 1632 m - 6765 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6825 1904 m 6765 1664 l 6705 1904 l 6825 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6705 2076 m 6765 2316 l 6825 2076 l 6705 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7660 2363 m 7780 2363 l 7780 2076 l 7720 2316 l 7660 2076 l cp -7780 1617 m 7660 1617 l 7660 1904 l 7720 1664 l 7780 1904 l cp -eoclip -n 7720 1632 m - 7720 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7780 1904 m 7720 1664 l 7660 1904 l 7780 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7660 2076 m 7720 2316 l 7780 2076 l 7660 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 2945 3781 m - 3900 3781 l gs col-1 s gr -% Polyline -n 4855 4974 m - 4855 5571 l gs col-1 s gr -% Polyline -n 5810 4974 m - 5810 5571 l gs col-1 s gr -% Polyline -gs clippath -9153 1617 m 9033 1617 l 9033 1904 l 9093 1664 l 9153 1904 l cp -8064 3183 m 8064 3303 l 8351 3303 l 8111 3243 l 8351 3183 l cp -eoclip -n 8079 3243 m 9093 3243 l - 9093 1632 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8351 3183 m 8111 3243 l 8351 3303 l 8351 3183 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9153 1904 m 9093 1664 l 9033 1904 l 9153 1904 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6228 6303 m 6348 6303 l 6348 6016 l 6288 6256 l 6228 6016 l cp -6348 5556 m 6228 5556 l 6228 5843 l 6288 5603 l 6348 5843 l cp -eoclip -n 6288 5571 m - 6288 6288 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6348 5843 m 6288 5603 l 6228 5843 l 6348 5843 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6228 6016 m 6288 6256 l 6348 6016 l 6228 6016 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5213 6303 m 5333 6303 l 5333 6016 l 5273 6256 l 5213 6016 l cp -5333 5556 m 5213 5556 l 5213 5843 l 5273 5603 l 5333 5843 l cp -eoclip -n 5273 5571 m - 5273 6288 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5333 5843 m 5273 5603 l 5213 5843 l 5333 5843 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5213 6016 m 5273 6256 l 5333 6016 l 5213 6016 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8810 4497 m 8810 4377 l 8523 4377 l 8763 4437 l 8523 4497 l cp -8064 4377 m 8064 4497 l 8351 4497 l 8111 4437 l 8351 4377 l cp -eoclip -n 8079 4437 m - 8795 4437 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8351 4377 m 8111 4437 l 8351 4497 l 8351 4377 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8523 4497 m 8763 4437 l 8523 4377 l 8523 4497 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8810 3900 m 8810 3780 l 8523 3780 l 8763 3840 l 8523 3900 l cp -8064 3780 m 8064 3900 l 8351 3900 l 8111 3840 l 8351 3780 l cp -eoclip -n 8079 3840 m - 8795 3840 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8351 3780 m 8111 3840 l 8351 3900 l 8351 3780 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8523 3900 m 8763 3840 l 8523 3780 l 8523 3900 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 2945 4378 m 3900 4378 l 3900 4974 l 2945 4974 l - cp gs col-1 s gr -% Polyline -n 2945 4974 m 3900 4974 l 3900 5571 l 2945 5571 l - cp gs col-1 s gr -% Polyline -n 6765 3184 m 7720 3184 l 7720 3781 l 6765 3781 l - cp gs col-1 s gr -% Polyline -n 2945 2587 m 7720 2587 l 7720 5571 l 2945 5571 l - cp gs col-1 s gr -% Polyline -n 4200 2175 m - 5550 2175 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -7004 5333 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8855 1273 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8735 1453 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9034 3840 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9034 4437 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5989 6586 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5094 6586 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5034 6765 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5034 4139 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3557 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3378 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3199 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3020 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4064 2945 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 3422 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 3661 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 4139 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 4736 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5974 5333 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5079 5333 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4049 5333 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 5333 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 4736 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 4139 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9288 4019 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9288 4616 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3646 1273 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3706 1453 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4526 1453 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Bold ff 210.00 scf sf -5079 2945 m -gs 1 -1 sc (HLM) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6034 2945 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6929 2945 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Bold ff 210.00 scf sf -5421 1273 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Bold ff 210.00 scf sf -5556 1453 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6527 1094 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6467 1273 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6527 1453 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Bold ff 210.00 scf sf -7497 1453 m -gs 1 -1 sc (Dictionary) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.shell.eps b/HTKBook/HTKFigs/Tool.shell.eps deleted file mode 100644 index 395fa2e..0000000 --- a/HTKBook/HTKFigs/Tool.shell.eps +++ /dev/null @@ -1,488 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.shell.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 419 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 419 0 lineto 419 353 lineto closepath clip newpath --178.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 4895 2574 m - 4895 3166 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 4599 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Bold ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Bold ff 210.00 scf sf -9367 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.spio.eps b/HTKBook/HTKFigs/Tool.spio.eps deleted file mode 100644 index 1980126..0000000 --- a/HTKBook/HTKFigs/Tool.spio.eps +++ /dev/null @@ -1,482 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.spio.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 417 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 417 0 lineto 417 353 lineto closepath clip newpath --178.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 4895 2574 m - 4895 3166 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 4599 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3947 4000 m - 3947 5200 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.train.eps b/HTKBook/HTKFigs/Tool.train.eps deleted file mode 100644 index 63be010..0000000 --- a/HTKBook/HTKFigs/Tool.train.eps +++ /dev/null @@ -1,3212 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.train.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:6/24/95 8:44:01 a.m. -%%BoundingBox: 44.000 500.262 390.797 762.262 -%%QDBoundingBox: 44.000 29.737 390.797 291.737 -%%DocumentFonts: Times-Bold -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=T tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet - - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 126.000 45.000 0.000 0.000 90.000 162.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.500 61.500 0.000 0.000 39.000 132.551 rect -%@EndRect -gsave -127.775 166.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -66.000 -4.000 S -(C) -51.999 -4.000 S -13.000 (_Times-Bold) fess -(O) -39.000 -4.000 S -(M) -28.499 -4.000 S -(P) -15.757 -4.000 S -18.000 (_Times-Bold) fess -(V) -7.510 -4.000 S -( ) 5.488 -4.000 S -(/) 9.988 -4.000 S -( ) 14.989 -4.000 S -(H) 19.489 -4.000 S -(I) 33.489 -4.000 S -13.000 (_Times-Bold) fess -(N) 40.494 -4.000 S -(I) 50.244 -4.000 S -(T) 55.497 -4.000 S -18.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -66.000 15.000 S -(R) -51.999 15.000 S -13.000 (_Times-Bold) fess -(E) -39.000 15.000 S -(S) -29.995 15.000 S -(T) -22.487 15.000 S -18.000 (_Times-Bold) fess -( ) -13.483 15.000 S -(/) -8.983 15.000 S -( ) -3.982 15.000 S -(H) 0.517 15.000 S -(E) 14.518 15.000 S -(R) 26.524 15.000 S -13.000 (_Times-Bold) fess -(E) 39.523 15.000 S -(S) 48.528 15.000 S -(T) 56.036 15.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 45.000 0.000 0.000 18.000 180.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[27.000 0.000] CP -[180.000 0.000 ] CP -[162.000 18.000 ] CP -[162.000 18.000 0.000 18.000 0.000 18.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 207.000 0.000 0.000 108.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[18.000 0.000] CP -[18.000 90.000] CP -[0.000 108.000 ] CP -[0.000 18.000 ] CP -[0.000 18.000 18.000 0.000 18.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 117.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 113.000 135.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 243.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 239.000 135.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -217.000 159.000 moveto -/Triangular 16.799 8.399 false 320.500 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 220.085 156.454 257.000 126.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 246.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 273.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 282.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 282.237 109.558 282.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 264.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 263.075 94.758 258.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 246.237 128.654 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 273.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 282.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 282.237 143.932 282.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -128.654 264.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.755 263.075 129.132 258.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 246.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 273.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 282.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 282.237 178.306 282.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 264.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 263.075 163.506 258.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 282.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 282.348 78.435 282.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 66.237 109.558 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 47.075 94.758 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 128.654 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 66.237 143.932 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -128.654 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.755 47.075 129.132 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 66.237 178.306 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 47.075 163.506 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 66.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 66.348 78.435 66.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.096 246.000 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 50.571 261.491 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.920 279.405 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.096 303.245 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 50.571 318.736 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.920 336.650 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 35.500 245.500 0.000 0.000 12.000 107.504 rect -%@EndRect -gsave -299.252 41.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -53.000 3.000 S -(h) -50.221 3.000 S -( ) -45.221 3.000 S -( ) -42.721 3.000 S -( ) -40.221 3.000 S -(i) -37.721 3.000 S -(h) -34.943 3.000 S -( ) -29.943 3.000 S -( ) -27.443 3.000 S -(s) -24.943 3.000 S -( ) -21.051 3.000 S -( ) -18.551 3.000 S -(i) -16.051 3.000 S -(h) -13.273 3.000 S -( ) -8.273 3.000 S -( ) -5.773 3.000 S -(z) -3.273 3.000 S -( ) 1.165 3.000 S -( ) 3.665 3.000 S -(s) 6.165 3.000 S -( ) 10.056 3.000 S -( ) 12.556 3.000 S -(p) 15.056 3.000 S -( ) 20.056 3.000 S -( ) 22.556 3.000 S -(i) 25.056 3.000 S -(y) 27.834 3.000 S -( ) 32.834 3.000 S -( ) 35.334 3.000 S -(t) 37.834 3.000 S -( ) 40.613 3.000 S -( ) 43.113 3.000 S -(s) 45.613 3.000 S -(h) 49.504 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 97.096 345.283 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[15.358 6.708] CP -[15.001 2.236 14.623 0.152 14.222 0.457] CP -[13.822 0.762 13.466 2.032 13.154 4.269] CP -[12.842 6.505 12.330 8.741 11.618 10.978] CP -[10.906 13.214 10.372 13.925 10.016 13.112] CP -[9.659 12.299 9.348 10.927 9.081 8.995] CP -[8.814 7.064 8.435 5.489 7.946 4.269] CP -[7.456 3.049 6.988 3.252 6.543 4.879] CP -[6.098 6.505 5.787 7.826 5.609 8.843] CP -[5.430 9.859 4.941 9.453 4.139 7.623] CP -[3.338 5.793 2.515 5.184 1.669 5.793] CP -[0.823 6.403 0.267 6.607 0.000 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 95.571 327.388 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.761 7.949] CP -[17.231 7.655 16.789 7.164 16.436 6.477] CP -[16.082 5.790 15.806 5.177 15.607 4.637] CP -[15.409 4.097 15.210 3.336 15.011 2.355] CP -[14.812 1.374 14.558 0.736 14.249 0.441] CP -[13.939 0.147 13.630 0.417 13.321 1.251] CP -[13.012 2.085 12.769 2.968 12.592 3.901] CP -[12.415 4.833 12.272 5.422 12.161 5.667] CP -[12.051 5.913 11.929 6.501 11.797 7.434] CP -[11.664 8.366 11.410 9.397 11.034 10.525] CP -[10.659 11.654 10.372 12.316 10.173 12.513] CP -[9.974 12.709 9.709 12.734 9.377 12.586] CP -[9.046 12.439 8.825 12.194 8.715 11.850] CP -[8.604 11.507 8.416 10.746 8.151 9.568] CP -[7.886 8.391 7.632 7.458 7.389 6.771] CP -[7.146 6.084 6.958 5.446 6.826 4.858] CP -[6.693 4.269 6.539 4.293 6.362 4.931] CP -[6.185 5.569 5.997 6.305 5.799 7.139] CP -[5.600 7.974 5.357 8.563 5.070 8.906] CP -[4.782 9.250 4.573 8.931 4.440 7.949] CP -[4.307 6.968 4.186 6.133 4.075 5.446] CP -[3.965 4.759 3.766 4.759 3.479 5.446] CP -[3.192 6.133 2.938 6.919 2.717 7.802] CP -[2.496 8.685 2.275 9.176 2.054 9.274] CP -[1.833 9.372 1.645 9.053 1.491 8.317] CP -[1.336 7.581 1.093 7.090 0.762 6.845] CP -[0.430 6.600 0.176 6.870 0.000 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.920 303.245 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[23.991 5.584] CP -[23.081 1.861 22.466 0.766 22.145 2.299] CP -[21.824 3.832 21.503 5.201 21.182 6.405] CP -[20.861 7.610 20.580 7.336 20.340 5.584] CP -[20.099 3.832 19.925 2.737 19.818 2.299] CP -[19.711 1.861 19.470 2.628 19.096 4.599] CP -[18.722 6.570 18.454 8.376 18.294 10.019] CP -[18.133 11.662 17.879 11.771 17.531 10.347] CP -[17.184 8.924 16.742 7.008 16.207 4.599] CP -[15.673 2.190 15.271 1.149 15.004 1.478] CP -[14.736 1.806 14.496 2.628 14.282 3.942] CP -[14.068 5.256 13.774 5.967 13.399 6.077] CP -[13.025 6.186 12.677 5.967 12.356 5.420] CP -[12.035 4.872 11.728 4.872 11.433 5.420] CP -[11.139 5.967 10.858 6.132 10.591 5.913] CP -[10.323 5.694 9.909 5.858 9.347 6.405] CP -[8.786 6.953 8.317 7.172 7.943 7.062] CP -[7.569 6.953 7.221 6.679 6.900 6.241] CP -[6.579 5.803 6.271 5.310 5.977 4.763] CP -[5.683 4.215 5.389 4.270 5.095 4.927] CP -[4.800 5.584 4.466 6.077 4.092 6.405] CP -[3.717 6.734 3.343 6.624 2.968 6.077] CP -[2.594 5.529 2.260 5.420 1.965 5.748] CP -[1.671 6.077 1.016 6.241 -0.000 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 97.096 288.038 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[15.358 6.708] CP -[15.001 2.236 14.623 0.152 14.222 0.457] CP -[13.822 0.762 13.466 2.032 13.154 4.269] CP -[12.842 6.505 12.330 8.741 11.618 10.978] CP -[10.906 13.214 10.372 13.925 10.016 13.112] CP -[9.659 12.299 9.348 10.927 9.081 8.995] CP -[8.814 7.064 8.435 5.489 7.946 4.269] CP -[7.456 3.049 6.988 3.252 6.543 4.879] CP -[6.098 6.505 5.787 7.826 5.609 8.843] CP -[5.430 9.859 4.941 9.453 4.139 7.623] CP -[3.338 5.793 2.515 5.184 1.669 5.793] CP -[0.823 6.403 0.267 6.607 0.000 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 95.571 270.142 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.761 7.949] CP -[17.231 7.655 16.789 7.164 16.436 6.477] CP -[16.082 5.790 15.806 5.177 15.607 4.637] CP -[15.409 4.097 15.210 3.336 15.011 2.355] CP -[14.812 1.374 14.558 0.736 14.249 0.441] CP -[13.939 0.147 13.630 0.417 13.321 1.251] CP -[13.012 2.085 12.769 2.968 12.592 3.901] CP -[12.415 4.833 12.272 5.422 12.161 5.667] CP -[12.051 5.913 11.929 6.501 11.797 7.434] CP -[11.664 8.366 11.410 9.397 11.034 10.525] CP -[10.659 11.654 10.372 12.316 10.173 12.513] CP -[9.974 12.709 9.709 12.734 9.378 12.586] CP -[9.046 12.439 8.825 12.194 8.715 11.850] CP -[8.604 11.507 8.417 10.746 8.151 9.568] CP -[7.886 8.391 7.632 7.458 7.389 6.771] CP -[7.146 6.084 6.958 5.446 6.826 4.858] CP -[6.693 4.269 6.539 4.293 6.362 4.931] CP -[6.185 5.569 5.997 6.305 5.799 7.139] CP -[5.600 7.974 5.357 8.563 5.070 8.906] CP -[4.782 9.250 4.573 8.931 4.440 7.949] CP -[4.307 6.968 4.186 6.133 4.075 5.446] CP -[3.965 4.759 3.766 4.759 3.479 5.446] CP -[3.192 6.133 2.938 6.919 2.717 7.802] CP -[2.496 8.685 2.275 9.176 2.054 9.274] CP -[1.833 9.372 1.645 9.053 1.491 8.317] CP -[1.336 7.581 1.093 7.090 0.762 6.845] CP -[0.430 6.600 0.176 6.870 0.000 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.920 246.000 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[23.991 5.584] CP -[23.081 1.861 22.466 0.766 22.145 2.299] CP -[21.824 3.832 21.503 5.201 21.182 6.405] CP -[20.861 7.610 20.580 7.336 20.340 5.584] CP -[20.099 3.832 19.925 2.737 19.818 2.299] CP -[19.711 1.861 19.470 2.628 19.096 4.599] CP -[18.722 6.570 18.454 8.376 18.294 10.019] CP -[18.133 11.662 17.879 11.771 17.531 10.347] CP -[17.184 8.924 16.742 7.008 16.207 4.599] CP -[15.673 2.190 15.271 1.149 15.004 1.478] CP -[14.736 1.806 14.496 2.628 14.282 3.942] CP -[14.068 5.256 13.774 5.967 13.399 6.077] CP -[13.025 6.186 12.677 5.967 12.356 5.420] CP -[12.035 4.872 11.728 4.872 11.433 5.420] CP -[11.139 5.967 10.858 6.132 10.591 5.913] CP -[10.323 5.694 9.909 5.858 9.347 6.405] CP -[8.786 6.953 8.317 7.172 7.943 7.062] CP -[7.569 6.953 7.221 6.679 6.900 6.241] CP -[6.579 5.803 6.271 5.310 5.977 4.763] CP -[5.683 4.215 5.389 4.270 5.095 4.927] CP -[4.800 5.584 4.466 6.077 4.092 6.405] CP -[3.717 6.734 3.343 6.624 2.968 6.077] CP -[2.594 5.529 2.260 5.420 1.965 5.748] CP -[1.671 6.077 1.016 6.241 0.000 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 80.500 247.500 0.000 0.000 12.000 105.004 rect -%@EndRect -gsave -300.002 86.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -52.000 3.000 S -(h) -48.108 3.000 S -( ) -43.108 3.000 S -( ) -40.608 3.000 S -(t) -38.108 3.000 S -( ) -35.330 3.000 S -( ) -32.830 3.000 S -(i) -30.330 3.000 S -(y) -27.551 3.000 S -( ) -22.551 3.000 S -( ) -20.051 3.000 S -(p) -17.551 3.000 S -( ) -12.551 3.000 S -( ) -10.051 3.000 S -(s) -7.551 3.000 S -( ) -3.660 3.000 S -( ) -1.160 3.000 S -(z) 1.339 3.000 S -( ) 5.778 3.000 S -( ) 8.278 3.000 S -(i) 10.778 3.000 S -(h) 13.556 3.000 S -( ) 18.556 3.000 S -( ) 21.056 3.000 S -(s) 23.556 3.000 S -( ) 27.448 3.000 S -( ) 29.948 3.000 S -(i) 32.448 3.000 S -(h) 35.226 3.000 S -( ) 40.226 3.000 S -( ) 42.726 3.000 S -(t) 45.226 3.000 S -(h) 48.004 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 173.560 245.702 0.000 0.000 12.082 13.105 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 5.655] CP -[0.303 1.885 0.626 0.128 0.968 0.385] CP -[1.310 0.642 1.614 1.713 1.880 3.599] CP -[2.146 5.484 2.583 7.369 3.190 9.254] CP -[3.798 11.139 4.254 11.739 4.558 11.054] CP -[4.862 10.368 5.128 9.211 5.355 7.583] CP -[5.583 5.955 5.906 4.627 6.324 3.599] CP -[6.742 2.570 7.141 2.742 7.521 4.113] CP -[7.901 5.484 8.166 6.598 8.318 7.455] CP -[8.470 8.312 8.888 7.969 9.572 6.426] CP -[10.256 4.884 10.958 4.370 11.680 4.884] CP -[12.402 5.398 12.877 5.569 13.105 5.398] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 172.275 258.921 0.000 0.000 10.797 15.156 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.701] CP -[0.452 6.453 0.829 6.039 1.131 5.460] CP -[1.432 4.881 1.668 4.364 1.838 3.909] CP -[2.007 3.454 2.177 2.813 2.346 1.985] CP -[2.516 1.158 2.733 0.620 2.997 0.372] CP -[3.261 0.124 3.525 0.351 3.789 1.054] CP -[4.052 1.758 4.260 2.502 4.411 3.288] CP -[4.561 4.074 4.684 4.571 4.778 4.778] CP -[4.873 4.984 4.976 5.481 5.089 6.267] CP -[5.202 7.053 5.419 7.922 5.740 8.873] CP -[6.060 9.824 6.305 10.383 6.475 10.548] CP -[6.645 10.714 6.871 10.735 7.154 10.610] CP -[7.436 10.486 7.625 10.280 7.719 9.990] CP -[7.813 9.700 7.974 9.059 8.200 8.066] CP -[8.426 7.073 8.643 6.287 8.850 5.708] CP -[9.057 5.129 9.218 4.591 9.331 4.095] CP -[9.444 3.599 9.576 3.619 9.727 4.157] CP -[9.878 4.695 10.038 5.315 10.207 6.019] CP -[10.377 6.722 10.584 7.218 10.830 7.508] CP -[11.075 7.797 11.254 7.529 11.367 6.701] CP -[11.480 5.874 11.584 5.171 11.678 4.591] CP -[11.772 4.012 11.942 4.012 12.187 4.591] CP -[12.432 5.171 12.649 5.832 12.837 6.577] CP -[13.026 7.322 13.214 7.735 13.403 7.818] CP -[13.591 7.901 13.751 7.632 13.883 7.011] CP -[14.015 6.391 14.223 5.977 14.505 5.770] CP -[14.788 5.564 15.005 5.791 15.156 6.453] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 174.184 274.285 0.000 0.000 8.959 16.265 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.886] CP -[0.956 1.628] CP -[1.913 8.959 ] CP -[2.870 0.000 ] CP -[3.827 8.959 ] CP -[4.783 0.814 ] CP -[5.740 8.959 ] CP -[6.697 0.000 ] CP -[7.654 8.959 ] CP -[8.611 0.000 ] CP -[9.567 8.959 ] CP -[10.524 0.814 ] CP -[11.481 8.959 ] CP -[12.438 2.443 ] CP -[13.395 8.144 ] CP -[14.351 3.257 ] CP -[15.308 6.515 ] CP -[16.265 4.886 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.957 290.461 0.000 0.000 3.549 14.295 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 0.968] CP -[0.234 0.645] CP -[0.234 0.322 ] CP -[0.468 0.322 ] CP -[0.468 0.000 ] CP -[0.703 0.000 ] CP -[0.703 0.322 ] CP -[0.937 0.322 ] CP -[1.171 0.645 ] CP -[1.406 0.645 ] CP -[1.406 0.968 ] CP -[1.640 0.968 ] CP -[1.874 0.968 ] CP -[1.874 1.290 ] CP -[2.109 1.290 ] CP -[2.109 1.613 ] CP -[2.109 1.936 ] CP -[2.343 2.581 ] CP -[2.577 2.581 ] CP -[2.812 2.581 ] CP -[3.046 2.581 ] CP -[3.280 2.581 ] CP -[3.515 2.581 ] CP -[3.749 2.259 ] CP -[3.749 1.936 ] CP -[3.984 1.936 ] CP -[3.984 1.613 ] CP -[4.218 1.613 ] CP -[4.218 1.290 ] CP -[4.452 1.290 ] CP -[4.687 1.290 ] CP -[5.390 1.290 ] CP -[5.624 1.613 ] CP -[5.624 1.936 ] CP -[5.858 1.936 ] CP -[5.858 2.259 ] CP -[6.093 2.259 ] CP -[6.093 2.581 ] CP -[6.327 2.581 ] CP -[6.561 2.581 ] CP -[6.561 2.904 ] CP -[6.796 2.904 ] CP -[6.796 2.581 ] CP -[6.796 2.259 ] CP -[7.030 1.936 ] CP -[7.030 2.259 ] CP -[7.265 2.259 ] CP -[7.265 2.581 ] CP -[7.499 2.581 ] CP -[7.499 2.904 ] CP -[7.733 2.904 ] CP -[7.733 3.227 ] CP -[7.968 3.227 ] CP -[8.202 3.227 ] CP -[8.436 2.904 ] CP -[8.436 2.581 ] CP -[8.436 2.259 ] CP -[8.671 2.259 ] CP -[8.905 2.259 ] CP -[8.905 1.936 ] CP -[9.139 1.936 ] CP -[9.374 1.936 ] CP -[9.608 1.936 ] CP -[9.842 1.936 ] CP -[10.077 1.936 ] CP -[10.077 2.259 ] CP -[10.311 2.581 ] CP -[10.311 2.904 ] CP -[10.546 2.904 ] CP -[10.546 3.227 ] CP -[10.780 3.227 ] CP -[10.780 3.549 ] CP -[11.014 3.549 ] CP -[11.249 3.549 ] CP -[11.483 3.549 ] CP -[11.483 3.227 ] CP -[11.483 2.904 ] CP -[11.483 2.581 ] CP -[11.483 2.259 ] CP -[11.483 1.936 ] CP -[11.483 1.613 ] CP -[11.483 1.290 ] CP -[11.483 0.968 ] CP -[11.717 0.968 ] CP -[11.952 0.968 ] CP -[12.420 0.645 ] CP -[12.655 0.645 ] CP -[12.655 0.968 ] CP -[12.655 1.290 ] CP -[12.889 1.290 ] CP -[13.123 1.290 ] CP -[13.123 1.613 ] CP -[13.123 1.936 ] CP -[13.358 1.936 ] CP -[13.592 1.936 ] CP -[13.592 2.259 ] CP -[13.826 2.259 ] CP -[14.061 2.259 ] CP -[14.295 2.259 ] CP -[14.295 1.936 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.203 305.048 0.000 0.000 10.523 20.471 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.707] CP -[0.775 1.569 1.300 0.646 1.574 1.938] CP -[1.848 3.230 2.122 4.384 2.396 5.400] CP -[2.670 6.415 2.909 6.184 3.115 4.707] CP -[3.320 3.230 3.469 2.307 3.560 1.938] CP -[3.651 1.569 3.857 2.215 4.176 3.877] CP -[4.496 5.538 4.724 7.061 4.861 8.446] CP -[4.998 9.831 5.214 9.923 5.511 8.723] CP -[5.808 7.523 6.184 5.908 6.641 3.877] CP -[7.097 1.846 7.440 0.969 7.668 1.246] CP -[7.896 1.523 8.101 2.215 8.284 3.323] CP -[8.467 4.430 8.718 5.031 9.037 5.123] CP -[9.357 5.215 9.653 5.031 9.927 4.569] CP -[10.201 4.107 10.464 4.107 10.715 4.569] CP -[10.966 5.031 11.205 5.169 11.434 4.984] CP -[11.662 4.800 12.016 4.938 12.495 5.400] CP -[12.974 5.861 13.373 6.046 13.693 5.954] CP -[14.012 5.861 14.309 5.631 14.583 5.261] CP -[14.857 4.892 15.119 4.477 15.370 4.015] CP -[15.621 3.554 15.873 3.600 16.124 4.154] CP -[16.375 4.707 16.660 5.123 16.979 5.400] CP -[17.299 5.677 17.618 5.584 17.938 5.123] CP -[18.257 4.661 18.543 4.569 18.794 4.846] CP -[19.045 5.123 19.604 5.261 20.471 5.261] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 173.092 325.656 0.000 0.000 15.632 13.573 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.317] CP -[0.314 2.439 0.649 0.166 1.003 0.498] CP -[1.357 0.831 1.672 2.217 1.947 4.656] CP -[2.222 7.095 2.675 9.534 3.304 11.973] CP -[3.934 14.412 4.406 15.188 4.721 14.302] CP -[5.036 13.415 5.311 11.918 5.547 9.811] CP -[5.783 7.705 6.118 5.986 6.550 4.656] CP -[6.983 3.326 7.396 3.547 7.790 5.321] CP -[8.183 7.095 8.459 8.536 8.616 9.645] CP -[8.773 10.754 9.206 10.310 9.914 8.315] CP -[10.622 6.319 11.350 5.654 12.098 6.319] CP -[12.845 6.984 13.337 7.206 13.573 6.984] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 174.060 339.372 0.000 0.000 13.050 13.573 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.108] CP -[0.314 2.036 0.649 0.138 1.003 0.416] CP -[1.357 0.694 1.672 1.851 1.947 3.887] CP -[2.222 5.923 2.675 7.959 3.304 9.996] CP -[3.934 12.032 4.406 12.680 4.721 11.939] CP -[5.036 11.199 5.311 9.949 5.547 8.191] CP -[5.783 6.432 6.118 4.998 6.550 3.887] CP -[6.983 2.776 7.396 2.961 7.790 4.442] CP -[8.183 5.923 8.459 7.126 8.616 8.052] CP -[8.773 8.978 9.206 8.607 9.914 6.941] CP -[10.622 5.275 11.350 4.720 12.098 5.275] CP -[12.845 5.831 13.337 6.016 13.573 5.831] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 174.789 353.556 0.000 0.000 10.947 12.636 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.124] CP -[0.293 1.708 0.604 0.116 0.933 0.349] CP -[1.263 0.582 1.556 1.552 1.813 3.261] CP -[2.069 4.969 2.490 6.677 3.076 8.385] CP -[3.662 10.093 4.102 10.637 4.395 10.015] CP -[4.688 9.394 4.944 8.346 5.164 6.871] CP -[5.384 5.396 5.695 4.192 6.098 3.261] CP -[6.501 2.329 6.885 2.484 7.252 3.726] CP -[7.618 4.969 7.874 5.978 8.021 6.754] CP -[8.167 7.531 8.570 7.220 9.230 5.823] CP -[9.889 4.425 10.566 3.959 11.262 4.425] CP -[11.958 4.891 12.416 5.046 12.636 4.891] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.535 366.393 0.000 0.000 8.061 23.904 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[23.904 3.908] CP -[23.673 3.231 23.683 2.262 23.312 2.171] CP -[23.149 2.132 23.092 2.498 22.989 2.791] CP -[22.705 3.599 22.817 4.545 22.450 5.149] CP -[22.225 5.518 22.018 5.557 21.750 5.397] CP -[21.519 5.258 21.439 4.908 21.266 4.528] CP -[20.963 3.867 20.924 3.159 20.566 2.667] CP -[20.400 2.439 20.262 2.261 20.081 2.419] CP -[19.547 2.885 19.689 4.398 19.220 5.149] CP -[18.898 5.664 18.638 5.909 18.251 5.769] CP -[17.382 5.456 17.003 4.314 16.366 2.916] CP -[16.160 2.461 16.193 1.835 15.936 1.551] CP -[15.556 1.133 15.236 1.248 14.859 1.675] CP -[14.511 2.068 14.400 2.631 14.213 3.412] CP -[13.872 4.831 14.232 6.393 13.674 7.382] CP -[13.291 8.061 12.884 7.927 12.436 7.506] CP -[12.037 7.130 11.938 6.444 11.682 5.645] CP -[11.582 5.331 11.574 5.079 11.467 4.776] CP -[11.308 4.324 11.109 4.288 10.983 3.784] CP -[10.778 2.971 11.013 2.176 10.767 1.427] CP -[10.495 0.598 10.188 0.000 9.744 0.186] CP -[8.779 0.593 8.738 2.859 8.075 4.528] CP -[7.724 5.412 7.622 6.214 7.160 6.761] CP -[6.745 7.252 6.428 7.389 5.976 7.134] CP -[5.376 6.795 5.180 5.870 4.683 5.025] CP -[4.406 4.553 4.272 4.218 3.984 3.784] CP -[3.582 3.179 3.371 2.694 2.907 2.419] CP -[2.500 2.179 2.240 2.207 1.830 2.419] CP -[1.399 2.642 1.226 3.216 0.807 3.536] CP -[0.502 3.769 0.314 3.763 0.000 3.908] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 152.500 248.500 0.000 0.000 12.000 138.051 rect -%@EndRect -gsave -317.525 158.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -69.000 3.000 S -( ) -64.561 3.000 S -( ) -62.061 3.000 S -(b) -59.561 3.000 S -( ) -54.561 3.000 S -( ) -52.061 3.000 S -(i) -49.561 3.000 S -(h) -46.783 3.000 S -( ) -41.783 3.000 S -(t) -39.283 3.000 S -( ) -36.504 3.000 S -( ) -34.004 3.000 S -(l) -31.504 3.000 S -( ) -28.726 3.000 S -( ) -26.226 3.000 S -(o) -23.726 3.000 S -(h) -18.726 3.000 S -( ) -13.726 3.000 S -( ) -11.226 3.000 S -(n) -8.726 3.000 S -( ) -3.726 3.000 S -( ) -1.226 3.000 S -(g) 1.273 3.000 S -( ) 6.273 3.000 S -( ) 8.773 3.000 S -(a) 11.273 3.000 S -(x) 15.711 3.000 S -( ) 20.711 3.000 S -( ) 23.211 3.000 S -(s) 25.711 3.000 S -( ) 29.603 3.000 S -(p) 32.103 3.000 S -( ) 37.103 3.000 S -( ) 39.603 3.000 S -( ) 42.103 3.000 S -(i) 44.603 3.000 S -(y) 47.381 3.000 S -( ) 52.381 3.000 S -(t) 54.881 3.000 S -( ) 57.660 3.000 S -(s) 60.160 3.000 S -(h) 64.051 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 119.500 271.500 0.000 0.000 20.000 31.500 rect -%@EndRect -gsave -287.250 129.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -15.000 5.000 S -( ) -10.500 5.000 S -(.) -6.000 5.000 S -( ) -1.500 5.000 S -(.) 3.000 5.000 S -( ) 7.500 5.000 S -(.) 12.000 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/VQUse.eps b/HTKBook/HTKFigs/VQUse.eps deleted file mode 100644 index b56b53f..0000000 --- a/HTKBook/HTKFigs/VQUse.eps +++ /dev/null @@ -1,2075 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: VQUse.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/27/94 9:42:59 p.m. -%%BoundingBox: 9.500 280.500 256.601 783.500 -%%QDBoundingBox: 9.500 8.500 256.601 511.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.500 62.500 0.000 0.000 16.000 39.662 rect -%@EndRect -gsave -82.331 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.000 4.000 S -(P) -8.889 4.000 S -(a) -1.103 4.000 S -(r) 5.110 4.000 S -(m) 9.772 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 54.000 0.000 0.000 36.000 54.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.500 111.500 0.000 0.000 16.000 30.331 rect -%@EndRect -gsave -126.665 145.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 4.000 S -(V) -4.889 4.000 S -(Q) 5.220 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 126.000 99.000 0.000 0.000 36.000 54.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 187.000 126.000 162.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 60.000 129.000 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 135.500 0.000 0.000 31.000 57.551 rect -%@EndRect -gsave -164.275 77.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -9.334 -3.000 S -(Q) 0.775 -3.000 S -( ) 10.886 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -28.000 12.000 S -(o) -18.662 12.000 S -(d) -11.662 12.000 S -(e) -4.662 12.000 S -(b) 1.551 12.000 S -(o) 8.551 12.000 S -(o) 15.551 12.000 S -(k) 22.551 12.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 170.500 137.500 0.000 0.000 17.000 115.218 rect -%@EndRect -gsave -195.109 179.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -57.000 5.000 S -(A) -49.798 5.000 S -(R) -42.597 5.000 S -(G) -35.396 5.000 S -(E) -28.195 5.000 S -(T) -20.994 5.000 S -(K) -13.792 5.000 S -(I) -6.591 5.000 S -(N) 0.609 5.000 S -(D) 7.810 5.000 S -(=) 15.011 5.000 S -(X) 22.212 5.000 S -(X) 29.414 5.000 S -(X) 36.615 5.000 S -(_) 43.816 5.000 S -(V) 51.017 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.999 187.000 72.000 108.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 187.500 45.500 0.000 0.000 31.000 56.745 rect -%@EndRect -gsave -73.872 203.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -28.000 -3.000 S -(a) -20.213 -3.000 S -(r) -14.000 -3.000 S -(a) -9.337 -3.000 S -(m) -3.124 -3.000 S -(e) 7.765 -3.000 S -(t) 13.979 -3.000 S -(e) 17.869 -3.000 S -(r) 24.083 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -18.672 12.000 S -(e) -8.562 12.000 S -(c) -2.348 12.000 S -(t) 3.865 12.000 S -(o) 7.755 12.000 S -(r) 14.755 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.500 108.500 0.000 0.000 16.000 31.616 rect -%@EndRect -gsave -124.308 204.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(+) -15.000 4.000 S -( ) -7.104 4.000 S -(V) -3.604 4.000 S -(Q) 6.505 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 45.000 225.000 45.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 225.000 45.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 216.000 99.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 225.000 108.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 225.000 108.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 216.000 144.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 9.500 0.000 0.000 76.000 85.148 rect -%@EndRect -gsave -52.074 315.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -26.653 -26.000 S -(D) -17.315 -26.000 S -(H) -7.205 -26.000 S -(M) 2.905 -26.000 S -(M) 15.353 -26.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -30.915 -11.000 S -(e) -21.577 -11.000 S -(c) -15.363 -11.000 S -(o) -9.149 -11.000 S -(g) -2.149 -11.000 S -(n) 4.850 -11.000 S -(i) 11.850 -11.000 S -(s) 15.739 -11.000 S -(e) 21.187 -11.000 S -(r) 27.401 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -42.000 4.000 S -(i) -31.889 4.000 S -(t) -28.000 4.000 S -(h) -24.110 4.000 S -( ) -17.110 4.000 S -(V) -13.610 4.000 S -(Q) -3.500 4.000 S -(-) 6.610 4.000 S -(b) 11.272 4.000 S -(a) 18.272 4.000 S -(s) 24.486 4.000 S -(e) 29.934 4.000 S -(d) 36.148 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -25.087 19.000 S -(a) -14.977 19.000 S -(u) -8.763 19.000 S -(s) -1.763 19.000 S -(s) 3.684 19.000 S -(i) 9.132 19.000 S -(a) 13.022 19.000 S -(n) 19.236 19.000 S -( ) 26.236 19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -31.691 34.000 S -(r) -23.905 34.000 S -(e) -19.243 34.000 S -(S) -13.029 34.000 S -(e) -5.243 34.000 S -(l) 0.970 34.000 S -(e) 4.860 34.000 S -(c) 11.074 34.000 S -(t) 17.288 34.000 S -(o) 21.177 34.000 S -(r) 28.177 34.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.000 270.000 moveto -/Triangular 14.099 7.049 false 291.822 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.742 268.143 72.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 117.500 0.000 0.000 46.000 62.979 rect -%@EndRect -gsave -148.989 300.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -22.831 -11.000 S -(i) -12.720 -11.000 S -(s) -8.831 -11.000 S -(c) -3.382 -11.000 S -(r) 2.831 -11.000 S -(e) 7.493 -11.000 S -(t) 13.707 -11.000 S -(e) 17.596 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.013 4.000 S -(M) -6.903 4.000 S -(M) 5.544 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -31.000 19.000 S -(e) -21.662 19.000 S -(c) -15.448 19.000 S -(o) -9.234 19.000 S -(g) -2.234 19.000 S -(n) 4.765 19.000 S -(i) 11.765 19.000 S -(s) 15.655 19.000 S -(e) 21.103 19.000 S -(r) 27.317 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 270.000 moveto -/Triangular 14.099 7.049 false 248.216 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.257 268.143 126.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.000 72.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 80.999 70.000 81.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 328.000 117.000 328.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 417.000 54.500 0.000 0.000 16.000 39.662 rect -%@EndRect -gsave -74.331 425.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.000 4.000 S -(P) -8.889 4.000 S -(a) -1.103 4.000 S -(r) 5.110 4.000 S -(m) 9.772 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 409.500 45.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 463.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.999 461.500 72.000 436.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 409.500 moveto -/Triangular 14.099 7.049 false 321.193 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.557 408.245 113.000 376.500 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 395.500 106.500 0.000 0.000 17.000 150.101 rect -%@EndRect -gsave -181.550 404.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -75.000 5.000 S -(O) -67.798 5.000 S -(U) -60.597 5.000 S -(R) -53.396 5.000 S -(C) -46.195 5.000 S -(E) -38.994 5.000 S -(K) -31.792 5.000 S -(I) -24.591 5.000 S -(N) -17.390 5.000 S -(D) -10.189 5.000 S -(=) -2.988 5.000 S -(D) 4.212 5.000 S -(I) 11.414 5.000 S -(S) 18.615 5.000 S -(C) 25.816 5.000 S -(R) 33.017 5.000 S -(E) 40.218 5.000 S -(T) 47.419 5.000 S -(E) 54.621 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 351.000 112.000 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 355.500 115.500 0.000 0.000 31.000 64.148 rect -%@EndRect -gsave -147.574 371.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -32.000 -3.000 S -(Q) -21.889 -3.000 S -( ) -11.779 -3.000 S -(S) -8.279 -3.000 S -(p) -0.493 -3.000 S -(e) 6.506 -3.000 S -(e) 12.720 -3.000 S -(c) 18.934 -3.000 S -(h) 25.148 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.779 12.000 S -(a) -15.668 12.000 S -(t) -9.455 12.000 S -(a) -5.565 12.000 S -( ) 0.648 12.000 S -(F) 4.148 12.000 S -(i) 11.934 12.000 S -(l) 15.824 12.000 S -(e) 19.713 12.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 465.500 42.500 0.000 0.000 46.000 62.979 rect -%@EndRect -gsave -73.989 488.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -22.831 -11.000 S -(i) -12.720 -11.000 S -(s) -8.831 -11.000 S -(c) -3.382 -11.000 S -(r) 2.831 -11.000 S -(e) 7.493 -11.000 S -(t) 13.707 -11.000 S -(e) 17.596 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.013 4.000 S -(M) -6.903 4.000 S -(M) 5.544 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -31.000 19.000 S -(e) -21.662 19.000 S -(c) -15.448 19.000 S -(o) -9.234 19.000 S -(g) -2.234 19.000 S -(n) 4.765 19.000 S -(i) 11.765 19.000 S -(s) 15.655 19.000 S -(e) 21.103 19.000 S -(r) 27.317 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 9.000 49.000 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 12.500 53.500 0.000 0.000 31.000 64.148 rect -%@EndRect -gsave -85.574 28.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.139 -3.000 S -(p) -12.353 -3.000 S -(e) -5.353 -3.000 S -(e) 0.860 -3.000 S -(c) 7.074 -3.000 S -(h) 13.288 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.779 12.000 S -(a) -15.668 12.000 S -(t) -9.455 12.000 S -(a) -5.565 12.000 S -( ) 0.648 12.000 S -(F) 4.148 12.000 S -(i) 11.934 12.000 S -(l) 15.824 12.000 S -(e) 19.713 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.000 267.000 moveto -/Triangular 14.099 7.049 false 318.311 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 74.492 265.669 119.000 226.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 331.500 122.500 0.000 0.000 16.000 60.265 rect -%@EndRect -gsave -152.632 339.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -30.000 4.000 S -(r) -23.000 4.000 S -( ) -18.337 4.000 S -(c) -14.837 4.000 S -(o) -8.624 4.000 S -(p) -1.624 4.000 S -(y) 5.375 4.000 S -( ) 12.375 4.000 S -(t) 15.875 4.000 S -(o) 19.765 4.000 S -( ) 26.765 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 126.000 moveto -/Triangular 14.099 7.049 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.585 124.585 90.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -143.000 126.000 moveto -/Triangular 14.099 7.049 false -55.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 164.000 96.000 144.146 124.361 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/WordLM.eps b/HTKBook/HTKFigs/WordLM.eps deleted file mode 100644 index c5a5415..0000000 --- a/HTKBook/HTKFigs/WordLM.eps +++ /dev/null @@ -1,3106 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (WordLM2.eps) -%%CreationDate: 2/27/2002 3:15 PM -%%BoundingBox: 190 278 402 560 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentNeededFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -%%IncludeFont: Helvetica-Bold -%%IncludeFont: Helvetica-Oblique -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold -[/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Oblique Helvetica-Oblique -[/_Helvetica-Oblique/Helvetica-Oblique 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 195.4497 559.269 m -192.9297 559.269 191.0098 557.3491 191.0098 554.9497 c -191.0098 528.6714 l -191.0098 526.272 192.9297 524.2319 195.4497 524.2319 c -274.2827 524.2319 l -276.6826 524.2319 278.6025 526.272 278.6025 528.6714 c -278.6025 554.9497 l -278.6025 557.3491 276.6826 559.269 274.2827 559.269 c -195.4497 559.269 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 195.4497 559.269 m -192.9297 559.269 191.0098 557.3491 191.0098 554.9497 c -191.0098 528.6714 l -191.0098 526.272 192.9297 524.2319 195.4497 524.2319 c -274.2827 524.2319 l -276.6826 524.2319 278.6025 526.272 278.6025 528.6714 c -278.6025 554.9497 l -278.6025 557.3491 276.6826 559.269 274.2827 559.269 c -195.4497 559.269 l -s 0 To -1 0 0 1 223.7671 537.311 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(Text) Tx -(\r) Tx -TO -0 0 0 0 k -313.6396 497.9546 m -401.2324 497.9546 l -401.2324 462.9175 l -313.6396 462.9175 l -313.6396 497.9546 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 313.6396 497.9546 m -313.6396 462.9175 l -401.2324 462.9175 l -401.2324 497.9546 l -313.6396 497.9546 l -s 0 To -1 0 0 1 330.5586 476.7163 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --3 Tt --0.035 Tc -(LNew) Tx -(\r) Tx -TO -0 To -1 0 0 1 361.6348 476.7163 0 Tp -TP -0 Tr -20 Tt -0.2336 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 378.0742 476.7163 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -191.0098 497.9546 m -278.6025 497.9546 l -278.6025 462.9175 l -191.0098 462.9175 l -191.0098 497.9546 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 191.0098 497.9546 m -191.0098 462.9175 l -278.6025 462.9175 l -278.6025 497.9546 l -191.0098 497.9546 l -s 0 To -1 0 0 1 214.168 476.7163 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M 5 Tt -0.0584 Tc -(LG) Tx -(\r) Tx -TO -0 To -1 0 0 1 230.2466 476.7163 0 Tp -TP -0 Tr -11 Tt -0.1285 Tc -(Pr) Tx -(\r) Tx -TO -0 To -1 0 0 1 242.7256 476.7163 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ep) Tx -(\r) Tx -TO -0 0 0 0 k -195.4497 436.6392 m -192.9297 436.6392 191.0098 434.7192 191.0098 432.3198 c -191.0098 406.041 l -191.0098 403.6426 192.9297 401.7227 195.4497 401.7227 c -274.2827 401.7227 l -276.6826 401.7227 278.6025 403.6426 278.6025 406.041 c -278.6025 432.3198 l -278.6025 434.7192 276.6826 436.6392 274.2827 436.6392 c -195.4497 436.6392 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 195.4497 436.6392 m -192.9297 436.6392 191.0098 434.7192 191.0098 432.3198 c -191.0098 406.041 l -191.0098 403.6426 192.9297 401.7227 195.4497 401.7227 c -274.2827 401.7227 l -276.6826 401.7227 278.6025 403.6426 278.6025 406.041 c -278.6025 432.3198 l -278.6025 434.7192 276.6826 436.6392 274.2827 436.6392 c -195.4497 436.6392 l -s 0 To -1 0 0 1 208.4082 414.6816 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 221.4873 414.6816 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 240.9258 414.6816 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(file) Tx -(\r) Tx -TO -0 To -1 0 0 1 255.9243 414.6816 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -318.0791 436.6392 m -315.5596 436.6392 313.6396 434.7192 313.6396 432.3198 c -313.6396 406.041 l -313.6396 403.6426 315.5596 401.7227 318.0791 401.7227 c -396.9121 401.7227 l -399.3125 401.7227 401.2324 403.6426 401.2324 406.041 c -401.2324 432.3198 l -401.2324 434.7192 399.3125 436.6392 396.9121 436.6392 c -318.0791 436.6392 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 318.0791 436.6392 m -315.5596 436.6392 313.6396 434.7192 313.6396 432.3198 c -313.6396 406.041 l -313.6396 403.6426 315.5596 401.7227 318.0791 401.7227 c -396.9121 401.7227 l -399.3125 401.7227 401.2324 403.6426 401.2324 406.041 c -401.2324 432.3198 l -401.2324 434.7192 399.3125 436.6392 396.9121 436.6392 c -318.0791 436.6392 l -s 0 To -1 0 0 1 330.918 414.6816 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M 32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 348.5566 414.6816 0 Tp -TP -0 Tr -6 Tt -0.0701 Tc -(rd) Tx -(\r) Tx -TO -0 To -1 0 0 1 361.9961 414.6816 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 378.3145 414.6816 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -191.0098 375.3242 m -278.6025 375.3242 l -278.6025 340.2871 l -191.0098 340.2871 l -191.0098 375.3242 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 191.0098 375.3242 m -191.0098 340.2871 l -278.6025 340.2871 l -278.6025 375.3242 l -191.0098 375.3242 l -s 0 To -1 0 0 1 212.6079 354.0859 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --4 Tt --0.0467 Tc -(LGCo) Tx -(\r) Tx -TO -0 To -1 0 0 1 244.1655 354.0859 0 Tp -TP -0 Tr -26 Tt -0.3037 Tc -(py) Tx -(\r) Tx -TO -0 0 0 0 k -313.6396 375.3242 m -401.2324 375.3242 l -401.2324 340.2871 l -313.6396 340.2871 l -313.6396 375.3242 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 313.6396 375.3242 m -313.6396 340.2871 l -401.2324 340.2871 l -401.2324 375.3242 l -313.6396 375.3242 l -s 0 To -1 0 0 1 339.6777 354.0859 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M -5 Tt --0.0584 Tc -(LBui) Tx -(\r) Tx -TO -0 To -1 0 0 1 365.5957 354.0859 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ld) Tx -(\r) Tx -TO -0 0 0 0 k -318.0791 314.0098 m -315.5596 314.0098 313.6396 312.0898 313.6396 309.6895 c -313.6396 283.4121 l -313.6396 281.0117 315.5596 278.9727 318.0791 278.9727 c -396.9121 278.9727 l -399.3125 278.9727 401.2324 281.0117 401.2324 283.4121 c -401.2324 309.6895 l -401.2324 312.0898 399.3125 314.0098 396.9121 314.0098 c -318.0791 314.0098 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 318.0791 314.0098 m -315.5596 314.0098 313.6396 312.0898 313.6396 309.6895 c -313.6396 283.4121 l -313.6396 281.0117 315.5596 278.9727 318.0791 278.9727 c -396.9121 278.9727 l -399.3125 278.9727 401.2324 281.0117 401.2324 283.4121 c -401.2324 309.6895 l -401.2324 312.0898 399.3125 314.0098 396.9121 314.0098 c -318.0791 314.0098 l -s 0 To -1 0 0 1 329.5977 291.9316 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Oblique 11.6789 Tf -0 Tt -0 Tc -(n) Tx -(\r) Tx -TO -0 To -1 0 0 1 335.958 291.9316 0 Tp -TP -0 Tr -/_Helvetica 11.6789 Tf -1 Tt -0.0117 Tc -(-gra) Tx -(\r) Tx -TO -0 To -1 0 0 1 356.7168 291.9316 0 Tp -TP -0 Tr -287 Tt -3.3518 Tc -(mL) Tx -(\r) Tx -TO -0 To -1 0 0 1 376.1543 291.9316 0 Tp -TP -0 Tr -0 Tt -0 Tc -(M) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -235.166 524.2319 m -235.166 502.8735 l -235.166 502.6343 235.0464 502.5142 234.8062 502.5142 c -234.5664 502.5142 234.4463 502.6343 234.4463 502.8735 c -234.4463 524.2319 l -234.4463 524.4722 234.5664 524.5923 234.8062 524.5923 c -234.9263 524.5923 235.166 524.4722 235.166 524.2319 c -235.166 524.2319 l -f 239.7256 503.8335 m -234.8062 497.9546 l -229.8867 503.8335 l -239.7256 503.8335 l -f *U -*u -235.166 462.9175 m -235.166 441.5591 l -235.166 441.3188 235.0464 441.1987 234.8062 441.1987 c -234.686 441.1987 234.4463 441.3188 234.4463 441.5591 c -234.4463 462.9175 l -234.4463 463.1567 234.5664 463.2769 234.8062 463.2769 c -235.0464 463.2769 235.166 463.1567 235.166 462.9175 c -235.166 462.9175 l -f 239.7256 442.519 m -234.8062 436.6392 l -230.0068 442.519 l -239.7256 442.519 l -f *U -*u -357.7969 462.9175 m -357.916 441.5591 l -357.916 441.3188 357.6758 441.1987 357.4355 441.1987 c -357.3164 441.1987 357.0762 441.3188 357.0762 441.5591 c -357.0762 462.9175 l -357.0762 463.1567 357.1953 463.2769 357.4355 463.2769 c -357.6758 463.2769 357.7969 463.1567 357.7969 462.9175 c -357.7969 462.9175 l -f 362.3555 442.519 m -357.5566 436.6392 l -352.6367 442.519 l -362.3555 442.519 l -f *U -*u -357.7969 401.7227 m -357.916 380.2441 l -357.916 380.0039 357.6758 379.8848 357.4355 379.8848 c -357.3164 379.8848 357.0762 380.0039 357.0762 380.2441 c -357.0762 401.7227 l -357.0762 401.8418 357.1953 402.082 357.4355 402.082 c -357.6758 402.082 357.7969 401.8418 357.7969 401.7227 c -357.7969 401.7227 l -f 362.3555 381.2031 m -357.5566 375.3242 l -352.6367 381.2031 l -362.3555 381.2031 l -f *U -*u -278.9624 419.3608 m -311.5996 362.2461 l -311.5996 362.0059 311.5996 361.8848 311.3594 361.7656 c -311.2402 361.6465 311 361.6465 310.8799 361.8848 c -278.2427 419.0005 l -278.2427 419.1206 278.2427 419.3608 278.4824 419.481 c -278.6025 419.6011 278.8428 419.481 278.9624 419.3608 c -278.9624 419.3608 l -f 314.959 365.3652 m -313.6396 357.8066 l -306.5605 360.4453 l -314.959 365.3652 l -f *U -*u -235.166 396.8027 m -235.166 380.2441 l -235.166 380.0039 235.0464 379.8848 234.8062 379.8848 c -234.686 379.8848 234.4463 380.0039 234.4463 380.2441 c -234.4463 396.8027 l -234.4463 397.043 234.5664 397.1621 234.8062 397.1621 c -235.0464 397.1621 235.166 397.043 235.166 396.8027 c -235.166 396.8027 l -f 230.0068 395.8418 m -234.8062 401.7227 l -239.7256 395.8418 l -230.0068 395.8418 l -f 239.7256 381.2031 m -234.8062 375.3242 l -230.0068 381.2031 l -239.7256 381.2031 l -f *U -*u -357.7969 335.4883 m -357.916 318.9297 l -357.916 318.6895 357.6758 318.5684 357.4355 318.5684 c -357.3164 318.5684 357.0762 318.6895 357.0762 318.9297 c -357.0762 335.4883 l -357.0762 335.6074 357.3164 335.8477 357.4355 335.8477 c -357.6758 335.8477 357.7969 335.6074 357.7969 335.4883 c -357.7969 335.4883 l -f 352.6367 334.4082 m -357.4355 340.2871 l -362.3555 334.5273 l -352.6367 334.4082 l -f 362.3555 319.8887 m -357.5566 314.0098 l -352.6367 319.8887 l -362.3555 319.8887 l -f *U -*u -280.7622 362.2461 m -310.8799 415.1602 l -311 415.2813 311.2402 415.2813 311.3594 415.2813 c -311.5996 415.1602 311.5996 414.9219 311.5996 414.8008 c -281.3623 361.8848 l -281.2422 361.6465 281.0024 361.6465 280.8823 361.7656 c -280.6426 361.8848 280.6426 362.0059 280.7622 362.2461 c -280.7622 362.2461 l -f 285.6821 360.4453 m -278.6025 357.8066 l -277.2827 365.3652 l -285.6821 360.4453 l -f 306.5605 416.4805 m -313.6396 419.1206 l -314.959 411.6816 l -306.5605 416.4805 l -f *U -*u -281.3623 476.4761 m -311.5996 423.5601 l -311.5996 423.3208 311.5996 423.2007 311.3594 423.0806 c -311.2402 422.9604 311 422.9604 310.8799 423.2007 c -280.7622 476.1157 l -280.6426 476.2358 280.6426 476.4761 280.8823 476.5962 c -281.0024 476.7163 281.2422 476.5962 281.3623 476.4761 c -281.3623 476.4761 l -f 277.2827 472.9966 m -278.6025 480.436 l -285.6821 477.7964 l -277.2827 472.9966 l -f 314.959 426.6802 m -313.6396 419.1206 l -306.5605 421.7603 l -314.959 426.6802 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/bmemops.eps b/HTKBook/HTKFigs/bmemops.eps deleted file mode 100644 index 52efbcd..0000000 --- a/HTKBook/HTKFigs/bmemops.eps +++ /dev/null @@ -1,2191 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: bmemops.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/22/96 9:27:00 a.m. -%%BoundingBox: 27 560 357 765 -%%QDBoundingBox: 27.000 27.000 356.500 232.000 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 81.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 90.000 81.000 0.000 0.000 30.000 69.000 rect -%@EndRect -gsave -115.500 105.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(M) -24.106 -2.000 S -(e) -11.658 -2.000 S -(m) -5.444 -2.000 S -(o) 5.444 -2.000 S -(r) 12.444 -2.000 S -(y) 17.106 -2.000 S -0.000 0.000 0.000 setrgbcolor -(H) -14.769 13.000 S -(e) -4.658 13.000 S -(a) 1.555 13.000 S -(p) 7.769 13.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 27.000 63.000 0.000 0.000 16.000 71.000 rect -%@EndRect -gsave -98.500 35.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F -0.000 0.000 0.000 setrgbcolor -(C) -35.500 4.000 S -(r) -28.298 4.000 S -(e) -21.097 4.000 S -(a) -13.896 4.000 S -(t) -6.695 4.000 S -(e) 0.505 4.000 S -(H) 7.707 4.000 S -(e) 14.908 4.000 S -(a) 22.109 4.000 S -0.000 0.000 0.000 setrgbcolor -(p) -35.500 20.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 72.000 moveto -/Triangular 12.924 9.399 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 116.237 70.855 99.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 153.000 81.000 0.000 0.000 16.000 64.000 rect -%@EndRect -gsave -113.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(R) -31.500 4.000 S -(e) -24.298 4.000 S -(s) -17.097 4.000 S -(e) -9.896 4.000 S -(t) -2.695 4.000 S -0.000 0.000 0.000 setrgbcolor -(H) 4.505 4.000 S -(e) 11.707 4.000 S -(a) 18.908 4.000 S -0.000 0.000 0.000 setrgbcolor -(p) -31.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 171.000 81.000 0.000 0.000 16.000 71.000 rect -%@EndRect -gsave -116.500 179.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(D) -35.500 4.000 S -(e) -28.298 4.000 S -(l) -21.097 4.000 S -(e) -13.896 4.000 S -(t) -6.695 4.000 S -(e) 0.505 4.000 S -0.000 0.000 0.000 setrgbcolor -(H) 7.707 4.000 S -(e) 14.908 4.000 S -(a) 22.109 4.000 S -0.000 0.000 0.000 setrgbcolor -(p) -35.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 216.000 27.000 0.000 0.000 16.000 99.000 rect -%@EndRect -gsave -76.500 224.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(P) -49.500 4.000 S -(r) -42.298 4.000 S -(i) -35.097 4.000 S -(n) -27.896 4.000 S -(t) -20.695 4.000 S -0.000 0.000 0.000 setrgbcolor -(H) -13.494 4.000 S -(e) -6.292 4.000 S -(a) 0.908 4.000 S -(p) 8.109 4.000 S -(S) 15.310 4.000 S -(t) 22.511 4.000 S -(a) 29.712 4.000 S -(t) 36.914 4.000 S -0.000 0.000 0.000 setrgbcolor -(s) -49.500 20.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 126.000 54.000 0.000 0.000 126.000 36.000 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 126.000 54.000 0.000 0.000 126.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.000 207.000 moveto -/Triangular 12.924 9.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.999 205.625 54.000 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 81.000 216.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 126.000 225.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 90.000 moveto -/Triangular 12.924 9.399 false 168.702 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.651 90.269 162.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 135.000 moveto -/Triangular 12.924 9.399 false 191.323 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.651 134.730 162.000 126.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 105.000 176.000 0.000 0.000 16.000 22.000 rect -%@EndRect -gsave -187.000 113.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(N) -10.500 4.000 S -(e) -3.298 4.000 S -(w) 3.902 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 20.769 268.765 0.000 0.000 92.585 87.234 rect -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 20.769 268.765 0.000 0.000 92.585 87.234 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -164.242 72.792 moveto -/Triangular 12.924 9.399 false 292.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 164.757 71.518 169.894 58.800 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 105.000 257.000 0.000 0.000 16.000 50.000 rect -%@EndRect -gsave -282.000 113.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(D) -24.500 4.000 S -(i) -17.298 4.000 S -(s) -10.097 4.000 S -(p) -2.896 4.000 S -(o) 4.304 4.000 S -(s) 11.505 4.000 S -0.000 0.000 0.000 setrgbcolor -(e) -24.500 20.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/bobig.eps b/HTKBook/HTKFigs/bobig.eps deleted file mode 100644 index fba2472..0000000 --- a/HTKBook/HTKFigs/bobig.eps +++ /dev/null @@ -1,2776 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: bobig.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/3/95 3:45:41 p.m. -%%BoundingBox: 49.514 520.500 396.714 759.500 -%%QDBoundingBox: 49.514 32.500 396.714 271.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 88.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 86.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 96.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 102.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 124.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 138.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 160.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 168.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 174.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 196.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 194.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 204.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 210.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 92.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 164.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 200.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 92.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 164.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 200.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 97.500 183.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 79.500 138.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 79.500 138.014 79.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 97.500 381.014 79.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.014 97.500 381.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 133.500 174.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 70.500 129.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 70.500 129.014 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 133.500 390.014 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.014 133.500 390.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 205.500 174.014 205.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 223.500 138.014 205.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 223.500 138.014 223.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 205.500 381.014 223.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.014 205.500 381.014 205.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 169.500 354.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 232.500 390.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 232.500 390.014 232.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 169.500 129.014 232.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 183.014 169.500 129.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 237.014 97.500 183.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 132.500 179.014 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 169.500 179.014 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 206.500 180.014 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 132.500 180.014 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 97.500 178.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 168.500 178.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 205.500 179.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.014 185.500 179.014 170.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.014 205.500 194.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 205.500 193.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 169.500 194.014 186.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.014 134.500 193.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 97.500 193.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 189.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 97.500 237.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 133.500 237.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 169.500 237.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 205.500 237.014 205.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 247.014 0.000 0.000 16.000 7.786 rect -%@EndRect -gsave -250.907 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -3.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 258.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -260.345 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -1.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 264.014 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -269.069 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 38.500 276.014 0.000 0.000 14.000 3.333 rect -%@EndRect -gsave -277.681 45.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.485 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 282.014 0.000 0.000 16.000 2.802 rect -%@EndRect -gsave -283.415 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -0.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 287.014 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -292.069 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 299.014 0.000 0.000 14.000 4.025 rect -%@EndRect -gsave -301.026 44.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -0.794 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 307.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -309.345 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -1.485 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -208.014 112.500 moveto -/Triangular 14.099 7.049 false 302.369 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.084 110.810 246.014 52.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 34.000 320.514 0.000 0.000 16.000 76.200 rect -%@EndRect -gsave -358.614 42.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -37.985 4.000 S -(e) -34.096 4.000 S -( ) -27.882 4.000 S -(f) -24.382 4.000 S -(u) -19.720 4.000 S -(l) -12.720 4.000 S -(l) -8.830 4.000 S -( ) -4.940 4.000 S -(b) -1.440 4.000 S -(i) 5.559 4.000 S -(g) 9.448 4.000 S -(r) 16.448 4.000 S -(a) 21.110 4.000 S -(m) 27.324 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 229.514 0.000 0.000 16.000 7.786 rect -%@EndRect -gsave -233.407 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -2.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 240.514 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -242.845 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -1.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 246.514 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -251.569 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.500 258.514 0.000 0.000 14.000 3.333 rect -%@EndRect -gsave -260.181 264.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -0.985 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 265.514 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -267.845 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -1.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.000 281.514 0.000 0.000 16.000 60.258 rect -%@EndRect -gsave -311.643 260.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -29.985 4.000 S -(e) -26.096 4.000 S -( ) -19.882 4.000 S -(u) -16.382 4.000 S -(n) -9.382 4.000 S -(i) -2.382 4.000 S -(g) 1.507 4.000 S -(r) 8.507 4.000 S -(a) 13.169 4.000 S -(m) 19.383 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -219.014 196.500 moveto -/Triangular 14.099 7.049 false 437.502 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.448 198.452 231.014 250.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 51.014 0.000 0.000 16.000 9.337 rect -%@EndRect -gsave -55.683 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 63.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -65.345 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -1.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 69.014 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -74.069 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 134.500 80.014 0.000 0.000 14.000 4.025 rect -%@EndRect -gsave -82.026 141.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -0.794 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 87.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -89.345 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -1.485 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -186.014 195.500 moveto -/Triangular 14.099 7.049 false 210.570 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 184.291 194.483 103.014 146.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 152.000 49.514 0.000 0.000 31.000 57.972 rect -%@EndRect -gsave -78.500 167.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -28.985 -4.000 S -(a) -21.985 -4.000 S -(c) -15.771 -4.000 S -(k) -9.558 -4.000 S -(o) -2.558 -4.000 S -(f) 4.441 -4.000 S -(f) 9.104 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -28.985 11.000 S -(e) -18.875 11.000 S -(i) -12.661 11.000 S -(g) -8.771 11.000 S -(h) -1.771 11.000 S -(t) 5.228 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 134.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 134.000 360.000 134.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 170.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 170.000 360.000 170.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 206.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 206.000 360.000 206.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 98.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 98.000 360.000 98.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 134.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 134.000 149.000 134.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 170.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 170.000 149.000 170.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 206.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 206.000 149.000 206.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 98.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 98.000 149.000 98.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/clusterset.eps b/HTKBook/HTKFigs/clusterset.eps deleted file mode 100644 index e04a458..0000000 --- a/HTKBook/HTKFigs/clusterset.eps +++ /dev/null @@ -1,259 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: clusterset.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:12:00 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.00 -%%Orientation: Portrait -%%BoundingBox: 0 0 416 207 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --53.0 263.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06000 0.06000 sc -7.500 slw -% Ellipse -n 5259 2550 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 3450 2550 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5250 2850 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 900 1200 m 2700 1200 l 2700 2700 l 900 2700 l cp gs col-1 s gr -% Polyline -n 900 1500 m 2700 1500 l gs col-1 s gr -% Polyline -n 900 1800 m 2700 1800 l gs col-1 s gr -% Polyline -n 900 2100 m 2700 2100 l gs col-1 s gr -% Polyline -n 900 2400 m 2700 2400 l gs col-1 s gr -% Polyline -n 3300 2400 m 3600 2400 l 3600 3900 l 3300 3900 l cp gs col-1 s gr -% Polyline -n 3300 2700 m 3600 2700 l gs col-1 s gr -% Polyline -n 3300 3000 m 3600 3000 l gs col-1 s gr -% Polyline -n 3300 3300 m 3600 3300 l gs col-1 s gr -% Polyline -n 3300 3600 m 3600 3600 l gs col-1 s gr -% Polyline -n 4200 2400 m 5400 2400 l gs col-1 s gr -% Polyline -n 4200 2700 m 5400 2700 l gs col-1 s gr -% Polyline -n 4200 3000 m 5400 3000 l gs col-1 s gr -% Polyline -n 6300 2700 m 7800 2700 l 7800 3000 l 6300 3000 l cp gs col-1 s gr -% Polyline -n 6300 3300 m 7800 3300 l 7800 3600 l 6300 3600 l cp gs col-1 s gr -% Polyline -n 4200 2100 m 5400 2100 l 5400 3300 l 4200 3300 l cp gs col-1 s gr -% Polyline -n 6600 2700 m 6600 3000 l gs col-1 s gr -% Polyline -n 6900 2700 m 6900 3000 l gs col-1 s gr -% Polyline -n 7200 2700 m 7200 3000 l gs col-1 s gr -% Ellipse -n 2550 2550 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 7500 2700 m 7500 3000 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -4275 3225 m -gs 1 -1 sc (aveCost = 1.2) col-1 sh gr -% Polyline -n 6600 3300 m 6600 3600 l gs col-1 s gr -% Polyline -n 6900 3300 m 6900 3600 l gs col-1 s gr -% Polyline -n 7200 3300 m 7200 3600 l gs col-1 s gr -% Polyline -n 7500 3300 m 7500 3600 l gs col-1 s gr -% Interp Spline -gs clippath -3222 2272 m 3281 2380 l 3178 2313 l 3288 2431 l 3332 2391 l cp clip -n 2625 2550 m - 2832.6 2325.0 2945.1 2250.0 3075 2250 curveto - 3139.9 2250.0 3196.2 2287.5 3300 2400 curveto - gs col-1 s gr - gr - -% arrowhead -n 3222 2272 m 3281 2380 l 3178 2313 l 3200 2292 l 3222 2272 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4104 1985 m 4178 2083 l 4066 2032 l 4193 2133 l 4230 2086 l cp clip -n 3525 2550 m - 3528.2 2179.0 3584.4 2029.0 3750 1950 curveto - 3872.6 1891.5 3985.1 1929.0 4200 2100 curveto - gs col-1 s gr - gr - -% arrowhead -n 4104 1985 m 4178 2083 l 4066 2032 l 4085 2008 l 4104 1985 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6224 2571 m 6281 2679 l 6179 2611 l 6288 2731 l 6332 2691 l cp clip -n 5250 2550 m - 5613.9 2404.5 5782.6 2367.0 5925 2400 curveto - 6023.9 2422.9 6117.6 2497.9 6300 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 6224 2571 m 6281 2679 l 6179 2611 l 6202 2591 l 6224 2571 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6218 3175 m 6280 3280 l 6175 3217 l 6289 3332 l 6332 3289 l cp clip -n 5250 2850 m - 5596.0 2861.1 5746.0 2879.8 5850 2925 curveto - 5950.8 2968.7 6063.3 3062.5 6300 3300 curveto - gs col-1 s gr - gr - -% arrowhead -n 6218 3175 m 6280 3280 l 6175 3217 l 6196 3196 l 6218 3175 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (x) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1725 m -gs 1 -1 sc (isTree - FALSE) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2025 m -gs 1 -1 sc (numClust = 5) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2325 m -gs 1 -1 sc (ck - DIAGC) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2625 m -gs 1 -1 sc (cl) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4425 2625 m -gs 1 -1 sc (vCtr) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4425 2925 m -gs 1 -1 sc (cov) col-1 sh gr -/Times-Bold ff 180.00 scf sf -1425 1050 m -gs 1 -1 sc (ClusterSet) col-1 sh gr -/Times-Roman ff 180.00 scf sf -6675 3900 m -gs 1 -1 sc (Covariance) col-1 sh gr -/Times-Roman ff 180.00 scf sf -6750 2550 m -gs 1 -1 sc (Centroid) col-1 sh gr -/Times-Bold ff 180.00 scf sf -4500 1950 m -gs 1 -1 sc (Cluster) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2625 4125 m -gs 1 -1 sc (Array [1..numClust]) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2625 4350 m -gs 1 -1 sc (of Cluster) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4425 2325 m -gs 1 -1 sc (csize = 12) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/coercions.eps b/HTKBook/HTKFigs/coercions.eps deleted file mode 100644 index 6891c2c..0000000 --- a/HTKBook/HTKFigs/coercions.eps +++ /dev/null @@ -1,1332 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: coercions.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/30/94 11:49:39 a.m. -%%BoundingBox: 0.500 618.000 315.505 748.000 -%%QDBoundingBox: 0.500 44.000 315.505 174.000 -%%DocumentFonts: -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 0.500 0.000 0.000 17.000 43.207 rect -%@EndRect -gsave -22.103 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -21.000 4.000 S -(P) -13.798 4.000 S -(R) -6.597 4.000 S -(E) 0.603 4.000 S -(F) 7.804 4.000 S -(C) 15.005 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 99.500 0.000 0.000 17.000 21.603 rect -%@EndRect -gsave -110.301 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -10.000 4.000 S -(P) -2.798 4.000 S -(C) 4.402 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.000 72.500 0.000 0.000 17.000 64.810 rect -%@EndRect -gsave -104.905 165.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -32.000 4.000 S -(P) -24.798 4.000 S -(C) -17.597 4.000 S -(E) -10.396 4.000 S -(P) -3.195 4.000 S -(S) 4.005 4.000 S -(T) 11.207 4.000 S -(R) 18.408 4.000 S -(A) 25.609 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 171.500 0.000 0.000 17.000 50.408 rect -%@EndRect -gsave -196.704 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -25.000 4.000 S -(E) -17.798 4.000 S -(L) -10.597 4.000 S -(S) -3.396 4.000 S -(P) 3.804 4.000 S -(E) 11.005 4.000 S -(C) 18.207 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 279.500 0.000 0.000 17.000 36.005 rect -%@EndRect -gsave -297.502 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -18.000 4.000 S -(B) -10.798 4.000 S -(A) -3.597 4.000 S -(N) 3.603 4.000 S -(K) 10.804 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.000 279.500 0.000 0.000 17.000 28.804 rect -%@EndRect -gsave -293.902 165.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -14.000 4.000 S -(F) -6.798 4.000 S -(C) 0.402 4.000 S -(C) 7.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -45.500 103.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -90.500 103.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.500 103.000 47.500 103.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.500 103.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -270.500 103.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 268.500 103.000 227.500 103.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.500 112.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -108.500 157.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.499 155.000 108.500 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.500 157.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.499 155.000 297.500 112.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 44.000 127.500 0.000 0.000 17.000 57.609 rect -%@EndRect -gsave -156.304 52.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -28.000 4.000 S -(A) -20.798 4.000 S -(V) -13.597 4.000 S -(E) -6.396 4.000 S -(F) 0.804 4.000 S -(O) 8.005 4.000 S -(R) 15.207 4.000 S -(M) 22.408 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -118.500 89.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 119.609 87.335 136.500 62.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -190.500 89.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.390 87.335 172.500 62.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/cover.eps b/HTKBook/HTKFigs/cover.eps deleted file mode 100644 index 5df642b..0000000 --- a/HTKBook/HTKFigs/cover.eps +++ /dev/null @@ -1,134 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: cover.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 469 512 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 512 moveto 0 0 lineto 469 0 lineto 469 512 lineto closepath clip newpath --107.0 546.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -/Times-Roman ff 750.00 scf sf -9600 5625 m -gs 1 -1 sc (Steve Young) dup sw pop neg 0 rm col-1 sh gr -% Polyline -60.000 slw -n 2400 7275 m - 5100 7275 l gs col-1 s gr -% Polyline -n 2400 7950 m - 5100 7950 l gs col-1 s gr -/Times-Bold ff 900.00 scf sf -1800 1200 m -gs 1 -1 sc (The) col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 6750 m -gs 1 -1 sc (Dan Kershaw) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 7335 m -gs 1 -1 sc (Julian Odell) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 7920 m -gs 1 -1 sc (Dave Ollason) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 8505 m -gs 1 -1 sc (Valtcho Valtchev) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 9090 m -gs 1 -1 sc (Phil Woodland) dup sw pop neg 0 rm col-1 sh gr -/Times-Bold ff 1125.00 scf sf -6000 3600 m -gs 1 -1 sc (BOOK) col-1 sh gr -/Times-Bold ff 2100.00 scf sf -3150 3600 m -gs 1 -1 sc (T) col-1 sh gr -/Times-Bold ff 1425.00 scf sf -4200 3600 m -gs 1 -1 sc (K) col-1 sh gr -/Times-Bold ff 1425.00 scf sf -2370 3600 m -gs 1 -1 sc (H) col-1 sh gr -/Times-Bold ff 525.00 scf sf -2400 7800 m -gs 1 -1 sc (Version 2.2) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/dbhier.eps b/HTKBook/HTKFigs/dbhier.eps deleted file mode 100644 index 6c2bf28..0000000 --- a/HTKBook/HTKFigs/dbhier.eps +++ /dev/null @@ -1,2736 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: dbhier.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:2/10/95 11:21:30 p.m. -%%BoundingBox: 62.500 598.000 412.484 786.708 -%%QDBoundingBox: 62.500 5.291 412.484 194.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.984 63.000 325.984 54.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 63.000 298.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 72.000 298.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.984 72.000 325.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.984 72.000 352.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.984 72.000 379.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 72.000 406.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 99.000 298.984 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.984 99.000 271.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.984 108.000 271.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 108.000 298.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.984 108.000 325.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.984 108.000 352.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.984 108.000 379.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 135.000 298.984 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 135.000 262.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.984 144.000 262.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 144.000 298.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 334.984 144.000 334.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 370.984 144.000 370.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 144.000 406.984 135.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 253.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -266.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(1) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 289.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -302.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(2) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 325.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -338.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(3) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 361.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -374.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(4) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 397.984 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -404.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.515 3.000 S -( ) -4.015 3.000 S -(.) -1.515 3.000 S -( ) 0.984 3.000 S -(.) 3.484 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 262.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -270.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(1) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 289.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -297.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(2) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 316.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -324.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(3) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 343.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -351.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(4) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 289.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -297.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(1) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 316.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -324.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(2) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 343.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -351.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(3) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 370.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -378.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(4) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 397.984 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -404.984 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.515 3.000 S -( ) -4.015 3.000 S -(.) -1.515 3.000 S -( ) 0.984 3.000 S -(.) 3.484 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 370.984 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -377.984 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.515 3.000 S -( ) -4.015 3.000 S -(.) -1.515 3.000 S -( ) 0.984 3.000 S -(.) 3.484 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 74.500 121.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -126.500 80.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.500 3.000 S -(b) -0.500 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.204 27.000 99.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 36.000 99.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.204 36.708 325.204 27.708 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 63.000 99.000 54.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 63.000 72.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 72.000 72.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 72.000 99.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 72.000 126.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 99.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 99.000 99.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 108.000 99.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 108.000 126.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 108.000 153.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 108.000 180.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 108.000 207.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 135.000 99.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 135.000 72.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 144.000 72.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 144.000 99.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 144.000 126.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 144.000 153.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 144.000 180.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 171.000 99.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 171.000 72.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 180.000 72.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 180.000 108.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 180.000 144.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 180.000 180.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 180.000 216.000 171.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 63.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -78.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(1) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 99.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -114.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(2) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 135.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -150.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(3) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 171.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -186.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(4) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 207.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -214.000 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.500 3.000 S -( ) -4.000 3.000 S -(.) -1.500 3.000 S -( ) 1.000 3.000 S -(.) 3.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 63.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -70.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(1) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 90.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -97.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(2) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 117.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -124.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(3) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 144.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -151.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(4) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 90.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -97.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(1) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 117.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -124.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(2) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 144.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -151.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(3) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 171.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -178.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(4) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 198.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -205.000 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.500 3.000 S -( ) -4.000 3.000 S -(.) -1.500 3.000 S -( ) 1.000 3.000 S -(.) 3.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 90.000 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -101.500 43.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -11.500 3.000 S -(i) -6.500 3.000 S -(s) -3.721 3.000 S -(k) 0.169 3.000 S -(1) 5.169 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 5.791 218.334 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -220.334 11.791 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(/) -1.165 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.543 27.000 219.543 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.543 36.000 219.543 27.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 210.543 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -222.043 43.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.956 3.000 S -(i) -5.956 3.000 S -(s) -3.178 3.000 S -(k) 0.713 3.000 S -(2) 5.713 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 316.204 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -327.704 43.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -11.295 3.000 S -(i) -6.295 3.000 S -(s) -3.516 3.000 S -(k) 0.374 3.000 S -(3) 5.374 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 171.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -178.000 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.500 3.000 S -( ) -4.000 3.000 S -(.) -1.500 3.000 S -( ) 1.000 3.000 S -(.) 3.500 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/decflow.eps b/HTKBook/HTKFigs/decflow.eps deleted file mode 100644 index f481bd8..0000000 --- a/HTKBook/HTKFigs/decflow.eps +++ /dev/null @@ -1,2100 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: decflow.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 9:55:43 a.m. -%%BoundingBox: 85.887 149.000 320.934 782.500 -%%QDBoundingBox: 85.887 9.500 320.934 643.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 585.000 90.000 117.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 162.500 0.000 0.000 31.000 108.465 rect -%@EndRect -gsave -216.732 86.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -54.000 -3.000 S -(r) -44.662 -3.000 S -(e) -40.000 -3.000 S -(a) -33.786 -3.000 S -(t) -27.572 -3.000 S -(e) -23.682 -3.000 S -( ) -17.468 -3.000 S -(R) -13.968 -3.000 S -(e) -4.630 -3.000 S -(c) 1.583 -3.000 S -(o) 7.796 -3.000 S -(g) 14.796 -3.000 S -(n) 21.796 -3.000 S -(i) 28.796 -3.000 S -(t) 32.686 -3.000 S -(i) 36.576 -3.000 S -(o) 40.465 -3.000 S -(n) 47.465 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.260 12.000 S -(e) -14.149 12.000 S -(t) -7.936 12.000 S -(w) -4.046 12.000 S -(o) 6.063 12.000 S -(r) 13.063 12.000 S -(k) 17.726 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 144.000 0.000 0.000 45.000 144.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 162.500 0.000 0.000 16.000 108.465 rect -%@EndRect -gsave -216.732 161.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -46.227 4.000 S -(t) -38.441 4.000 S -(a) -34.551 4.000 S -(r) -28.337 4.000 S -(t) -23.675 4.000 S -( ) -19.786 4.000 S -(R) -16.286 4.000 S -(e) -6.948 4.000 S -(c) -0.734 4.000 S -(o) 5.479 4.000 S -(g) 12.479 4.000 S -(n) 19.479 4.000 S -(i) 26.479 4.000 S -(s) 30.369 4.000 S -(e) 35.817 4.000 S -(r) 42.031 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 144.000 0.000 0.000 36.000 144.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 241.500 162.500 0.000 0.000 31.000 108.465 rect -%@EndRect -gsave -216.732 257.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -49.143 -3.000 S -(e) -39.805 -3.000 S -(a) -33.591 -3.000 S -(d) -27.377 -3.000 S -( ) -20.377 -3.000 S -(a) -16.877 -3.000 S -(n) -10.663 -3.000 S -(d) -3.663 -3.000 S -( ) 3.336 -3.000 S -(P) 6.836 -3.000 S -(r) 14.622 -3.000 S -(o) 19.284 -3.000 S -(c) 26.284 -3.000 S -(e) 32.498 -3.000 S -(s) 38.712 -3.000 S -(s) 44.160 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -33.980 12.000 S -(b) -23.870 12.000 S -(s) -16.870 12.000 S -(e) -11.422 12.000 S -(r) -5.208 12.000 S -(v) -0.546 12.000 S -(a) 6.453 12.000 S -(t) 12.667 12.000 S -(i) 16.557 12.000 S -(o) 20.446 12.000 S -(n) 27.446 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 234.000 144.000 0.000 0.000 45.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 63.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 61.357 216.000 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 144.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 142.357 216.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 234.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 232.357 216.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 252.000 moveto -/Triangular 13.512 8.224 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 253.642 117.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.000 351.000 moveto -/Triangular 13.512 8.224 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 352.642 90.000 369.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 117.000 216.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 207.000 216.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 324.000 117.000 207.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 297.000 162.000 0.000 0.000 54.000 108.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[54.000 0.000] CP -[0.000 27.000] CP -[54.000 54.000 ] CP -[108.000 27.000 ] CP -[108.000 27.000 54.000 0.000 54.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 308.500 193.500 0.000 0.000 31.000 46.641 rect -%@EndRect -gsave -216.820 324.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -18.536 -3.000 S -(n) -9.984 -3.000 S -(d) -2.984 -3.000 S -( ) 4.015 -3.000 S -(o) 7.515 -3.000 S -(f) 14.515 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -23.000 12.000 S -(p) -15.213 12.000 S -(e) -8.213 12.000 S -(e) -2.000 12.000 S -(c) 4.213 12.000 S -(h) 10.427 12.000 S -(?) 17.427 12.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 297.000 216.000 279.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 324.000 162.000 324.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 387.500 162.500 0.000 0.000 16.000 108.465 rect -%@EndRect -gsave -216.732 395.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -46.207 4.000 S -(e) -36.096 4.000 S -(n) -29.882 4.000 S -(e) -22.882 4.000 S -(r) -16.668 4.000 S -(a) -12.006 4.000 S -(t) -5.792 4.000 S -(e) -1.903 4.000 S -( ) 4.310 4.000 S -(L) 7.810 4.000 S -(a) 16.362 4.000 S -(t) 22.576 4.000 S -(t) 26.465 4.000 S -(i) 30.355 4.000 S -(c) 34.245 4.000 S -(e) 40.458 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 378.000 144.000 0.000 0.000 36.000 144.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 304.500 144.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -149.555 312.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 349.500 225.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -230.555 357.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -5.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 378.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 376.357 216.000 351.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 475.500 162.500 0.000 0.000 31.000 108.465 rect -%@EndRect -gsave -216.732 491.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -29.513 -3.000 S -(o) -20.175 -3.000 S -(n) -13.175 -3.000 S -(v) -6.175 -3.000 S -(e) 0.824 -3.000 S -(r) 7.038 -3.000 S -(t) 11.700 -3.000 S -( ) 15.589 -3.000 S -(t) 19.089 -3.000 S -(o) 22.979 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -37.477 12.000 S -(r) -28.925 12.000 S -(a) -24.263 12.000 S -(n) -18.049 12.000 S -(s) -11.049 12.000 S -(c) -5.601 12.000 S -(r) 0.612 12.000 S -(i) 5.274 12.000 S -(p) 9.164 12.000 S -(t) 16.164 12.000 S -(i) 20.053 12.000 S -(o) 23.943 12.000 S -(n) 30.943 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 468.000 144.000 0.000 0.000 45.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 558.000 162.000 0.000 0.000 54.000 108.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[54.000 0.000] CP -[0.000 27.000] CP -[54.000 54.000 ] CP -[108.000 27.000 ] CP -[108.000 27.000 54.000 0.000 54.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 567.500 183.500 0.000 0.000 46.000 64.641 rect -%@EndRect -gsave -215.820 590.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -22.617 -11.000 S -(n) -12.506 -11.000 S -(o) -5.506 -11.000 S -(t) 1.493 -11.000 S -(h) 5.382 -11.000 S -(e) 12.382 -11.000 S -(r) 18.596 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -26.882 4.000 S -(t) -16.772 4.000 S -(t) -12.882 4.000 S -(e) -8.993 4.000 S -(r) -2.779 4.000 S -(a) 1.882 4.000 S -(n) 8.096 4.000 S -(c) 15.096 4.000 S -(e) 21.310 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(?) -2.786 19.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 565.500 144.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -149.555 573.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 610.500 234.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -239.555 618.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -5.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 468.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 466.357 216.000 414.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 558.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 556.357 216.000 513.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 585.000 162.000 585.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 643.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 641.357 216.000 613.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 252.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -286.717 25.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -34.000 -3.000 S -(e) -24.662 -3.000 S -(c) -18.448 -3.000 S -(o) -12.234 -3.000 S -(g) -5.234 -3.000 S -(n) 1.765 -3.000 S -(i) 8.765 -3.000 S -(t) 12.655 -3.000 S -(i) 16.544 -3.000 S -(o) 20.434 -3.000 S -(n) 27.434 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.275 12.000 S -(e) -14.165 12.000 S -(t) -7.951 12.000 S -(w) -4.062 12.000 S -(o) 6.048 12.000 S -(r) 13.048 12.000 S -(k) 17.710 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -252.000 45.000 moveto -/Triangular 16.099 9.799 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 255.285 44.999 315.000 45.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 187.500 248.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -282.717 203.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -27.393 -3.000 S -(n) -17.282 -3.000 S -(k) -10.282 -3.000 S -(n) -3.282 -3.000 S -(o) 3.717 -3.000 S -(w) 10.717 -3.000 S -(n) 20.827 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -19.996 12.000 S -(p) -12.210 12.000 S -(e) -5.210 12.000 S -(e) 1.003 12.000 S -(c) 7.217 12.000 S -(h) 13.431 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -247.000 224.000 moveto -/Triangular 16.099 9.799 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 250.285 223.999 310.000 224.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 421.500 248.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -282.717 437.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -19.213 -3.000 S -(a) -10.662 -3.000 S -(t) -4.448 -3.000 S -(t) -0.558 -3.000 S -(i) 3.331 -3.000 S -(c) 7.220 -3.000 S -(e) 13.434 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.506 12.000 S -(S) -11.844 12.000 S -(L) -4.058 12.000 S -(F) 4.493 12.000 S -(\)) 12.279 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -310.000 458.000 moveto -/Triangular 16.099 9.799 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 306.714 458.000 247.000 458.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 520.500 248.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -282.717 536.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -28.356 -3.000 S -(a) -19.805 -3.000 S -(b) -13.591 -3.000 S -(e) -6.591 -3.000 S -(l) -0.377 -3.000 S -( ) 3.512 -3.000 S -(F) 7.012 -3.000 S -(i) 14.798 -3.000 S -(l) 18.687 -3.000 S -(e) 22.577 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -21.756 12.000 S -(r) -14.756 12.000 S -( ) -10.094 12.000 S -(M) -6.594 12.000 S -(L) 5.853 12.000 S -(F) 14.405 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -310.000 557.000 moveto -/Triangular 16.099 9.799 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 306.714 557.000 247.000 557.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/decinet.eps b/HTKBook/HTKFigs/decinet.eps deleted file mode 100644 index fc7456c..0000000 --- a/HTKBook/HTKFigs/decinet.eps +++ /dev/null @@ -1,1558 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: decinet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/3/95 3:37:31 p.m. -%%BoundingBox: 44.500 665.500 306.000 760.112 -%%QDBoundingBox: 44.500 31.887 306.000 126.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 153.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.500 162.500 0.000 0.000 16.000 28.779 rect -%@EndRect -gsave -176.889 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -14.000 4.000 S -(o) -7.000 4.000 S -(i) 0.000 4.000 S -(n) 3.889 4.000 S -(t) 10.889 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 54.000 81.000 0.000 0.000 72.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 60.000 93.500 0.000 0.000 61.000 27.979 rect -%@EndRect -gsave -107.489 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.000 -19.000 S -(n) -6.000 -19.000 S -(e) 1.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.000 -4.000 S -(w) -9.110 -4.000 S -(o) 1.000 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -13.000 11.000 S -(.) -9.500 11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -13.000 26.000 S -(e) -6.786 26.000 S -(r) -0.572 26.000 S -(o) 4.089 26.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.714 90.000 45.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.714 90.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 36.000 72.000 36.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 45.000 63.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 90.000 135.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 117.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 63.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.000 36.000 moveto -/Triangular 10.574 8.224 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.285 35.999 108.000 36.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 54.000 234.000 0.000 0.000 72.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 60.000 246.500 0.000 0.000 61.000 27.979 rect -%@EndRect -gsave -260.489 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.000 -19.000 S -(n) -6.000 -19.000 S -(e) 1.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.000 -4.000 S -(w) -9.110 -4.000 S -(o) 1.000 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -13.000 11.000 S -(.) -9.500 11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -13.000 26.000 S -(e) -6.786 26.000 S -(r) -0.572 26.000 S -(o) 4.089 26.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.714 90.000 198.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -306.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 304.714 90.000 279.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 36.000 225.000 36.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 45.000 216.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 90.000 288.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 270.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.000 36.000 moveto -/Triangular 10.574 8.224 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 244.285 35.999 261.000 36.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/dialnet.eps b/HTKBook/HTKFigs/dialnet.eps deleted file mode 100644 index a16791e..0000000 --- a/HTKBook/HTKFigs/dialnet.eps +++ /dev/null @@ -1,3151 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: dialnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/17/95 9:01:19 p.m. -%%BoundingBox: 35.500 494.500 477.000 776.937 -%%QDBoundingBox: 35.500 15.062 477.000 297.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 146.500 78.470 0.000 0.000 14.000 43.986 rect -%@EndRect -gsave -100.463 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -21.029 3.000 S -(e) -16.359 3.000 S -(n) -11.033 3.000 S -(t) -5.033 3.000 S -(-) -1.699 3.000 S -(s) 2.296 3.000 S -(t) 6.966 3.000 S -(a) 10.300 3.000 S -(r) 15.626 3.000 S -(t) 19.622 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 72.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 70.399 153.000 36.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 142.399 153.000 126.000 153.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 38.500 256.836 0.000 0.000 14.000 17.326 rect -%@EndRect -gsave -265.500 45.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -8.663 3.000 S -(n) -2.663 3.000 S -(e) 3.336 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 65.500 256.500 0.000 0.000 14.000 18.000 rect -%@EndRect -gsave -265.500 72.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -9.000 3.000 S -(w) -5.666 3.000 S -(o) 3.000 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 92.500 253.508 0.000 0.000 14.000 23.982 rect -%@EndRect -gsave -265.500 99.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -11.991 3.000 S -(h) -8.657 3.000 S -(r) -2.657 3.000 S -(e) 1.338 3.000 S -(e) 6.665 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 146.500 255.175 0.000 0.000 14.000 20.648 rect -%@EndRect -gsave -265.500 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -10.324 3.000 S -(e) -4.998 3.000 S -(r) 0.328 3.000 S -(o) 4.324 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 72.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 108.000 234.000 54.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 110.500 175.502 0.000 0.000 14.000 17.994 rect -%@EndRect -gsave -184.500 117.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -8.997 3.000 S -(i) -2.997 3.000 S -(a) 0.336 3.000 S -(l) 5.663 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.000 162.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 117.000 207.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 108.000 216.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 18.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.000 18.000 225.000 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 72.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 108.000 297.000 54.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.000 108.000 315.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 18.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 18.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.600 17.999 288.000 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 153.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 218.500 169.836 0.000 0.000 14.000 29.326 rect -%@EndRect -gsave -184.500 225.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -14.663 3.000 S -(h) -8.663 3.000 S -(o) -2.663 3.000 S -(n) 3.336 3.000 S -(e) 9.336 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 162.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 153.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 254.500 175.839 0.000 0.000 14.000 17.320 rect -%@EndRect -gsave -184.500 261.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -8.660 3.000 S -(a) -3.333 3.000 S -(l) 1.992 3.000 S -(l) 5.326 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 252.000 162.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 153.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 252.000 153.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 144.000 153.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 135.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 135.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 198.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 198.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 182.500 251.167 0.000 0.000 14.000 28.664 rect -%@EndRect -gsave -265.500 189.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(J) -14.332 3.000 S -(u) -9.662 3.000 S -(l) -3.662 3.000 S -(i) -0.328 3.000 S -(a) 3.005 3.000 S -(n) 8.332 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 182.500 324.169 0.000 0.000 14.000 26.660 rect -%@EndRect -gsave -337.500 189.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -13.330 3.000 S -(d) -4.664 3.000 S -(e) 1.335 3.000 S -(l) 6.662 3.000 S -(l) 9.996 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 315.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 189.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.399 189.000 288.000 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 171.000 288.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 234.000 234.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 218.500 252.840 0.000 0.000 14.000 25.318 rect -%@EndRect -gsave -265.500 225.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -12.659 3.000 S -(a) -3.993 3.000 S -(v) 1.333 3.000 S -(e) 7.333 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 225.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.399 225.000 288.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 207.000 288.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 144.000 234.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 144.000 297.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 117.000 306.000 117.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 119.500 253.508 0.000 0.000 14.000 25.986 rect -%@EndRect -gsave -266.501 126.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -12.991 3.000 S -(.) -9.991 3.000 S -(.) -6.991 3.000 S -( ) -3.991 3.000 S -(e) -0.991 3.000 S -(t) 4.334 3.000 S -(c) 7.668 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 281.500 252.169 0.000 0.000 14.000 26.660 rect -%@EndRect -gsave -265.500 288.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.330 3.000 S -(t) -6.656 3.000 S -(e) -3.322 3.000 S -(v) 2.003 3.000 S -(e) 8.003 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 279.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 281.500 321.166 0.000 0.000 14.000 32.666 rect -%@EndRect -gsave -337.500 288.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -16.333 3.000 S -(o) -7.666 3.000 S -(u) -1.666 3.000 S -(n) 4.333 3.000 S -(g) 10.333 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 279.000 315.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 288.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.399 288.000 288.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 270.000 288.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 252.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 245.500 252.506 0.000 0.000 14.000 25.986 rect -%@EndRect -gsave -265.500 252.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -12.993 3.000 S -(.) -9.993 3.000 S -(.) -6.993 3.000 S -( ) -3.993 3.000 S -(e) -0.993 3.000 S -(t) 4.333 3.000 S -(c) 7.666 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 279.000 234.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 218.500 318.834 0.000 0.000 14.000 37.330 rect -%@EndRect -gsave -337.500 225.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -18.665 3.000 S -(l) -9.999 3.000 S -(l) -6.665 3.000 S -(a) -3.331 3.000 S -(s) 1.995 3.000 S -(o) 6.665 3.000 S -(n) 12.665 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 315.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 369.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 369.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 144.000 369.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 279.000 369.000 162.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 146.500 402.448 0.000 0.000 14.000 40.652 rect -%@EndRect -gsave -422.774 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -20.051 3.000 S -(e) -15.381 3.000 S -(n) -10.055 3.000 S -(t) -4.055 3.000 S -(-) -0.721 3.000 S -(e) 3.274 3.000 S -(n) 8.600 3.000 S -(d) 14.600 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 396.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 394.399 153.000 378.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -477.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 475.399 153.000 450.000 153.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/digitnets.eps b/HTKBook/HTKFigs/digitnets.eps deleted file mode 100644 index f8ad673..0000000 --- a/HTKBook/HTKFigs/digitnets.eps +++ /dev/null @@ -1,4420 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: digitnets.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 11:28:42 p.m. -%%BoundingBox: 8.500 496.975 531.500 786.500 -%%QDBoundingBox: 8.500 5.500 531.500 295.024 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 15.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 128.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -138.000 79.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 24.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 24.000 99.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 51.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 51.000 99.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 114.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 114.000 99.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 24.000 162.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 51.000 162.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 114.000 162.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 69.000 180.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 105.000 180.000 87.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 69.000 90.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 105.000 90.000 87.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 128.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -141.000 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 23.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 50.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 9.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 252.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 78.000 18.000 78.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 78.000 189.000 78.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 6.000 11.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -19.500 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(a) -3.837 4.000 S -(\)) 2.375 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 15.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 398.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -408.000 79.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 24.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 24.000 369.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 51.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 51.000 369.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 114.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 114.000 369.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 24.000 432.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 51.000 432.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 114.000 432.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 69.000 450.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 105.000 450.000 87.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 69.000 360.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 105.000 360.000 87.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 398.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -411.000 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 23.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 50.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 279.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 522.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 78.000 288.000 78.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 522.000 78.000 459.000 78.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 6.000 281.000 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -290.000 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(b) -3.837 4.000 S -(\)) 3.162 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.000 297.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.000 313.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -320.500 77.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.000 468.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.000 484.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -491.500 77.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 168.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 258.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.000 128.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -138.000 232.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 177.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 177.000 99.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 204.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 204.000 99.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 267.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 267.000 99.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 177.000 162.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 204.000 162.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 267.000 162.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 222.000 180.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 258.000 180.000 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 222.000 90.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 258.000 90.000 240.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.000 128.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -141.000 266.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 176.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 9.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 252.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 231.000 18.000 231.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 231.000 189.000 231.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.000 11.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -19.500 166.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(c) -3.837 4.000 S -(\)) 2.375 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 27.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 43.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -50.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 198.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 214.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -221.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 181.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 79.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 187.000 291.500 85.500 291.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.500 285.000 193.500 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 178.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 79.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.500 284.500 79.500 238.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.500 291.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.500 291.499 145.000 291.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 168.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 258.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.000 398.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -408.000 232.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 177.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 177.000 369.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 204.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 204.000 369.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 267.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 267.000 369.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 177.000 432.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 204.000 432.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 267.000 432.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 222.000 450.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 258.000 450.000 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 222.000 360.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 258.000 360.000 240.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.000 398.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -411.000 266.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 176.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 522.000 231.000 459.000 231.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.000 281.000 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -290.000 166.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(d) -3.837 4.000 S -(\)) 3.162 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 468.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 484.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -491.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 451.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 349.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 457.000 291.500 355.500 291.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 463.500 285.000 463.500 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 448.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 349.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 349.500 284.500 349.500 238.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.500 291.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 398.500 291.499 415.000 291.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 231.000 288.000 231.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 349.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 280.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 337.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 292.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 344.000 212.500 297.500 212.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 279.000 0.000 0.000 9.000 9.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 518.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 449.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 506.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 461.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 513.000 212.500 466.500 212.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 522.000 0.000 0.000 9.000 9.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 297.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 313.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -320.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -329.000 212.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 327.000 212.500 310.500 212.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -500.000 212.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 498.000 212.500 481.500 212.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/discriminative.eps b/HTKBook/HTKFigs/discriminative.eps deleted file mode 100644 index f74630e..0000000 --- a/HTKBook/HTKFigs/discriminative.eps +++ /dev/null @@ -1,523 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: discriminative.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Tue Feb 24 11:35:13 2009 -%%For: mjfg@mjfghp (Mark Gales) -%%BoundingBox: 0 0 571 652 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 652 moveto 0 0 lineto 571 0 lineto 571 652 lineto closepath clip newpath --10.6 717.5 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06000 0.06000 sc -% -% Fig objects follow -% -% -% here starts figure with depth 0 -% Polyline -30.000 slw -n 345 3360 m 210 3360 210 4275 135 arcto 4 {pop} repeat - 210 4410 1950 4410 135 arcto 4 {pop} repeat - 2085 4410 2085 3495 135 arcto 4 {pop} repeat - 2085 3360 345 3360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -720 3735 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -600 4050 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -375 4275 m -gs 1 -1 sc (\(wlat.den\)) col-1 sh gr -% Polyline -n 2775 3450 m 4500 3450 l 4500 4125 l 2775 4125 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -3225 3900 m -gs 1 -1 sc (HD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3675 3900 m -gs 1 -1 sc (ecode) col-1 sh gr -% Polyline -n 300 5025 m 2025 5025 l 2025 5700 l 300 5700 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -600 5475 m -gs 1 -1 sc (HLR) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1200 5475 m -gs 1 -1 sc (escore) col-1 sh gr -% Polyline -n 2835 1125 m 2700 1125 2700 2040 135 arcto 4 {pop} repeat - 2700 2175 4290 2175 135 arcto 4 {pop} repeat - 4425 2175 4425 1260 135 arcto 4 {pop} repeat - 4425 1125 2835 1125 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Courier ff 240.00 scf sf -3075 2067 m -gs 1 -1 sc (\(hmm20\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2775 1500 m -gs 1 -1 sc (ML Acoustic) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3075 1800 m -gs 1 -1 sc (Models) col-1 sh gr -% Polyline -n 5475 3450 m 7200 3450 l 7200 4125 l 5475 4125 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5775 3900 m -gs 1 -1 sc (HLR) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6375 3900 m -gs 1 -1 sc (escore) col-1 sh gr -% Polyline -gs clippath -3465 7815 m 3585 7815 l 3585 7528 l 3525 7768 l 3465 7528 l cp -eoclip -n 3525 7200 m - 3525 7800 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 7528 m 3525 7768 l 3585 7528 l 3465 7528 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 2745 7860 m 2610 7860 2610 8775 135 arcto 4 {pop} repeat - 2610 8910 4350 8910 135 arcto 4 {pop} repeat - 4485 8910 4485 7995 135 arcto 4 {pop} repeat - 4485 7860 2745 7860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -2700 8250 m -gs 1 -1 sc (Phone marked) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3075 8550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -2850 8775 m -gs 1 -1 sc (\(plat.den\)) col-1 sh gr -% Polyline -n 3900 9600 m 6000 9600 l 6000 10275 l 3900 10275 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -5025 10050 m -gs 1 -1 sc (EST \(x4\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3975 10050 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 4110 10875 m 3975 10875 3975 11790 135 arcto 4 {pop} repeat - 3975 11925 5790 11925 135 arcto 4 {pop} repeat - 5925 11925 5925 11010 135 arcto 4 {pop} repeat - 5925 10875 4110 10875 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Courier ff 240.00 scf sf -4425 11817 m -gs 1 -1 sc (\(hmm24\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4050 11250 m -gs 1 -1 sc (MPE Acoustic) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4425 11550 m -gs 1 -1 sc (Models) col-1 sh gr -% Polyline -gs clippath -4890 10890 m 5010 10890 l 5010 10603 l 4950 10843 l 4890 10603 l cp -eoclip -n 4950 10275 m - 4950 10875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4890 10603 m 4950 10843 l 5010 10603 l 4890 10603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 7920 3285 m 7785 3285 7785 4200 135 arcto 4 {pop} repeat - 7785 4335 9525 4335 135 arcto 4 {pop} repeat - 9660 4335 9660 3420 135 arcto 4 {pop} repeat - 9660 3285 7920 3285 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Courier ff 240.00 scf sf -7905 4200 m -gs 1 -1 sc (\(words.mlf\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7860 3960 m -gs 1 -1 sc (Transcriptions) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8295 3660 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7800 1725 m -gs 1 -1 sc (LGP) col-1 sh gr -/Times-Roman ff 240.00 scf sf -8325 1725 m -gs 1 -1 sc (rep) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8625 1725 m -gs 1 -1 sc (/LB) col-1 sh gr -/Times-Roman ff 240.00 scf sf -9075 1725 m -gs 1 -1 sc (uild) col-1 sh gr -% Polyline -gs clippath -3390 3465 m 3510 3465 l 3510 3178 l 3450 3418 l 3390 3178 l cp -eoclip -n 3450 2175 m - 3450 3450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3390 3178 m 3450 3418 l 3510 3178 l 3390 3178 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6090 3465 m 6210 3465 l 6210 3178 l 6150 3418 l 6090 3178 l cp -eoclip -n 6150 2175 m - 6150 3450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6090 3178 m 6150 3418 l 6210 3178 l 6090 3178 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3927 3369 m 3981 3476 l 4238 3348 l 3997 3402 l 4184 3241 l cp -eoclip -n 5618 2141 m 5618 2591 l - 3968 3416 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4184 3241 m 3997 3402 l 4238 3348 l 4184 3241 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2085 3765 m 2085 3885 l 2372 3885 l 2132 3825 l 2372 3765 l cp -eoclip -n 2700 3825 m - 2100 3825 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2372 3765 m 2132 3825 l 2372 3885 l 2372 3765 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1065 5040 m 1185 5040 l 1185 4753 l 1125 4993 l 1065 4753 l cp -eoclip -n 1125 4425 m - 1125 5025 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1065 4753 m 1125 4993 l 1185 4753 l 1065 4753 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2640 5385 m 2640 5265 l 2353 5265 l 2593 5325 l 2353 5385 l cp -eoclip -n 2025 5325 m - 2625 5325 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2353 5385 m 2593 5325 l 2353 5265 l 2353 5385 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4410 6765 m 4410 6885 l 4697 6885 l 4457 6825 l 4697 6765 l cp -eoclip -n 3900 2175 m 3900 2850 l 4950 2850 l 4950 6825 l - 4425 6825 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4697 6765 m 4457 6825 l 4697 6885 l 4697 6765 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -5415 6885 m 5415 6765 l 5128 6765 l 5368 6825 l 5128 6885 l cp -eoclip -n 4800 6825 m - 5400 6825 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5128 6885 m 5368 6825 l 5128 6765 l 5128 6885 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6240 4815 m 6360 4815 l 6360 4528 l 6300 4768 l 6240 4528 l cp -eoclip -n 6300 4125 m - 6300 4800 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6240 4528 m 6300 4768 l 6360 4528 l 6240 4528 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3465 6540 m 3585 6540 l 3585 6253 l 3525 6493 l 3465 6253 l cp -eoclip -n 3525 5925 m - 3525 6525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 6253 m 3525 6493 l 3585 6253 l 3465 6253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6165 6540 m 6285 6540 l 6285 6253 l 6225 6493 l 6165 6253 l cp -eoclip -n 6225 5925 m - 6225 6525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6165 6253 m 6225 6493 l 6285 6253 l 6165 6253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 2700 6525 m 4425 6525 l 4425 7200 l 2700 7200 l - cp gs col-1 s gr -% Polyline -n 5400 6525 m 7125 6525 l 7125 7200 l 5400 7200 l - cp gs col-1 s gr -% Polyline -gs clippath -6165 7815 m 6285 7815 l 6285 7528 l 6225 7768 l 6165 7528 l cp -eoclip -n 6225 7200 m - 6225 7800 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6165 7528 m 6225 7768 l 6285 7528 l 6165 7528 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 5445 7860 m 5310 7860 5310 8775 135 arcto 4 {pop} repeat - 5310 8910 7050 8910 135 arcto 4 {pop} repeat - 7185 8910 7185 7995 135 arcto 4 {pop} repeat - 7185 7860 5445 7860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -4065 9540 m 4185 9540 l 4185 9253 l 4125 9493 l 4065 9253 l cp -eoclip -n 4125 8925 m - 4125 9525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4065 9253 m 4125 9493 l 4185 9253 l 4065 9253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -5715 9540 m 5835 9540 l 5835 9253 l 5775 9493 l 5715 9253 l cp -eoclip -n 5775 8925 m - 5775 9525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5715 9253 m 5775 9493 l 5835 9253 l 5715 9253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4890 9615 m 5010 9615 l 5010 9328 l 4950 9568 l 4890 9328 l cp -eoclip -n 4950 6825 m - 4950 9600 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4890 9328 m 4950 9568 l 5010 9328 l 4890 9328 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 5160 1125 m 5025 1125 5025 2040 135 arcto 4 {pop} repeat - 5025 2175 6615 2175 135 arcto 4 {pop} repeat - 6750 2175 6750 1260 135 arcto 4 {pop} repeat - 6750 1125 5160 1125 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 5445 4860 m 5310 4860 5310 5790 135 arcto 4 {pop} repeat - 5310 5925 7215 5925 135 arcto 4 {pop} repeat - 7350 5925 7350 4995 135 arcto 4 {pop} repeat - 7350 4860 5445 4860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 2745 4860 m 2610 4860 2610 5790 135 arcto 4 {pop} repeat - 2610 5925 4515 5925 135 arcto 4 {pop} repeat - 4650 5925 4650 4995 135 arcto 4 {pop} repeat - 4650 4860 2745 4860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -6735 1590 m 6735 1710 l 7022 1710 l 6782 1650 l 7022 1590 l cp -eoclip -n 7725 1650 m - 6750 1650 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7022 1590 m 6782 1650 l 7022 1710 l 7022 1590 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -7185 3690 m 7185 3810 l 7472 3810 l 7232 3750 l 7472 3690 l cp -eoclip -n 7800 3750 m - 7200 3750 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7472 3690 m 7232 3750 l 7472 3810 l 7472 3690 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -8685 2010 m 8565 2010 l 8565 2297 l 8625 2057 l 8685 2297 l cp -eoclip -n 8625 3300 m - 8625 2025 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8685 2297 m 8625 2057 l 8565 2297 l 8685 2297 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 7725 1350 m 9525 1350 l 9525 2025 l 7725 2025 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -2850 6975 m -gs 1 -1 sc (HD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3300 6975 m -gs 1 -1 sc (ecode.mod) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5400 8250 m -gs 1 -1 sc (Phone marked) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5775 8550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -5550 8775 m -gs 1 -1 sc (\(plat.num\)) col-1 sh gr -/Courier ff 240.00 scf sf -5250 2025 m -gs 1 -1 sc (\(trainbg\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5325 1500 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5475 1800 m -gs 1 -1 sc (Model) col-1 sh gr -/Courier ff 240.00 scf sf -5325 5775 m -gs 1 -1 sc (\(wlat.num.det\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5925 5250 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5850 5550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3225 5250 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3075 5550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -2625 5775 m -gs 1 -1 sc (\(wlat.den.det\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5550 6975 m -gs 1 -1 sc (HD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6000 6975 m -gs 1 -1 sc (ecode.mod) col-1 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff --git a/HTKBook/HTKFigs/discriminative.fig b/HTKBook/HTKFigs/discriminative.fig deleted file mode 100644 index 523446b..0000000 --- a/HTKBook/HTKFigs/discriminative.fig +++ /dev/null @@ -1,168 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -A4 -100.00 -Single --2 -1200 2 -6 150 3300 2100 4425 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 2085 4410 210 4410 210 3360 2085 3360 2085 4410 -4 0 -1 0 0 0 20 0.0000 4 195 690 720 3735 Word\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 600 4050 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 180 1500 375 4275 (wlat.den)\001 --6 -6 2700 3375 4575 4200 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2775 3450 4500 3450 4500 4125 2775 4125 2775 3450 -4 0 -1 0 0 0 20 0.0000 4 195 450 3225 3900 HD\001 -4 0 -1 0 0 0 16 0.0000 4 150 555 3675 3900 ecode\001 --6 -6 225 4950 2100 5775 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 300 5025 2025 5025 2025 5700 300 5700 300 5025 -4 0 -1 0 0 0 20 0.0000 4 195 600 600 5475 HLR\001 -4 0 -1 0 0 0 16 0.0000 4 105 600 1200 5475 escore\001 --6 -6 2625 1050 4500 2250 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4425 2175 2700 2175 2700 1125 4425 1125 4425 2175 -4 0 -1 0 0 5 16 0.0000 0 180 1050 3075 2067 (hmm20)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1620 2775 1500 ML Acoustic\001 -4 0 -1 0 0 0 20 0.0000 4 210 915 3075 1800 Models\001 --6 -6 5400 3375 7275 4200 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5475 3450 7200 3450 7200 4125 5475 4125 5475 3450 -4 0 -1 0 0 0 20 0.0000 4 195 600 5775 3900 HLR\001 -4 0 -1 0 0 0 16 0.0000 4 105 600 6375 3900 escore\001 --6 -6 2550 7125 4500 8925 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 7200 3525 7800 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4485 8910 2610 8910 2610 7860 4485 7860 4485 8910 -4 0 -1 0 0 0 20 0.0000 4 210 1740 2700 8250 Phone marked\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 3075 8550 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 195 1500 2850 8775 (plat.den)\001 --6 -6 3825 9525 6075 12000 -6 3825 9525 6075 10350 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3900 9600 6000 9600 6000 10275 3900 10275 3900 9600 -4 0 -1 0 0 0 16 0.0000 4 210 885 5025 10050 EST (x4)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 3975 10050 HMMIR\001 --6 -6 3900 10800 6000 12000 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 5925 11925 3975 11925 3975 10875 5925 10875 5925 11925 -4 0 -1 0 0 5 16 0.0000 0 180 1050 4425 11817 (hmm24)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1785 4050 11250 MPE Acoustic\001 -4 0 -1 0 0 0 20 0.0000 4 210 915 4425 11550 Models\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4950 10275 4950 10875 --6 -6 7770 3270 9675 4350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 9660 4335 7785 4335 7785 3285 9660 3285 9660 4335 -4 0 -1 0 0 5 16 0.0000 0 180 1650 7905 4200 (words.mlf)\001 -4 0 -1 0 0 0 20 0.0000 4 270 1770 7860 3960 Transcriptions\001 -4 0 -1 0 0 0 20 0.0000 4 195 690 8295 3660 Word\001 --6 -6 7800 1500 8625 1800 -4 0 -1 0 0 0 20 0.0000 4 195 570 7800 1725 LGP\001 -4 0 -1 0 0 0 16 0.0000 4 165 300 8325 1725 rep\001 --6 -6 8625 1500 9450 1725 -4 0 -1 0 0 0 20 0.0000 4 195 465 8625 1725 /LB\001 -4 0 -1 0 0 0 16 0.0000 4 165 360 9075 1725 uild\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3450 2175 3450 3450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6150 2175 6150 3450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 5618 2141 5618 2591 3968 3416 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2700 3825 2100 3825 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1125 4425 1125 5025 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 5325 2625 5325 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 5 - 1 1 2.00 120.00 240.00 - 3900 2175 3900 2850 4950 2850 4950 6825 4425 6825 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4800 6825 5400 6825 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6300 4125 6300 4800 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 5925 3525 6525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6225 5925 6225 6525 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2700 6525 4425 6525 4425 7200 2700 7200 2700 6525 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5400 6525 7125 6525 7125 7200 5400 7200 5400 6525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6225 7200 6225 7800 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 7185 8910 5310 8910 5310 7860 7185 7860 7185 8910 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4125 8925 4125 9525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5775 8925 5775 9525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4950 6825 4950 9600 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 6750 2175 5025 2175 5025 1125 6750 1125 6750 2175 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 7350 5925 5310 5925 5310 4860 7350 4860 7350 5925 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4650 5925 2610 5925 2610 4860 4650 4860 4650 5925 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7725 1650 6750 1650 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7800 3750 7200 3750 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8625 3300 8625 2025 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7725 1350 9525 1350 9525 2025 7725 2025 7725 1350 -4 0 -1 0 0 0 20 0.0000 4 195 450 2850 6975 HD\001 -4 0 -1 0 0 0 16 0.0000 4 150 1035 3300 6975 ecode.mod\001 -4 0 -1 0 0 0 20 0.0000 4 210 1740 5400 8250 Phone marked\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 5775 8550 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 195 1500 5550 8775 (plat.num)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1350 5250 2025 (trainbg)\001 -4 0 -1 0 0 0 20 0.0000 4 255 1185 5325 1500 Language\001 -4 0 -1 0 0 0 20 0.0000 4 210 795 5475 1800 Model\001 -4 0 -1 0 0 5 16 0.0000 0 180 2100 5325 5775 (wlat.num.det)\001 -4 0 -1 0 0 0 20 0.0000 4 195 690 5925 5250 Word\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 5850 5550 Lattices\001 -4 0 -1 0 0 0 20 0.0000 4 195 690 3225 5250 Word\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 3075 5550 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 180 2100 2625 5775 (wlat.den.det)\001 -4 0 -1 0 0 0 20 0.0000 4 195 450 5550 6975 HD\001 -4 0 -1 0 0 0 16 0.0000 4 150 1035 6000 6975 ecode.mod\001 diff --git a/HTKBook/HTKFigs/dmaker.eps b/HTKBook/HTKFigs/dmaker.eps deleted file mode 100644 index 3139b2b..0000000 --- a/HTKBook/HTKFigs/dmaker.eps +++ /dev/null @@ -1,1816 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: dmaker.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 4:58:19 p.m. -%%BoundingBox: 54.500 429.500 451.500 765.500 -%%QDBoundingBox: 54.500 26.500 451.500 362.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.500 154.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -166.165 95.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 144.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -147.000 81.000 moveto -/Triangular 14.099 7.049 false 230.809 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.735 79.450 116.000 43.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -166.000 81.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.999 79.000 166.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 154.500 0.000 0.000 16.000 25.662 rect -%@EndRect -gsave -167.331 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.000 4.000 S -(r) -4.213 4.000 S -(c) 0.448 4.000 S -(1) 6.662 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 88.500 0.000 0.000 16.000 49.375 rect -%@EndRect -gsave -113.187 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.000 4.000 S -(r) -16.213 4.000 S -(c) -11.551 4.000 S -(1) -5.337 4.000 S -(.) 1.662 4.000 S -(d) 5.162 4.000 S -(e) 12.162 4.000 S -(d) 18.375 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 189.000 0.000 0.000 45.000 189.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.500 269.500 0.000 0.000 16.000 36.538 rect -%@EndRect -gsave -287.769 167.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -18.000 4.000 S -(e) -5.551 4.000 S -(r) 0.662 4.000 S -(g) 5.324 4.000 S -(e) 12.324 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.000 144.000 moveto -/Triangular 14.099 7.049 false 233.146 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.799 142.400 171.000 108.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 228.500 275.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -287.165 236.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 222.000 265.000 0.000 0.000 27.000 45.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.000 225.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.999 223.000 287.000 189.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.500 275.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -287.165 95.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 265.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -268.000 81.000 moveto -/Triangular 14.099 7.049 false 230.809 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 266.735 79.450 237.000 43.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.000 81.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.999 79.000 287.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 275.500 0.000 0.000 16.000 25.662 rect -%@EndRect -gsave -288.331 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.000 4.000 S -(r) -4.213 4.000 S -(c) 0.448 4.000 S -(2) 6.662 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 209.500 0.000 0.000 16.000 49.375 rect -%@EndRect -gsave -234.187 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.000 4.000 S -(r) -16.213 4.000 S -(c) -11.551 4.000 S -(2) -5.337 4.000 S -(.) 1.662 4.000 S -(d) 5.162 4.000 S -(e) 12.162 4.000 S -(d) 18.375 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.500 406.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -418.165 95.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 396.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -399.000 81.000 moveto -/Triangular 14.099 7.049 false 230.809 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 397.735 79.450 368.000 43.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -418.000 81.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 417.999 79.000 418.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 406.500 0.000 0.000 16.000 25.662 rect -%@EndRect -gsave -419.331 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.000 4.000 S -(r) -4.213 4.000 S -(c) 0.448 4.000 S -(3) 6.662 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 340.500 0.000 0.000 16.000 49.375 rect -%@EndRect -gsave -365.187 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.000 4.000 S -(r) -16.213 4.000 S -(c) -11.551 4.000 S -(3) -5.337 4.000 S -(.) 1.662 4.000 S -(d) 5.162 4.000 S -(e) 12.162 4.000 S -(d) 18.375 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 144.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.999 142.000 288.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 144.000 moveto -/Triangular 14.099 7.049 false 321.362 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 370.561 142.750 414.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -286.000 330.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.999 328.000 286.000 249.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 331.500 250.500 0.000 0.000 31.000 72.713 rect -%@EndRect -gsave -286.856 347.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.029 -3.000 S -(T) -3.918 -3.000 S -(K) 4.632 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.577 12.000 S -(i) -19.467 12.000 S -(c) -15.577 12.000 S -(t) -9.363 12.000 S -(i) -5.474 12.000 S -(o) -1.584 12.000 S -(n) 5.415 12.000 S -(a) 12.415 12.000 S -(r) 18.629 12.000 S -(y) 23.291 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 283.500 319.500 0.000 0.000 16.000 58.707 rect -%@EndRect -gsave -348.853 291.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -29.000 4.000 S -(l) -22.000 4.000 S -(o) -18.110 4.000 S -(b) -11.110 4.000 S -(a) -4.110 4.000 S -(l) 2.103 4.000 S -(.) 5.993 4.000 S -(d) 9.493 4.000 S -(e) 16.493 4.000 S -(d) 22.707 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -307.000 250.000 moveto -/Triangular 14.099 7.049 false 38.662 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 347.000 282.000 308.561 251.249 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 55.000 121.000 0.000 0.000 216.000 330.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 241.500 126.500 0.000 0.000 16.000 47.834 rect -%@EndRect -gsave -150.417 249.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.000 4.000 S -(D) -12.889 4.000 S -(M) -2.779 4.000 S -10.000 (_Times-Roman) fess -(A) 9.668 4.000 S -(N) 17.251 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 142.500 54.500 0.000 0.000 31.000 31.875 rect -%@EndRect -gsave -70.437 158.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -15.000 -3.000 S -(o) -1.786 -3.000 S -(r) 5.213 -3.000 S -(d) 9.875 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -9.951 12.000 S -(i) -1.399 12.000 S -(s) 2.489 12.000 S -(t) 7.937 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.000 162.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 187.000 162.000 90.000 162.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/egsils.eps b/HTKBook/HTKFigs/egsils.eps deleted file mode 100644 index 68b6ef7..0000000 --- a/HTKBook/HTKFigs/egsils.eps +++ /dev/null @@ -1,2179 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: egsils.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 10:38:22 p.m. -%%BoundingBox: 36.279 533.122 289.279 777.122 -%%QDBoundingBox: 36.279 14.877 289.279 258.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 203.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 219.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 219.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 231.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 207.779 0.000 0.000 45.000 36.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 140.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 156.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 156.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 168.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 144.779 0.000 0.000 45.000 36.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 77.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 93.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 93.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 105.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 81.779 0.000 0.000 45.000 36.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 90.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 81.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.612 78.377 117.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.779 47.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.779 46.211 90.779 38.377 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 153.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 144.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 206.612 78.377 180.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 47.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.779 46.211 153.779 38.377 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 216.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 207.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -270.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 269.612 78.377 243.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.779 47.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.779 46.211 216.779 38.377 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 80.612 78.377 54.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.377 36.779 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.377 270.779 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 204.377 153.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 144.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 195.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 206.612 195.377 180.779 195.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 226.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.779 227.544 153.779 235.377 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.779 195.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.612 195.377 117.779 195.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 186.377 99.779 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 186.377 207.779 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 162.779 114.377 162.779 96.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 225.779 114.377 225.779 96.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 162.779 177.377 162.779 159.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 99.779 114.377 99.779 96.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 186.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 186.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.500 244.500 0.000 0.000 23.000 26.098 rect -%@EndRect -gsave -257.549 190.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -13.000 -2.000 S -(h) -9.108 -2.000 S -(a) -4.108 -2.000 S -(r) 0.330 -2.000 S -(e) 3.660 -2.000 S -(d) 8.098 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -9.113 9.000 S -(t) -5.221 9.000 S -(a) -2.443 9.000 S -(t) 1.995 9.000 S -(e) 4.773 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.779 150.377 moveto -/Triangular 8.224 7.049 false 386.593 DrawArrowHead -} bind def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.823 150.899 234.779 177.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 34.500 55.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -62.113 42.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.500 118.500 0.000 0.000 16.000 12.448 rect -%@EndRect -gsave -124.724 231.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(p) -0.551 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -190.914 54.010 moveto -/Triangular 8.224 7.049 false 190.100 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.765 53.806 184.535 52.876 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.369 53.647 moveto -/Triangular 8.224 7.049 false 354.747 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.531 53.540 142.598 52.887 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -196.168 218.818 moveto -/Triangular 8.224 7.049 false 168.767 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 195.024 219.046 184.921 221.054 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/egtranstie.eps b/HTKBook/HTKFigs/egtranstie.eps deleted file mode 100644 index 4c97f4b..0000000 --- a/HTKBook/HTKFigs/egtranstie.eps +++ /dev/null @@ -1,1979 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: egtranstie.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/28/95 5:30:38 p.m. -%%BoundingBox: 36.279 488.122 352.279 786.122 -%%QDBoundingBox: 36.279 5.877 352.279 303.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 34.500 50.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -78.856 41.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(p) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.377 45.779 0.000 0.000 99.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 64.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 60.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 73.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 69.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 82.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 91.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 55.500 0.000 0.000 45.000 51.000 rect -%@EndRect -gsave -81.000 119.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(<) -25.000 -13.000 S -(t) -19.360 -13.000 S -(r) -16.582 -13.000 S -(a) -13.251 -13.000 S -(n) -8.813 -13.000 S -(s) -3.813 -13.000 S -(P) 0.078 -13.000 S -(>) 5.639 -13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 -2.000 S -(.) -20.000 -2.000 S -(0) -17.500 -2.000 S -( ) -12.500 -2.000 S -(1) -10.000 -2.000 S -(.) -5.000 -2.000 S -(0) -2.500 -2.000 S -( ) 2.500 -2.000 S -(0) 5.000 -2.000 S -(.) 10.000 -2.000 S -(0) 12.500 -2.000 S -( ) 17.500 -2.000 S -(.) 20.000 -2.000 S -(.) 22.500 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 9.000 S -(.) -20.000 9.000 S -(0) -17.500 9.000 S -( ) -12.500 9.000 S -(0) -10.000 9.000 S -(.) -5.000 9.000 S -(4) -2.500 9.000 S -( ) 2.500 9.000 S -(0) 5.000 9.000 S -(.) 10.000 9.000 S -(6) 12.500 9.000 S -( ) 17.500 9.000 S -(.) 20.000 9.000 S -(.) 22.500 9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -25.000 20.000 S -(.) -22.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 50.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -78.856 167.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(b) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.377 45.779 0.000 0.000 99.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 190.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 199.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 208.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 204.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 217.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 222.500 55.500 0.000 0.000 45.000 51.000 rect -%@EndRect -gsave -81.000 245.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(<) -25.000 -13.000 S -(t) -19.360 -13.000 S -(r) -16.582 -13.000 S -(a) -13.251 -13.000 S -(n) -8.813 -13.000 S -(s) -3.813 -13.000 S -(P) 0.078 -13.000 S -(>) 5.639 -13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 -2.000 S -(.) -20.000 -2.000 S -(0) -17.500 -2.000 S -( ) -12.500 -2.000 S -(1) -10.000 -2.000 S -(.) -5.000 -2.000 S -(0) -2.500 -2.000 S -( ) 2.500 -2.000 S -(0) 5.000 -2.000 S -(.) 10.000 -2.000 S -(0) 12.500 -2.000 S -( ) 17.500 -2.000 S -(.) 20.000 -2.000 S -(.) 22.500 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 9.000 S -(.) -20.000 9.000 S -(0) -17.500 9.000 S -( ) -12.500 9.000 S -(0) -10.000 9.000 S -(.) -5.000 9.000 S -(4) -2.500 9.000 S -( ) 2.500 9.000 S -(0) 5.000 9.000 S -(.) 10.000 9.000 S -(6) 12.500 9.000 S -( ) 17.500 9.000 S -(.) 20.000 9.000 S -(.) 22.500 9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -25.000 20.000 S -(.) -22.500 20.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 6.377 36.779 0.000 0.000 297.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.500 266.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -294.856 104.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(p) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 261.779 0.000 0.000 68.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 114.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 127.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 123.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 136.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 145.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 154.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.500 271.500 0.000 0.000 12.000 51.000 rect -%@EndRect -gsave -297.000 168.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -25.000 3.000 S -(t) -19.589 3.000 S -( ) -16.811 3.000 S -(") -14.311 3.000 S -(T) -10.229 3.000 S -(_) -4.121 3.000 S -(a) 0.878 3.000 S -(h) 5.317 3.000 S -(") 10.317 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 6.377 252.779 0.000 0.000 297.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.500 266.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -294.856 203.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(b) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 213.377 261.779 0.000 0.000 68.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 226.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 222.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 235.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 231.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 244.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 240.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 253.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.500 271.500 0.000 0.000 12.000 51.000 rect -%@EndRect -gsave -297.000 267.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -25.000 3.000 S -(t) -19.589 3.000 S -( ) -16.811 3.000 S -(") -14.311 3.000 S -(T) -10.229 3.000 S -(_) -4.121 3.000 S -(a) 0.878 3.000 S -(h) 5.317 3.000 S -(") 10.317 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 33.500 271.500 0.000 0.000 45.000 51.000 rect -%@EndRect -gsave -297.000 56.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(<) -25.000 -13.000 S -(t) -19.360 -13.000 S -(r) -16.582 -13.000 S -(a) -13.251 -13.000 S -(n) -8.813 -13.000 S -(s) -3.813 -13.000 S -(P) 0.078 -13.000 S -(>) 5.639 -13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 -2.000 S -(.) -20.000 -2.000 S -(0) -17.500 -2.000 S -( ) -12.500 -2.000 S -(1) -10.000 -2.000 S -(.) -5.000 -2.000 S -(0) -2.500 -2.000 S -( ) 2.500 -2.000 S -(0) 5.000 -2.000 S -(.) 10.000 -2.000 S -(0) 12.500 -2.000 S -( ) 17.500 -2.000 S -(.) 20.000 -2.000 S -(.) 22.500 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 9.000 S -(.) -20.000 9.000 S -(0) -17.500 9.000 S -( ) -12.500 9.000 S -(0) -10.000 9.000 S -(.) -5.000 9.000 S -(4) -2.500 9.000 S -( ) 2.500 9.000 S -(0) 5.000 9.000 S -(.) 10.000 9.000 S -(6) 12.500 9.000 S -( ) 17.500 9.000 S -(.) 20.000 9.000 S -(.) 22.500 9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -25.000 20.000 S -(.) -22.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 15.500 262.500 0.000 0.000 14.000 47.279 rect -%@EndRect -gsave -286.139 22.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -23.000 3.000 S -(t) -16.507 3.000 S -( ) -13.173 3.000 S -(") -10.173 3.000 S -(T) -5.275 3.000 S -(_) 2.054 3.000 S -(a) 8.054 3.000 S -(h) 13.380 3.000 S -(") 19.380 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 33.377 261.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.779 132.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.612 132.377 153.779 132.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 150.377 162.779 0.000 0.000 27.000 52.652 rect -%@EndRect -gsave -189.105 163.877 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -24.470 -4.000 S -(H) -15.804 -4.000 S -(E) -7.138 -4.000 S -9.000 (_Times-Roman) fess -(D) 0.191 -4.000 S -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) 6.691 -4.000 S -(T) 9.691 -4.000 S -(i) 17.021 -4.000 S -(e) 20.355 -4.000 S -( ) 25.681 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -24.393 9.000 S -(o) -16.389 9.000 S -(m) -10.389 9.000 S -(m) -1.055 9.000 S -(a) 8.278 9.000 S -(n) 13.604 9.000 S -(d) 19.604 9.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/endpointer.eps b/HTKBook/HTKFigs/endpointer.eps deleted file mode 100644 index 7b0acd7..0000000 --- a/HTKBook/HTKFigs/endpointer.eps +++ /dev/null @@ -1,2263 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: endpointer.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/1/4 8:06:24 a.m. -%%BoundingBox: 4.500 299.500 557.700 582.750 -%%QDBoundingBox: 4.500 209.250 557.700 492.500 -%%DocumentFonts: Times-Roman -%%+ Times-Italic -%%+ Times-Bold -%%+ Palatino-Bold -%%+ Times-BoldItalic -%%+ Courier-Bold -%%+ Courier -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=F tNote=F tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tLayer -% -% -%tLayer -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tLayer -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tLayer -% -% -%tLayer -% -%@BeginRuler -%@ 4.5000000000000000000e+0 viewScale -%@ 2.2222222222222220990e-1 realScale -%@ 16 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -0.100 0 229.500 49.500 0.000 0.000 117.000 504.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 58.500] CP -[0.000 58.500 33.750 58.500 33.750 58.500] CP -[36.000 54.000 ] CP -[38.250 60.750 ] CP -[40.500 58.500 ] CP -[56.250 58.500 ] CP -[58.500 63.000 ] CP -[60.750 58.500 ] CP -[72.000 58.500 ] CP -[76.500 45.000 ] CP -[81.000 76.500 ] CP -[85.500 27.000 ] CP -[90.000 99.000 ] CP -[94.500 18.000 ] CP -[99.000 45.000 ] CP -[103.500 0.000 ] CP -[110.250 117.000 ] CP -[117.000 31.500 ] CP -[121.500 58.500 ] CP -[126.000 13.500 ] CP -[130.500 72.000 ] CP -[135.000 36.000 ] CP -[139.500 94.500 ] CP -[148.500 18.000 ] CP -[150.750 69.750 ] CP -[155.250 49.500 ] CP -[157.500 112.500 ] CP -[159.750 36.000 ] CP -[164.250 78.750 ] CP -[168.750 51.750 ] CP -[171.000 65.250 ] CP -[180.000 58.500 ] CP -[193.500 63.000 ] CP -[202.500 58.500 ] CP -[204.750 54.000 ] CP -[207.000 58.500 ] CP -[216.000 58.500 ] CP -[216.000 63.000 ] CP -[220.500 58.500 ] CP -[229.500 58.500 ] CP -[234.000 58.500 ] CP -[238.500 58.500 ] CP -[243.000 58.500 ] CP -[247.500 58.500 ] CP -[252.000 58.500 ] CP -[256.500 49.500 ] CP -[258.750 78.750 ] CP -[261.000 38.250 ] CP -[265.500 96.750 ] CP -[270.000 49.500 ] CP -[272.250 85.500 ] CP -[276.750 31.500 ] CP -[279.000 72.000 ] CP -[283.500 20.250 ] CP -[285.750 90.000 ] CP -[290.250 58.500 ] CP -[292.500 108.000 ] CP -[297.000 38.250 ] CP -[299.250 114.750 ] CP -[301.500 54.000 ] CP -[306.000 74.250 ] CP -[310.500 31.500 ] CP -[312.750 90.000 ] CP -[319.500 49.500 ] CP -[324.000 69.750 ] CP -[326.250 54.000 ] CP -[330.750 63.000 ] CP -[337.500 45.000 ] CP -[339.750 76.500 ] CP -[344.250 47.250 ] CP -[346.500 99.000 ] CP -[353.250 33.750 ] CP -[355.500 65.250 ] CP -[360.000 15.750 ] CP -[362.250 83.250 ] CP -[369.000 42.750 ] CP -[373.500 67.500 ] CP -[378.000 54.000 ] CP -[382.500 58.500 ] CP -[387.000 60.750 ] CP -[391.500 58.500 ] CP -[398.250 56.250 ] CP -[407.250 58.500 ] CP -[504.000 58.500 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 373.500 49.500 0.000 0.000 18.000 504.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[36.000 18.000] CP -[36.000 0.000 ] CP -[38.250 0.000 ] CP -[38.250 18.000 ] CP -[58.500 18.000 ] CP -[58.500 0.000 ] CP -[60.750 0.000 ] CP -[60.750 18.000 ] CP -[72.000 18.000 ] CP -[72.000 0.000 ] CP -[184.500 0.000 ] CP -[184.500 18.000 ] CP -[200.250 18.000 ] CP -[200.250 0.000 ] CP -[204.750 0.000 ] CP -[204.750 18.000 ] CP -[216.000 18.000 ] CP -[216.000 0.000 ] CP -[220.500 0.000 ] CP -[220.500 18.000 ] CP -[256.500 18.000 ] CP -[256.500 0.000 ] CP -[396.000 0.000 ] CP -[396.000 18.000 ] CP -[504.000 18.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 427.500 49.500 0.000 0.000 18.000 504.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[72.000 18.000] CP -[72.000 0.000 ] CP -[184.500 0.000 ] CP -[184.500 18.000 ] CP -[256.500 18.000 ] CP -[256.500 0.000 ] CP -[396.000 0.000 ] CP -[396.000 18.000 ] CP -[504.000 18.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 362.250 13.500 0.000 0.000 27.000 39.058 rect -%@EndRect -gsave -33.029 375.750 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -14.798 -4.000 S -(r) -8.125 -4.000 S -(a) -4.128 -4.000 S -(m) 1.197 -4.000 S -(e) 10.531 -4.000 S -( ) 15.857 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -16.796 9.000 S -(n) -9.466 9.000 S -(e) -3.466 9.000 S -(r) 1.859 9.000 S -(g) 5.855 9.000 S -(y) 11.855 9.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 411.750 4.500 0.000 0.000 27.000 64.886 rect -%@EndRect -gsave -36.943 425.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -20.219 -3.000 S -(i) -8.893 -3.000 S -(n) -5.559 -3.000 S -(d) 0.440 -3.000 S -(o) 6.440 -3.000 S -(w) 12.440 -3.000 S -( ) 21.106 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -31.211 10.000 S -(l) -25.885 10.000 S -(a) -22.551 10.000 S -(s) -17.225 10.000 S -(s) -12.555 10.000 S -(i) -7.885 10.000 S -(f) -4.551 10.000 S -(i) -0.555 10.000 S -(c) 2.778 10.000 S -(a) 8.104 10.000 S -(t) 13.430 10.000 S -(i) 16.764 10.000 S -(o) 20.098 10.000 S -(n) 26.098 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 249.750 27.820 0.000 0.000 14.000 30.667 rect -%@EndRect -gsave -43.154 256.750 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -14.679 3.000 S -(i) -8.005 3.000 S -(g) -4.671 3.000 S -(n) 1.328 3.000 S -(a) 7.328 3.000 S -(l) 12.654 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 364.500 508.500 0.000 0.000 11.000 44.636 rect -%@EndRect -gsave -530.818 370.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.676 3.000 S -(p) -7.670 3.000 S -(e) -3.170 3.000 S -(e) 0.823 3.000 S -(c) 4.818 3.000 S -(h) 8.812 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 393.750 510.750 0.000 0.000 11.000 37.886 rect -%@EndRect -gsave -529.693 399.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.051 3.000 S -(i) -8.046 3.000 S -(l) -5.545 3.000 S -(e) -3.045 3.000 S -(n) 0.949 3.000 S -(c) 5.449 3.000 S -(e) 9.443 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Courier-Bold /Courier-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 452.250 45.251 0.000 0.000 16.000 8.497 rect -%@EndRect -gsave -49.500 460.250 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -4.152 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 83.549 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -87.750 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -3.950 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 124.049 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -128.250 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.450 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 418.500 238.799 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -243.000 426.500 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -3.700 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 418.500 292.799 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -297.000 426.500 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.700 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 477.299 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -481.500 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -4.200 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 436.799 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -441.000 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -3.700 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 454.500 549.299 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -553.500 462.500 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -4.200 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.500 481.500 94.500 218.250 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 472.500 481.500 472.500 216.000 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.500 481.500 121.500 445.500 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 445.500 481.500 445.500 445.500 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 416.250 508.500 0.000 0.000 11.000 44.636 rect -%@EndRect -gsave -530.818 421.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.676 2.000 S -(p) -7.670 2.000 S -(e) -3.170 2.000 S -(e) 0.823 2.000 S -(c) 4.818 2.000 S -(h) 8.812 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 510.750 0.000 0.000 11.000 37.886 rect -%@EndRect -gsave -529.693 453.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.051 3.000 S -(i) -8.046 3.000 S -(l) -5.545 3.000 S -(e) -3.045 3.000 S -(n) 0.949 3.000 S -(c) 5.449 3.000 S -(e) 9.443 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Courier /Courier EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 481.500 78.750 0.000 0.000 11.000 60.386 rect -%@EndRect -gsave -108.943 487.000 T translate -0.0 rotate -1 1 scale -9.000 (_Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -23.860 3.000 S -(I) -18.459 3.000 S -(L) -13.058 3.000 S -(M) -7.657 3.000 S -(A) -2.257 3.000 S -(R) 3.143 3.000 S -(G) 8.544 3.000 S -(I) 13.945 3.000 S -(N) 19.346 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.500 477.000 moveto -/SwallowTail 14.099 9.399 false 0.000 DrawArrowHead -121.500 477.000 moveto -/SwallowTail 14.099 9.399 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 120.000 477.000 96.000 477.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 481.500 465.750 0.000 0.000 11.000 60.386 rect -%@EndRect -gsave -495.943 487.000 T translate -0.0 rotate -1 1 scale -9.000 (_Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -29.261 3.000 S -(I) -23.860 3.000 S -(L) -18.459 3.000 S -(S) -13.058 3.000 S -(E) -7.657 3.000 S -(Q) -2.257 3.000 S -(C) 3.143 3.000 S -(O) 8.544 3.000 S -(U) 13.945 3.000 S -(N) 19.346 3.000 S -(T) 24.747 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -445.500 472.500 moveto -/SwallowTail 14.099 9.399 false 0.000 DrawArrowHead -551.250 472.500 moveto -/SwallowTail 14.099 9.399 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 549.750 472.500 447.000 472.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 398.250 137.250 0.000 0.000 11.000 60.386 rect -%@EndRect -gsave -167.443 403.750 T translate -0.0 rotate -1 1 scale -9.000 (_Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -28.761 2.000 S -(P) -23.360 2.000 S -(C) -17.959 2.000 S -(S) -12.558 2.000 S -(E) -7.157 2.000 S -(Q) -1.757 2.000 S -(C) 3.643 2.000 S -(O) 9.044 2.000 S -(U) 14.445 2.000 S -(N) 19.846 2.000 S -(T) 25.247 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -0.100 121.500 427.500 121.500 391.500 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -0.100 132.750 427.500 132.750 391.500 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 132.750 405.000 121.500 405.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 209.250 198.000 0.000 0.000 14.000 156.058 rect -%@EndRect -gsave -276.029 216.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -48.282 3.000 S -(r) -41.608 3.000 S -(o) -37.612 3.000 S -(c) -31.612 3.000 S -(e) -26.286 3.000 S -(s) -20.959 3.000 S -(s) -16.290 3.000 S -(e) -11.620 3.000 S -(d) -6.293 3.000 S -( ) -0.293 3.000 S -(U) 2.706 3.000 S -(t) 11.372 3.000 S -(t) 14.706 3.000 S -(e) 18.040 3.000 S -(r) 23.366 3.000 S -(a) 27.362 3.000 S -(n) 32.688 3.000 S -(c) 38.688 3.000 S -(e) 44.014 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.500 220.500 moveto -/SwallowTail 14.099 9.399 false 0.000 DrawArrowHead -472.500 220.500 moveto -/SwallowTail 14.099 9.399 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 471.000 220.500 96.000 220.500 Line -%@EndLine -% -%tLayer -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/flatst.eps b/HTKBook/HTKFigs/flatst.eps deleted file mode 100644 index 99eea4a..0000000 --- a/HTKBook/HTKFigs/flatst.eps +++ /dev/null @@ -1,1578 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: flatst.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:44:18 a.m. -%%BoundingBox: 22.500 566.500 445.500 765.500 -%%QDBoundingBox: 22.500 26.500 445.500 225.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.500 175.500 0.000 0.000 39.000 88.514 rect -%@EndRect -gsave -219.757 51.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -44.000 -4.000 S -(r) -33.989 -4.000 S -(o) -27.995 -4.000 S -(t) -18.995 -4.000 S -(o) -13.994 -4.000 S -( ) -4.994 -4.000 S -(H) -0.494 -4.000 S -(M) 12.504 -4.000 S -(M) 28.509 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -36.735 15.000 S -(e) -23.736 15.000 S -(f) -15.747 15.000 S -(i) -9.753 15.000 S -(n) -4.752 15.000 S -(i) 4.247 15.000 S -(t) 9.248 15.000 S -(i) 14.249 15.000 S -(o) 19.250 15.000 S -(n) 28.250 15.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 117.500 184.500 0.000 0.000 20.000 70.004 rect -%@EndRect -gsave -219.502 127.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -35.000 5.000 S -(C) -22.000 5.000 S -(o) -9.995 5.000 S -(m) -0.995 5.000 S -(p) 13.005 5.000 S -(V) 22.005 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 166.000 0.000 0.000 45.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 103.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 120.083 0.000 0.000 20.000 29.667 rect -%@EndRect -gsave -134.917 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -14.416 5.000 S -(h) -9.415 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 166.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 183.083 0.000 0.000 20.000 16.989 rect -%@EndRect -gsave -191.577 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -8.416 5.000 S -(h) -0.427 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 229.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 246.083 0.000 0.000 20.000 9.000 rect -%@EndRect -gsave -250.583 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -4.416 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 292.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 309.083 0.000 0.000 20.000 9.000 rect -%@EndRect -gsave -313.583 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -4.416 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.500 364.500 0.000 0.000 20.000 20.979 rect -%@EndRect -gsave -374.989 194.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -10.000 5.000 S -(t) -2.010 5.000 S -(c) 2.990 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.000 166.000 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -220.000 108.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.999 106.000 220.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.000 180.000 moveto -/Triangular 14.099 7.049 false 321.362 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.561 178.750 175.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -193.000 180.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.999 178.000 193.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -256.000 180.000 moveto -/Triangular 14.099 7.049 false 243.452 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 255.105 178.211 238.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -310.000 180.000 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 308.335 178.890 256.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 153.000 94.000 0.000 0.000 72.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[18.000 0.000] CP -[0.000 0.000] CP -[0.000 72.000 ] CP -[18.000 72.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.500 22.500 0.000 0.000 20.000 62.964 rect -%@EndRect -gsave -53.982 185.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -31.000 5.000 S -(d) -25.005 5.000 S -(e) -16.005 5.000 S -(n) -8.016 5.000 S -(t) 0.983 5.000 S -(i) 5.984 5.000 S -(c) 10.985 5.000 S -(a) 18.974 5.000 S -(l) 26.963 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 337.000 0.000 0.000 63.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 346.500 0.000 0.000 58.000 89.481 rect -%@EndRect -gsave -391.240 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -36.001 -14.000 S -(a) -25.991 -14.000 S -(m) -18.001 -14.000 S -(p) -4.000 -14.000 S -(l) 4.999 -14.000 S -(e) 10.000 -14.000 S -( ) 17.989 -14.000 S -(o) 22.489 -14.000 S -(f) 31.489 -14.000 S -( ) 37.483 -14.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -30.249 5.000 S -(r) -19.254 5.000 S -(a) -13.260 5.000 S -(i) -5.270 5.000 S -(n) -0.270 5.000 S -(i) 8.729 5.000 S -(n) 13.730 5.000 S -(g) 22.730 5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -25.248 24.000 S -(p) -15.237 24.000 S -(e) -6.237 24.000 S -(e) 1.751 24.000 S -(c) 9.740 24.000 S -(h) 17.729 24.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.000 117.000 moveto -/Triangular 14.099 7.049 false 336.825 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 275.838 116.212 337.000 90.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/headapt.eps b/HTKBook/HTKFigs/headapt.eps deleted file mode 100644 index ec12410..0000000 --- a/HTKBook/HTKFigs/headapt.eps +++ /dev/null @@ -1,375 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: headapt.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 388 377 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 377 moveto 0 0 lineto 388 0 lineto 388 377 lineto closepath clip newpath --125.0 469.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - - /DrawSplineSection { - /y3 exch def - /x3 exch def - /y2 exch def - /x2 exch def - /y1 exch def - /x1 exch def - /xa x1 x2 x1 sub 0.666667 mul add def - /ya y1 y2 y1 sub 0.666667 mul add def - /xb x3 x2 x3 sub 0.666667 mul add def - /yb y3 y2 y3 sub 0.666667 mul add def - x1 y1 lineto - xa ya xb yb x3 y3 curveto - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 2667 3943 m 3073 3639 l 6720 3639 l - 6315 3943 l gs col7 0.85 shd ef gr gs col-1 s gr -% Polyline -n 6315 3943 m 6720 3639 l 6720 5361 l - 6315 5767 l gs col7 0.85 shd ef gr gs col-1 s gr -% Polyline -n 2685 3936 m 6333 3936 l 6333 5760 l 2685 5760 l - cp gs col7 0.85 shd ef gr gs col-1 s gr -% Polyline -0.000 slw -n 3534 6929 m 3592 7045 l 3650 6929 l - 3534 6929 l cp gs col7 0.00 shd ef gr -% Polyline -n 4463 6929 m 4521 7045 l 4579 6929 l - 4463 6929 l cp gs col7 0.00 shd ef gr -% Polyline -n 5391 6929 m 5449 7045 l 5507 6929 l - 5391 6929 l cp gs col7 0.00 shd ef gr -15.000 slw -% Ellipse -n 3766 7542 246 246 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 4688 7540 246 246 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 5617 7540 246 246 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 6485 7542 183 183 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 2896 7542 183 183 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col0 s gr - -% Polyline -gs clippath -4478 7602 m 4478 7482 l 4191 7482 l 4431 7542 l 4191 7602 l cp -eoclip -n 3998 7542 m - 4463 7542 l gs col-1 s gr gr - -% arrowhead -n 4191 7602 m 4431 7542 l 4191 7482 l 4191 7602 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -5406 7602 m 5406 7482 l 5119 7482 l 5359 7542 l 5119 7602 l cp -eoclip -n 4927 7542 m - 5391 7542 l gs col-1 s gr gr - -% arrowhead -n 5119 7602 m 5359 7542 l 5119 7482 l 5119 7602 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -3549 7602 m 3549 7482 l 3262 7482 l 3502 7542 l 3262 7602 l cp -eoclip -n 3070 7542 m - 3534 7542 l gs col-1 s gr gr - -% arrowhead -n 3262 7602 m 3502 7542 l 3262 7482 l 3262 7602 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6335 7602 m 6335 7482 l 6048 7482 l 6288 7542 l 6048 7602 l cp -eoclip -n 5856 7542 m - 6320 7542 l gs col-1 s gr gr - -% arrowhead -n 6048 7602 m 6288 7542 l 6048 7482 l 6048 7602 l cp gs 0.00 setgray ef gr col-1 s -% Open spline -gs n 3882.0 7335.0 m 3911.0 7219.0 l - 3911.0 7219.0 3940.0 7103.0 3940.0 6987.0 DrawSplineSection - 3940.0 6987.0 3940.0 6871.0 3853.0 6726.0 DrawSplineSection - 3853.0 6726.0 3766.0 6581.0 3679.0 6726.0 DrawSplineSection - 3679.0 6726.0 3592.0 6871.0 3592.0 6987.0 DrawSplineSection - 3592.0 6987.0 3592.0 7103.0 3621.0 7219.0 DrawSplineSection - 3650.0 7335.0 l gs col-1 s gr - gr - -% Open spline -gs n 4811.0 7335.0 m 4840.0 7219.0 l - 4840.0 7219.0 4869.0 7103.0 4869.0 6987.0 DrawSplineSection - 4869.0 6987.0 4869.0 6871.0 4782.0 6726.0 DrawSplineSection - 4782.0 6726.0 4695.0 6581.0 4608.0 6726.0 DrawSplineSection - 4608.0 6726.0 4521.0 6871.0 4521.0 6987.0 DrawSplineSection - 4521.0 6987.0 4521.0 7103.0 4550.0 7219.0 DrawSplineSection - 4579.0 7335.0 l gs col-1 s gr - gr - -% Open spline -gs n 5740.0 7335.0 m 5769.0 7219.0 l - 5769.0 7219.0 5798.0 7103.0 5798.0 6987.0 DrawSplineSection - 5798.0 6987.0 5798.0 6871.0 5711.0 6726.0 DrawSplineSection - 5711.0 6726.0 5624.0 6581.0 5536.5 6726.0 DrawSplineSection - 5536.5 6726.0 5449.0 6871.0 5449.0 6987.0 DrawSplineSection - 5449.0 6987.0 5449.0 7103.0 5478.0 7219.0 DrawSplineSection - 5507.0 7335.0 l gs col-1 s gr - gr - -/Times-Roman ff 270.00 scf sf -7200 3675 m -gs 1 -1 sc (Labelled) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 3990 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 4305 m -gs 1 -1 sc (or) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 4620 m -gs 1 -1 sc (Enrollment) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 4935 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -0.000 slw -n 3534 2156 m 3592 2272 l 3650 2156 l - 3534 2156 l cp gs col7 0.00 shd ef gr -% Polyline -n 4463 2156 m 4521 2272 l 4579 2156 l - 4463 2156 l cp gs col7 0.00 shd ef gr -% Polyline -n 5391 2156 m 5449 2272 l 5507 2156 l - 5391 2156 l cp gs col7 0.00 shd ef gr -15.000 slw -% Ellipse -n 3766 2794 246 246 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 4688 2792 246 246 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 5617 2792 246 246 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 2896 2794 183 183 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 6485 2794 183 183 0 360 DrawEllipse gs col-1 s gr - -% Polyline -gs clippath -4478 2854 m 4478 2734 l 4191 2734 l 4431 2794 l 4191 2854 l cp -eoclip -n 3998 2794 m - 4463 2794 l gs col-1 s gr gr - -% arrowhead -n 4191 2854 m 4431 2794 l 4191 2734 l 4191 2854 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -5406 2854 m 5406 2734 l 5119 2734 l 5359 2794 l 5119 2854 l cp -eoclip -n 4927 2794 m - 5391 2794 l gs col-1 s gr gr - -% arrowhead -n 5119 2854 m 5359 2794 l 5119 2734 l 5119 2854 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -3549 2854 m 3549 2734 l 3262 2734 l 3502 2794 l 3262 2854 l cp -eoclip -n 3070 2794 m - 3534 2794 l gs col-1 s gr gr - -% arrowhead -n 3262 2854 m 3502 2794 l 3262 2734 l 3262 2854 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6335 2854 m 6335 2734 l 6048 2734 l 6288 2794 l 6048 2854 l cp -eoclip -n 5856 2794 m - 6320 2794 l gs col-1 s gr gr - -% arrowhead -n 6048 2854 m 6288 2794 l 6048 2734 l 6048 2854 l cp gs 0.00 setgray ef gr col-1 s -% Open spline -gs n 3882.0 2562.0 m 3911.0 2446.0 l - 3911.0 2446.0 3940.0 2330.0 3940.0 2214.0 DrawSplineSection - 3940.0 2214.0 3940.0 2098.0 3853.0 1952.5 DrawSplineSection - 3853.0 1952.5 3766.0 1807.0 3679.0 1952.5 DrawSplineSection - 3679.0 1952.5 3592.0 2098.0 3592.0 2214.0 DrawSplineSection - 3592.0 2214.0 3592.0 2330.0 3621.0 2446.0 DrawSplineSection - 3650.0 2562.0 l gs col-1 s gr - gr - -% Open spline -gs n 4811.0 2562.0 m 4840.0 2446.0 l - 4840.0 2446.0 4869.0 2330.0 4869.0 2214.0 DrawSplineSection - 4869.0 2214.0 4869.0 2098.0 4782.0 1952.5 DrawSplineSection - 4782.0 1952.5 4695.0 1807.0 4608.0 1952.5 DrawSplineSection - 4608.0 1952.5 4521.0 2098.0 4521.0 2214.0 DrawSplineSection - 4521.0 2214.0 4521.0 2330.0 4550.0 2446.0 DrawSplineSection - 4579.0 2562.0 l gs col-1 s gr - gr - -% Open spline -gs n 5740.0 2562.0 m 5769.0 2446.0 l - 5769.0 2446.0 5798.0 2330.0 5798.0 2214.0 DrawSplineSection - 5798.0 2214.0 5798.0 2098.0 5711.0 1952.5 DrawSplineSection - 5711.0 1952.5 5624.0 1807.0 5536.5 1952.5 DrawSplineSection - 5536.5 1952.5 5449.0 2098.0 5449.0 2214.0 DrawSplineSection - 5449.0 2214.0 5449.0 2330.0 5478.0 2446.0 DrawSplineSection - 5507.0 2562.0 l gs col-1 s gr - gr - -/Times-Bold ff 360.00 scf sf -5197 4905 m -gs 1 -1 sc ( /HV) dup sw pop neg 0 rm col-1 sh gr -/Times-Bold ff 300.00 scf sf -5189 4904 m -gs 1 -1 sc (ITE) col-1 sh gr -/Times-Bold ff 360.00 scf sf -3772 4905 m -gs 1 -1 sc (HE) dup sw pop neg 0 rm col-1 sh gr -/Times-Bold ff 300.00 scf sf -3764 4904 m -gs 1 -1 sc (REST) col-1 sh gr -% Polyline -gs clippath -4635 6248 m 4755 6248 l 4755 5961 l 4695 6201 l 4635 5961 l cp -eoclip -n 4695 5768 m - 4695 6233 l gs col-1 s gr gr - -% arrowhead -n 4635 5961 m 4695 6201 l 4755 5961 l 4635 5961 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6556 4572 m 6635 4663 l 6851 4474 l 6631 4587 l 6772 4383 l cp -eoclip -n 7072 4202 m - 6607 4608 l gs col-1 s gr gr - -% arrowhead -n 6772 4383 m 6631 4587 l 6851 4474 l 6772 4383 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 4643 3375 m 4658 3375 l gs col-1 s gr -% Polyline -gs clippath -4665 3837 m 4785 3837 l 4785 3550 l 4725 3790 l 4665 3550 l cp -eoclip -n 4725 3125 m - 4725 3822 l gs col-1 s gr gr - -% arrowhead -n 4665 3550 m 4725 3790 l 4785 3550 l 4665 3550 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 270.00 scf sf -4695 6523 m -gs 1 -1 sc (Transformed Speaker Independent Model Set) dup sw pop 2 div neg 0 rm col-1 sh gr -/Times-Roman ff 270.00 scf sf -4695 1749 m -gs 1 -1 sc (Speaker Independent Model Set) dup sw pop 2 div neg 0 rm col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/headaptrdp.eps b/HTKBook/HTKFigs/headaptrdp.eps deleted file mode 100644 index 9310145..0000000 --- a/HTKBook/HTKFigs/headaptrdp.eps +++ /dev/null @@ -1,968 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: headaptrdp.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 604 542 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 542 moveto 0 0 lineto 604 0 lineto 604 542 lineto closepath clip newpath --4.0 550.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -n 6705 4422 m 10095 4422 l 10095 6595 l 6705 6595 l - cp gs col7 0.75 shd ef gr -% Polyline -n 6705 4422 m 10095 4422 l 10095 6595 l 6705 6595 l - cp gs col7 0.85 shd ef gr -% Polyline -n 105 4422 m 3495 4422 l 3495 6595 l 105 6595 l - cp gs col7 0.75 shd ef gr -% Polyline -n 105 4422 m 3495 4422 l 3495 6595 l 105 6595 l - cp gs col7 0.85 shd ef gr -/Times-Roman ff 255.00 scf sf -6198 5945 m -gs 1 -1 sc (OR) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -15.000 slw -n 6994 4565 m 6889 4565 6889 5041 105 arcto 4 {pop} repeat - 6889 5146 7653 5146 105 arcto 4 {pop} repeat - 7758 5146 7758 4670 105 arcto 4 {pop} repeat - 7758 4565 6994 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7034 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -n 6994 4565 m 6889 4565 6889 5041 105 arcto 4 {pop} repeat - 6889 5146 7653 5146 105 arcto 4 {pop} repeat - 7758 5146 7758 4670 105 arcto 4 {pop} repeat - 7758 4565 6994 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7034 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -n 394 4565 m 289 4565 289 5041 105 arcto 4 {pop} repeat - 289 5146 1053 5146 105 arcto 4 {pop} repeat - 1158 5146 1158 4670 105 arcto 4 {pop} repeat - 1158 4565 394 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -434 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -n 394 4565 m 289 4565 289 5041 105 arcto 4 {pop} repeat - 289 5146 1053 5146 105 arcto 4 {pop} repeat - 1158 5146 1158 4670 105 arcto 4 {pop} repeat - 1158 4565 394 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -434 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -0.000 slw -n 105 771 m 3495 771 l 3495 3640 l 105 3640 l - cp gs col7 0.85 shd ef gr -% Polyline - [30] 0 sd -n 6675 7125 m 10125 7125 l 10125 9150 l 6675 9150 l - cp gs col7 0.85 shd ef gr [] 0 sd -% Polyline -15.000 slw -n 7357 4783 m 7252 4783 7252 5259 105 arcto 4 {pop} repeat - 7252 5364 8017 5364 105 arcto 4 {pop} repeat - 8122 5364 8122 4888 105 arcto 4 {pop} repeat - 8122 4783 7357 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7396 5073 m -gs 1 -1 sc (s) col-1 sh gr -% Polyline -n 7357 4783 m 7252 4783 7252 5259 105 arcto 4 {pop} repeat - 7252 5364 8017 5364 105 arcto 4 {pop} repeat - 8122 5364 8122 4888 105 arcto 4 {pop} repeat - 8122 4783 7357 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7396 5073 m -gs 1 -1 sc (s) col-1 sh gr -% Polyline -n 3756 1000 m 3696 1000 3696 1642 60 arcto 4 {pop} repeat - 3696 1702 5149 1702 60 arcto 4 {pop} repeat - 5209 1702 5209 1060 60 arcto 4 {pop} repeat - 5209 1000 3756 1000 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3800 1357 m 3847 1169 l 3988 1075 l 4034 1543 l 4081 1262 l 4081 1450 l - 4128 1214 l 4174 1496 l 4222 1450 l 4268 1310 l 4268 1214 l - 4314 1357 l 4363 1214 l 4455 1543 l 4503 1214 l 4503 1450 l - 4550 1262 l 4596 1450 l 4596 1543 l 4643 1310 l 4690 1214 l - 4736 1403 l 4831 1310 l 4877 1403 l 4925 1310 l 4972 1450 l - 5017 1357 l 5065 1403 l - 5112 1357 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3756 1000 m 3696 1000 3696 1642 60 arcto 4 {pop} repeat - 3696 1702 5149 1702 60 arcto 4 {pop} repeat - 5209 1702 5209 1060 60 arcto 4 {pop} repeat - 5209 1000 3756 1000 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3800 1357 m 3847 1169 l 3988 1075 l 4034 1543 l 4081 1262 l 4081 1450 l - 4128 1214 l 4174 1496 l 4222 1450 l 4268 1310 l 4268 1214 l - 4314 1357 l 4363 1214 l 4455 1543 l 4503 1214 l 4503 1450 l - 4550 1262 l 4596 1450 l 4596 1543 l 4643 1310 l 4690 1214 l - 4736 1403 l 4831 1310 l 4877 1403 l 4925 1310 l 4972 1450 l - 5017 1357 l 5065 1403 l - 5112 1357 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 6957 7257 m 6882 7257 6882 7522 75 arcto 4 {pop} repeat - 6882 7597 8170 7597 75 arcto 4 {pop} repeat - 8245 7597 8245 7332 75 arcto 4 {pop} repeat - 8245 7257 6957 7257 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -7563 7484 m -gs 1 -1 sc (transform 1) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 757 4783 m 652 4783 652 5259 105 arcto 4 {pop} repeat - 652 5364 1417 5364 105 arcto 4 {pop} repeat - 1522 5364 1522 4888 105 arcto 4 {pop} repeat - 1522 4783 757 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -796 5073 m -gs 1 -1 sc (s) col-1 sh gr -% Polyline -n 757 4783 m 652 4783 652 5259 105 arcto 4 {pop} repeat - 652 5364 1417 5364 105 arcto 4 {pop} repeat - 1522 5364 1522 4888 105 arcto 4 {pop} repeat - 1522 4783 757 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -796 5073 m -gs 1 -1 sc (s) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1304 1116 m -gs 1 -1 sc (000 103 p) col-1 sh gr -% Polyline -n 1219 921 m 1144 921 1144 1826 75 arcto 4 {pop} repeat - 1144 1901 2051 1901 75 arcto 4 {pop} repeat - 2126 1901 2126 996 75 arcto 4 {pop} repeat - 2126 921 1219 921 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 1219 921 m 1144 921 1144 1826 75 arcto 4 {pop} repeat - 1144 1901 2051 1901 75 arcto 4 {pop} repeat - 2126 1901 2126 996 75 arcto 4 {pop} repeat - 2126 921 1219 921 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1304 1349 m -gs 1 -1 sc (103 114 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1304 1583 m -gs 1 -1 sc (114 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1304 1816 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1304 1349 m -gs 1 -1 sc (103 114 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1304 1583 m -gs 1 -1 sc (114 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1304 1816 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 1463 1164 m 1388 1164 1388 2073 75 arcto 4 {pop} repeat - 1388 2148 2297 2148 75 arcto 4 {pop} repeat - 2372 2148 2372 1239 75 arcto 4 {pop} repeat - 2372 1164 1463 1164 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -1550 1363 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1550 1595 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1550 1830 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1550 2063 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 7718 5001 m 7613 5001 7613 5476 105 arcto 4 {pop} repeat - 7613 5581 8379 5581 105 arcto 4 {pop} repeat - 8484 5581 8484 5106 105 arcto 4 {pop} repeat - 8484 5001 7718 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7758 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 7718 5001 m 7613 5001 7613 5476 105 arcto 4 {pop} repeat - 7613 5581 8379 5581 105 arcto 4 {pop} repeat - 8484 5581 8484 5106 105 arcto 4 {pop} repeat - 8484 5001 7718 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7758 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 3999 1325 m 3939 1325 3939 1966 60 arcto 4 {pop} repeat - 3939 2026 5392 2026 60 arcto 4 {pop} repeat - 5452 2026 5452 1385 60 arcto 4 {pop} repeat - 5452 1325 3999 1325 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4043 1682 m 4090 1493 l 4231 1400 l 4277 1869 l 4325 1587 l 4325 1774 l - 4371 1539 l 4417 1821 l 4465 1774 l 4512 1634 l 4512 1539 l - 4557 1682 l 4606 1539 l 4699 1869 l 4746 1539 l 4746 1774 l - 4793 1587 l 4839 1774 l 4839 1869 l 4887 1634 l 4933 1539 l - 4979 1728 l 5075 1634 l 5120 1728 l 5168 1634 l 5215 1774 l - 5261 1682 l 5308 1728 l - 5355 1682 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3999 1325 m 3939 1325 3939 1966 60 arcto 4 {pop} repeat - 3939 2026 5392 2026 60 arcto 4 {pop} repeat - 5452 2026 5452 1385 60 arcto 4 {pop} repeat - 5452 1325 3999 1325 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4043 1682 m 4090 1493 l 4231 1400 l 4277 1869 l 4325 1587 l 4325 1774 l - 4371 1539 l 4417 1821 l 4465 1774 l 4512 1634 l 4512 1539 l - 4557 1682 l 4606 1539 l 4699 1869 l 4746 1539 l 4746 1774 l - 4793 1587 l 4839 1774 l 4839 1869 l 4887 1634 l 4933 1539 l - 4979 1728 l 5075 1634 l 5120 1728 l 5168 1634 l 5215 1774 l - 5261 1682 l 5308 1728 l - 5355 1682 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7297 7541 m 7222 7541 7222 7807 75 arcto 4 {pop} repeat - 7222 7882 8511 7882 75 arcto 4 {pop} repeat - 8586 7882 8586 7616 75 arcto 4 {pop} repeat - 8586 7541 7297 7541 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -7904 7768 m -gs 1 -1 sc (transform 2) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 1118 5001 m 1013 5001 1013 5476 105 arcto 4 {pop} repeat - 1013 5581 1779 5581 105 arcto 4 {pop} repeat - 1884 5581 1884 5106 105 arcto 4 {pop} repeat - 1884 5001 1118 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1158 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 1118 5001 m 1013 5001 1013 5476 105 arcto 4 {pop} repeat - 1013 5581 1779 5581 105 arcto 4 {pop} repeat - 1884 5581 1884 5106 105 arcto 4 {pop} repeat - 1884 5001 1118 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1158 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 1463 1164 m 1388 1164 1388 2073 75 arcto 4 {pop} repeat - 1388 2148 2297 2148 75 arcto 4 {pop} repeat - 2372 2148 2372 1239 75 arcto 4 {pop} repeat - 2372 1164 1463 1164 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1550 1363 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1550 1595 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1550 1830 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1550 2063 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 1711 1412 m 1636 1412 1636 2318 75 arcto 4 {pop} repeat - 1636 2393 2543 2393 75 arcto 4 {pop} repeat - 2618 2393 2618 1487 75 arcto 4 {pop} repeat - 2618 1412 1711 1412 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -1795 1607 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1795 1840 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1795 2075 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1795 2307 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 8080 5218 m 7975 5218 7975 5693 105 arcto 4 {pop} repeat - 7975 5798 8743 5798 105 arcto 4 {pop} repeat - 8848 5798 8848 5323 105 arcto 4 {pop} repeat - 8848 5218 8080 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8122 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 8080 5218 m 7975 5218 7975 5693 105 arcto 4 {pop} repeat - 7975 5798 8743 5798 105 arcto 4 {pop} repeat - 8848 5798 8848 5323 105 arcto 4 {pop} repeat - 8848 5218 8080 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8122 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 4242 1649 m 4182 1649 4182 2290 60 arcto 4 {pop} repeat - 4182 2350 5636 2350 60 arcto 4 {pop} repeat - 5696 2350 5696 1709 60 arcto 4 {pop} repeat - 5696 1649 4242 1649 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4286 2006 m 4333 1819 l 4474 1724 l 4520 2193 l 4568 1911 l 4568 2099 l - 4615 1863 l 4660 2145 l 4708 2099 l 4755 1959 l 4755 1863 l - 4801 2006 l 4849 1863 l 4942 2193 l 4990 1863 l 4990 2099 l - 5036 1911 l 5082 2099 l 5082 2193 l 5130 1959 l 5177 1863 l - 5222 2052 l 5318 1959 l 5365 2052 l 5411 1959 l 5458 2099 l - 5505 2006 l 5552 2052 l - 5598 2006 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4242 1649 m 4182 1649 4182 2290 60 arcto 4 {pop} repeat - 4182 2350 5636 2350 60 arcto 4 {pop} repeat - 5696 2350 5696 1709 60 arcto 4 {pop} repeat - 5696 1649 4242 1649 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4286 2006 m 4333 1819 l 4474 1724 l 4520 2193 l 4568 1911 l 4568 2099 l - 4615 1863 l 4660 2145 l 4708 2099 l 4755 1959 l 4755 1863 l - 4801 2006 l 4849 1863 l 4942 2193 l 4990 1863 l 4990 2099 l - 5036 1911 l 5082 2099 l 5082 2193 l 5130 1959 l 5177 1863 l - 5222 2052 l 5318 1959 l 5365 2052 l 5411 1959 l 5458 2099 l - 5505 2006 l 5552 2052 l - 5598 2006 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7638 7825 m 7563 7825 7563 8091 75 arcto 4 {pop} repeat - 7563 8166 8852 8166 75 arcto 4 {pop} repeat - 8927 8166 8927 7900 75 arcto 4 {pop} repeat - 8927 7825 7638 7825 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -8245 8053 m -gs 1 -1 sc (transform 3) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 1480 5218 m 1375 5218 1375 5693 105 arcto 4 {pop} repeat - 1375 5798 2143 5798 105 arcto 4 {pop} repeat - 2248 5798 2248 5323 105 arcto 4 {pop} repeat - 2248 5218 1480 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1522 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 1480 5218 m 1375 5218 1375 5693 105 arcto 4 {pop} repeat - 1375 5798 2143 5798 105 arcto 4 {pop} repeat - 2248 5798 2248 5323 105 arcto 4 {pop} repeat - 2248 5218 1480 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1522 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 1711 1412 m 1636 1412 1636 2318 75 arcto 4 {pop} repeat - 1636 2393 2543 2393 75 arcto 4 {pop} repeat - 2618 2393 2618 1487 75 arcto 4 {pop} repeat - 2618 1412 1711 1412 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1795 1607 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1795 2075 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1795 1840 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1795 2307 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 8444 5435 m 8339 5435 8339 5910 105 arcto 4 {pop} repeat - 8339 6015 9104 6015 105 arcto 4 {pop} repeat - 9209 6015 9209 5540 105 arcto 4 {pop} repeat - 9209 5435 8444 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8484 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Polyline -n 8444 5435 m 8339 5435 8339 5910 105 arcto 4 {pop} repeat - 8339 6015 9104 6015 105 arcto 4 {pop} repeat - 9209 6015 9209 5540 105 arcto 4 {pop} repeat - 9209 5435 8444 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8484 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Polyline -n 4486 1974 m 4426 1974 4426 2615 60 arcto 4 {pop} repeat - 4426 2675 5879 2675 60 arcto 4 {pop} repeat - 5939 2675 5939 2034 60 arcto 4 {pop} repeat - 5939 1974 4486 1974 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4530 2331 m 4576 2143 l 4718 2049 l 4763 2518 l 4811 2235 l 4811 2423 l - 4858 2188 l 4904 2470 l 4951 2423 l 4998 2283 l 4998 2188 l - 5044 2331 l 5093 2188 l 5186 2518 l 5233 2188 l 5233 2423 l - 5280 2235 l 5326 2423 l 5326 2518 l 5373 2283 l 5420 2188 l - 5467 2377 l 5561 2283 l 5608 2377 l 5655 2283 l 5701 2423 l - 5748 2331 l 5795 2377 l - 5842 2331 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4486 1974 m 4426 1974 4426 2615 60 arcto 4 {pop} repeat - 4426 2675 5879 2675 60 arcto 4 {pop} repeat - 5939 2675 5939 2034 60 arcto 4 {pop} repeat - 5939 1974 4486 1974 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4530 2331 m 4576 2143 l 4718 2049 l 4763 2518 l 4811 2235 l 4811 2423 l - 4858 2188 l 4904 2470 l 4951 2423 l 4998 2283 l 4998 2188 l - 5044 2331 l 5093 2188 l 5186 2518 l 5233 2188 l 5233 2423 l - 5280 2235 l 5326 2423 l 5326 2518 l 5373 2283 l 5420 2188 l - 5467 2377 l 5561 2283 l 5608 2377 l 5655 2283 l 5701 2423 l - 5748 2331 l 5795 2377 l - 5842 2331 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 8661 8678 m 8586 8678 8586 8943 75 arcto 4 {pop} repeat - 8586 9018 9874 9018 75 arcto 4 {pop} repeat - 9949 9018 9949 8753 75 arcto 4 {pop} repeat - 9949 8678 8661 8678 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -9268 8904 m -gs 1 -1 sc (transform n) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 1844 5435 m 1739 5435 1739 5910 105 arcto 4 {pop} repeat - 1739 6015 2504 6015 105 arcto 4 {pop} repeat - 2609 6015 2609 5540 105 arcto 4 {pop} repeat - 2609 5435 1844 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1884 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Polyline -n 1844 5435 m 1739 5435 1739 5910 105 arcto 4 {pop} repeat - 1739 6015 2504 6015 105 arcto 4 {pop} repeat - 2609 6015 2609 5540 105 arcto 4 {pop} repeat - 2609 5435 1844 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1884 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Ellipse -n 8643 8412 37 37 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 1955 1656 m 1880 1656 1880 2564 75 arcto 4 {pop} repeat - 1880 2639 2788 2639 75 arcto 4 {pop} repeat - 2863 2639 2863 1731 75 arcto 4 {pop} repeat - 2863 1656 1955 1656 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -2038 2086 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2038 2553 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 1955 1656 m 1880 1656 1880 2564 75 arcto 4 {pop} repeat - 1880 2639 2788 2639 75 arcto 4 {pop} repeat - 2863 2639 2863 1731 75 arcto 4 {pop} repeat - 2863 1656 1955 1656 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -2038 1855 m -gs 1 -1 sc (000 023 s) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2038 2086 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2038 2320 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2038 2553 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2038 2320 m -gs 1 -1 sc (092 134 t) col-1 sh gr -% Ellipse -n 8416 8279 37 37 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 8889 8507 37 37 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -/Times-Roman ff 255.00 scf sf -9609 7484 m -gs 1 -1 sc (TMF) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 2201 1901 m 2126 1901 2126 2809 75 arcto 4 {pop} repeat - 2126 2884 3033 2884 75 arcto 4 {pop} repeat - 3108 2884 3108 1976 75 arcto 4 {pop} repeat - 3108 1901 2201 1901 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -2286 2099 m -gs 1 -1 sc (000 046 s) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2286 2332 m -gs 1 -1 sc (046 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2286 2564 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2286 2799 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 8806 5652 m 8701 5652 8701 6128 105 arcto 4 {pop} repeat - 8701 6233 9467 6233 105 arcto 4 {pop} repeat - 9572 6233 9572 5757 105 arcto 4 {pop} repeat - 9572 5652 8806 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8848 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 8806 5652 m 8701 5652 8701 6128 105 arcto 4 {pop} repeat - 8701 6233 9467 6233 105 arcto 4 {pop} repeat - 9572 6233 9572 5757 105 arcto 4 {pop} repeat - 9572 5652 8806 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8848 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 4729 2298 m 4669 2298 4669 2939 60 arcto 4 {pop} repeat - 4669 2999 6123 2999 60 arcto 4 {pop} repeat - 6183 2999 6183 2358 60 arcto 4 {pop} repeat - 6183 2298 4729 2298 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4773 2655 m 4820 2468 l 4961 2373 l 5008 2842 l 5054 2560 l 5054 2748 l - 5101 2512 l 5148 2794 l 5195 2748 l 5241 2608 l 5241 2512 l - 5288 2655 l 5336 2512 l 5429 2842 l 5476 2512 l 5476 2748 l - 5523 2560 l 5570 2748 l 5570 2842 l 5616 2608 l 5663 2512 l - 5710 2702 l 5805 2608 l 5851 2702 l 5898 2608 l 5945 2748 l - 5992 2655 l 6038 2702 l - 6085 2655 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4729 2298 m 4669 2298 4669 2939 60 arcto 4 {pop} repeat - 4669 2999 6123 2999 60 arcto 4 {pop} repeat - 6183 2999 6183 2358 60 arcto 4 {pop} repeat - 6183 2298 4729 2298 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4773 2655 m 4820 2468 l 4961 2373 l 5008 2842 l 5054 2560 l 5054 2748 l - 5101 2512 l 5148 2794 l 5195 2748 l 5241 2608 l 5241 2512 l - 5288 2655 l 5336 2512 l 5429 2842 l 5476 2512 l 5476 2748 l - 5523 2560 l 5570 2748 l 5570 2842 l 5616 2608 l 5663 2512 l - 5710 2702 l 5805 2608 l 5851 2702 l 5898 2608 l 5945 2748 l - 5992 2655 l 6038 2702 l - 6085 2655 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 2206 5652 m 2101 5652 2101 6128 105 arcto 4 {pop} repeat - 2101 6233 2867 6233 105 arcto 4 {pop} repeat - 2972 6233 2972 5757 105 arcto 4 {pop} repeat - 2972 5652 2206 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2248 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 2206 5652 m 2101 5652 2101 6128 105 arcto 4 {pop} repeat - 2101 6233 2867 6233 105 arcto 4 {pop} repeat - 2972 6233 2972 5757 105 arcto 4 {pop} repeat - 2972 5652 2206 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2248 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 2201 1901 m 2126 1901 2126 2809 75 arcto 4 {pop} repeat - 2126 2884 3033 2884 75 arcto 4 {pop} repeat - 3108 2884 3108 1976 75 arcto 4 {pop} repeat - 3108 1901 2201 1901 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -2286 2099 m -gs 1 -1 sc (000 046 s) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2286 2332 m -gs 1 -1 sc (046 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2286 2564 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2286 2799 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 9170 5871 m 9065 5871 9065 6346 105 arcto 4 {pop} repeat - 9065 6451 9829 6451 105 arcto 4 {pop} repeat - 9934 6451 9934 5976 105 arcto 4 {pop} repeat - 9934 5871 9170 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -9209 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 9170 5871 m 9065 5871 9065 6346 105 arcto 4 {pop} repeat - 9065 6451 9829 6451 105 arcto 4 {pop} repeat - 9934 6451 9934 5976 105 arcto 4 {pop} repeat - 9934 5871 9170 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -9209 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 4972 2623 m 4912 2623 4912 3264 60 arcto 4 {pop} repeat - 4912 3324 6366 3324 60 arcto 4 {pop} repeat - 6426 3324 6426 2683 60 arcto 4 {pop} repeat - 6426 2623 4972 2623 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 5016 2980 m 5063 2792 l 5204 2698 l 5251 3166 l 5298 2884 l 5298 3072 l - 5345 2838 l 5391 3119 l 5438 3072 l 5485 2932 l 5485 2838 l - 5531 2980 l 5579 2838 l 5673 3166 l 5720 2838 l 5720 3072 l - 5766 2884 l 5813 3072 l 5813 3166 l 5860 2932 l 5907 2838 l - 5953 3026 l 6048 2932 l 6095 3026 l 6142 2932 l 6188 3072 l - 6235 2980 l 6282 3026 l - 6328 2980 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4972 2623 m 4912 2623 4912 3264 60 arcto 4 {pop} repeat - 4912 3324 6366 3324 60 arcto 4 {pop} repeat - 6426 3324 6426 2683 60 arcto 4 {pop} repeat - 6426 2623 4972 2623 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 5016 2980 m 5063 2792 l 5204 2698 l 5251 3166 l 5298 2884 l 5298 3072 l - 5345 2838 l 5391 3119 l 5438 3072 l 5485 2932 l 5485 2838 l - 5531 2980 l 5579 2838 l 5673 3166 l 5720 2838 l 5720 3072 l - 5766 2884 l 5813 3072 l 5813 3166 l 5860 2932 l 5907 2838 l - 5953 3026 l 6048 2932 l 6095 3026 l 6142 2932 l 6188 3072 l - 6235 2980 l 6282 3026 l - 6328 2980 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 2570 5871 m 2465 5871 2465 6346 105 arcto 4 {pop} repeat - 2465 6451 3229 6451 105 arcto 4 {pop} repeat - 3334 6451 3334 5976 105 arcto 4 {pop} repeat - 3334 5871 2570 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2609 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 2570 5871 m 2465 5871 2465 6346 105 arcto 4 {pop} repeat - 2465 6451 3229 6451 105 arcto 4 {pop} repeat - 3334 6451 3334 5976 105 arcto 4 {pop} repeat - 3334 5871 2570 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2609 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 2447 2148 m 2372 2148 2372 3056 75 arcto 4 {pop} repeat - 2372 3131 3280 3131 75 arcto 4 {pop} repeat - 3355 3131 3355 2223 75 arcto 4 {pop} repeat - 3355 2148 2447 2148 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 2447 2148 m 2372 2148 2372 3056 75 arcto 4 {pop} repeat - 2372 3131 3280 3131 75 arcto 4 {pop} repeat - 3355 3131 3355 2223 75 arcto 4 {pop} repeat - 3355 2148 2447 2148 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -2530 2811 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2530 2345 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2530 2577 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2530 3045 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -/Times-Roman ff 255.00 scf sf -9876 4855 m -gs 1 -1 sc (MMF) dup sw pop neg 0 rm col-1 sh gr -% Polyline -n 5412 162 m 5292 162 5292 564 120 arcto 4 {pop} repeat - 5292 684 6216 684 120 arcto 4 {pop} repeat - 6336 684 6336 282 120 arcto 4 {pop} repeat - 6336 162 5412 162 120 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 270.00 scf sf -5814 510 m -gs 1 -1 sc (trainlist) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 3640 771 m - 3640 422 l gs col-1 s gr -% Polyline -n 3640 422 m - 5292 422 l gs col-1 s gr -% Polyline -n 6336 422 m 7814 422 l - 7814 771 l gs col-1 s gr -/Times-Roman ff 255.00 scf sf -5425 1269 m -gs 1 -1 sc (data/adapt1.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5913 1918 m -gs 1 -1 sc (data/adapt3.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6156 2243 m -gs 1 -1 sc (data/adapt4.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6399 2567 m -gs 1 -1 sc (data/adapt5.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6561 2892 m -gs 1 -1 sc (data/adapt6.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5669 1593 m -gs 1 -1 sc (data/adapt2.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5425 1269 m -gs 1 -1 sc (data/adapt1.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5913 1918 m -gs 1 -1 sc (data/adapt3.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6156 2243 m -gs 1 -1 sc (data/adapt4.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6399 2567 m -gs 1 -1 sc (data/adapt5.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6561 2892 m -gs 1 -1 sc (data/adapt6.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5669 1593 m -gs 1 -1 sc (data/adapt2.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -3276 4855 m -gs 1 -1 sc (MMF) dup sw pop neg 0 rm col-1 sh gr -% Polyline -n 105 7029 m 105 7378 l - 1234 7378 l gs col-1 s gr -% Polyline -n 1354 7116 m 1234 7116 1234 7518 120 arcto 4 {pop} repeat - 1234 7638 2157 7638 120 arcto 4 {pop} repeat - 2277 7638 2277 7236 120 arcto 4 {pop} repeat - 2277 7116 1354 7116 120 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 270.00 scf sf -1756 7465 m -gs 1 -1 sc (hmmlist) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 2277 7378 m 3495 7378 l - 3495 7029 l gs col-1 s gr -% Polyline -gs clippath -4290 5235 m 4290 5115 l 4003 5115 l 4243 5175 l 4003 5235 l cp -eoclip -n 3600 5175 m - 4275 5175 l gs col-1 s gr gr - -% arrowhead -n 4003 5235 m 4243 5175 l 4003 5115 l 4003 5235 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6615 5235 m 6615 5115 l 6328 5115 l 6568 5175 l 6328 5235 l cp -eoclip -n 5925 5175 m - 6600 5175 l gs col-1 s gr gr - -% arrowhead -n 6328 5235 m 6568 5175 l 6328 5115 l 6328 5235 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -5040 4515 m 5160 4515 l 5160 4228 l 5100 4468 l 5040 4228 l cp -eoclip -n 5100 3825 m - 5100 4500 l gs col-1 s gr gr - -% arrowhead -n 5040 4228 m 5100 4468 l 5160 4228 l 5040 4228 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6333 6870 m 6433 6804 l 6273 6565 l 6357 6798 l 6173 6631 l cp -eoclip -n 5775 5925 m - 6375 6825 l gs col-1 s gr gr - -% arrowhead -n 6173 6631 m 6357 6798 l 6273 6565 l 6173 6631 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 5768 5700 m 4459 5700 l 4459 4718 l 5768 4718 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5114 5312 m -gs 1 -1 sc (HEAdapt) dup sw pop 2 div neg 0 rm col-1 sh gr -/Times-Roman ff 255.00 scf sf -3203 3465 m -gs 1 -1 sc (MLF) dup sw pop neg 0 rm col-1 sh gr -% Polyline -0.000 slw -n 3408 2683 m - 4015 2683 l gs col7 0.75 shd ef gr -% Polyline -n 3408 2683 m - 4015 2683 l gs col7 0.75 shd ef gr -% Polyline -15.000 slw -gs clippath -4665 3210 m 4665 3090 l 4378 3090 l 4618 3150 l 4378 3210 l cp -eoclip -n 3450 2625 m 3675 2625 l 3675 3150 l - 4650 3150 l gs col-1 s gr gr - -% arrowhead -n 4378 3210 m 4618 3150 l 4378 3090 l 4378 3210 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 195.00 scf sf -1611 2590 m -gs 1 -1 sc (*/adapt3.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1855 2836 m -gs 1 -1 sc (*/adapt4.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2101 3082 m -gs 1 -1 sc (*/adapt5.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2346 3326 m -gs 1 -1 sc (*/adapt6.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1611 2590 m -gs 1 -1 sc (*/adapt3.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1855 2836 m -gs 1 -1 sc (*/adapt4.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2101 3082 m -gs 1 -1 sc (*/adapt5.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2346 3326 m -gs 1 -1 sc (*/adapt6.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1119 2099 m -gs 1 -1 sc (*/adapt1.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1365 2345 m -gs 1 -1 sc (*/adapt2.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1119 2099 m -gs 1 -1 sc (*/adapt1.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1365 2345 m -gs 1 -1 sc (*/adapt2.lab) dup sw pop neg 0 rm col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/herestdp.eps b/HTKBook/HTKFigs/herestdp.eps deleted file mode 100644 index c8ef8e9..0000000 --- a/HTKBook/HTKFigs/herestdp.eps +++ /dev/null @@ -1,4452 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: herestdp.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/31/95 8:24:26 p.m. -%%BoundingBox: 44.500 350.500 503.005 751.500 -%%QDBoundingBox: 44.500 40.500 503.005 441.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=T tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.149 setcmykcolor end} {0.850 0.850 0.850 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 225.000 261.000 0.000 0.000 216.000 225.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 315.000 45.000 0.000 0.000 117.000 180.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 378.000 163.994 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -169.438 386.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.505 4.000 S -(h) -0.616 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 324.500 56.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 333.500 74.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 342.500 92.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 351.500 110.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 360.500 128.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 369.500 146.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 378.500 164.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 372.000 153.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -160.601 380.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 381.000 172.994 0.000 0.000 16.000 26.000 rect -%@EndRect -gsave -185.994 389.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -12.505 4.000 S -(h) -8.616 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 362.000 136.994 0.000 0.000 16.000 12.427 rect -%@EndRect -gsave -143.208 370.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.505 4.000 S -(a) 0.708 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 354.000 118.994 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -120.938 362.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 344.000 97.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -104.601 352.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 334.000 83.994 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -86.718 342.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 326.000 66.994 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -69.325 334.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -1.505 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 72.000 45.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 50.000 108.000 0.000 0.000 27.000 63.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 45.000 0.000 0.000 117.000 180.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.000 163.994 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -169.438 170.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.505 4.000 S -(h) -0.616 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.500 56.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.500 74.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 126.500 92.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 135.500 110.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.500 128.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.500 146.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 162.500 164.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.000 153.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -160.601 164.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.000 172.994 0.000 0.000 16.000 26.000 rect -%@EndRect -gsave -185.994 173.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -12.505 4.000 S -(h) -8.616 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.000 136.994 0.000 0.000 16.000 12.427 rect -%@EndRect -gsave -143.208 154.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.505 4.000 S -(a) 0.708 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 138.000 118.994 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -120.938 146.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 128.000 97.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -104.601 136.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 83.994 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -86.718 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.000 66.994 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -69.325 118.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -1.505 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 236.000 295.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 246.000 304.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -332.389 274.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(1) -10.000 -19.000 S -(0) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -(e) 7.500 -19.000 S -(h) 11.938 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 254.000 313.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 264.000 322.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -350.389 292.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(2) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(s) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 272.000 331.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 282.000 340.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -368.389 310.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(5) -5.000 -19.000 S -(6) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(i) 10.000 -19.000 S -(h) 12.778 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 290.000 349.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 300.000 358.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -386.389 328.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(2) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(b) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 308.000 367.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 318.000 376.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -404.389 346.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(1) -5.000 -19.000 S -(6) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(a) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 326.000 385.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 336.000 394.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -422.389 364.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(2) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(b) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(i) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 80.500 250.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 89.500 259.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.500 261.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.500 270.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 118.500 272.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 127.500 281.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 137.500 283.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 146.500 292.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 156.500 294.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 165.500 303.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 175.500 305.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 184.500 314.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 376.994 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -415.769 89.000 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.505 4.000 S -(a) -32.504 4.000 S -(t) -26.503 4.000 S -(a) -20.502 4.000 S -(/) -14.501 4.000 S -(t) -8.500 4.000 S -(r) -2.500 4.000 S -(1) 3.500 4.000 S -(.) 9.501 4.000 S -(m) 15.502 4.000 S -(f) 21.503 4.000 S -(c) 27.504 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.557 386.686 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -425.461 108.557 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -37.813 4.000 S -(a) -31.812 4.000 S -(t) -25.811 4.000 S -(a) -19.810 4.000 S -(/) -13.809 4.000 S -(t) -7.808 4.000 S -(r) -1.807 4.000 S -(2) 4.193 4.000 S -(.) 10.194 4.000 S -(m) 16.195 4.000 S -(f) 22.196 4.000 S -(c) 28.197 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 121.115 396.378 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -435.153 128.115 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.121 4.000 S -(a) -32.120 4.000 S -(t) -26.119 4.000 S -(a) -20.118 4.000 S -(/) -14.117 4.000 S -(t) -8.116 4.000 S -(r) -2.115 4.000 S -(3) 3.885 4.000 S -(.) 9.886 4.000 S -(m) 15.887 4.000 S -(f) 21.888 4.000 S -(c) 27.889 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.673 406.070 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -444.846 147.673 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.429 4.000 S -(a) -32.428 4.000 S -(t) -26.427 4.000 S -(a) -20.426 4.000 S -(/) -14.425 4.000 S -(t) -8.424 4.000 S -(r) -2.423 4.000 S -(4) 3.577 4.000 S -(.) 9.578 4.000 S -(m) 15.579 4.000 S -(f) 21.580 4.000 S -(c) 27.581 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.230 415.763 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -454.538 167.230 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.736 4.000 S -(a) -32.735 4.000 S -(t) -26.734 4.000 S -(a) -20.733 4.000 S -(/) -14.733 4.000 S -(t) -8.732 4.000 S -(r) -2.731 4.000 S -(5) 3.269 4.000 S -(.) 9.270 4.000 S -(m) 15.271 4.000 S -(f) 21.272 4.000 S -(c) 27.273 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 179.788 425.455 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -464.230 186.788 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.044 4.000 S -(a) -32.043 4.000 S -(t) -26.042 4.000 S -(a) -20.041 4.000 S -(/) -14.040 4.000 S -(t) -8.039 4.000 S -(r) -2.038 4.000 S -(6) 3.962 4.000 S -(.) 9.963 4.000 S -(m) 15.964 4.000 S -(f) 21.965 4.000 S -(c) 27.966 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 321.500 265.494 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -292.498 328.500 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.005 4.000 S -(/) -20.004 4.000 S -(t) -14.003 4.000 S -(r) -8.002 4.000 S -(1) -2.001 4.000 S -(.) 3.999 4.000 S -(l) 10.000 4.000 S -(a) 16.000 4.000 S -(b) 22.001 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 338.113 279.647 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -306.651 345.113 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.852 4.000 S -(/) -20.851 4.000 S -(t) -14.850 4.000 S -(r) -8.849 4.000 S -(2) -2.848 4.000 S -(.) 3.152 4.000 S -(l) 9.153 4.000 S -(a) 15.154 4.000 S -(b) 21.155 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 354.726 293.800 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -320.805 361.726 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.699 4.000 S -(/) -20.698 4.000 S -(t) -14.697 4.000 S -(r) -8.696 4.000 S -(3) -2.695 4.000 S -(.) 3.305 4.000 S -(l) 9.306 4.000 S -(a) 15.307 4.000 S -(b) 21.308 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 371.339 307.954 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -334.958 378.339 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.545 4.000 S -(/) -20.544 4.000 S -(t) -14.543 4.000 S -(r) -8.542 4.000 S -(4) -2.541 4.000 S -(.) 3.459 4.000 S -(l) 9.459 4.000 S -(a) 15.460 4.000 S -(b) 21.461 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 387.952 322.107 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -349.111 394.952 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.392 4.000 S -(/) -20.391 4.000 S -(t) -14.390 4.000 S -(r) -8.389 4.000 S -(5) -2.388 4.000 S -(.) 3.612 4.000 S -(l) 9.613 4.000 S -(a) 15.614 4.000 S -(b) 21.615 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 404.566 336.260 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -363.265 411.566 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.239 4.000 S -(/) -20.238 4.000 S -(t) -14.237 4.000 S -(r) -8.236 4.000 S -(6) -2.235 4.000 S -(.) 3.765 4.000 S -(l) 9.766 4.000 S -(a) 15.767 4.000 S -(b) 21.768 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 474.494 357.500 447.494 357.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 474.494 249.500 474.494 357.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.494 248.500 475.494 248.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -376.494 212.500 moveto -/Triangular 14.687 10.574 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.494 213.888 376.494 248.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -196.494 248.500 moveto -/Triangular 14.687 10.574 false 325.431 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.637 247.711 283.494 188.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 237.500 88.494 0.000 0.000 63.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -133.494 237.500 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.494 236.111 133.494 194.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -133.494 336.500 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.494 335.111 133.494 300.500 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 260.500 83.494 0.000 0.000 20.000 107.000 rect -%@EndRect -gsave -136.994 270.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.503 5.000 S -(E) -14.504 5.000 S -(R) -3.509 5.000 S -(e) 8.496 5.000 S -(s) 16.485 5.000 S -(t) 23.490 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 45.000 81.000 45.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 72.000 225.000 81.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 56.000 118.000 0.000 0.000 16.000 45.896 rect -%@EndRect -gsave -140.948 64.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -22.500 4.000 S -(m) -15.500 4.000 S -(m) -4.610 4.000 S -(l) 6.279 4.000 S -(i) 10.168 4.000 S -(s) 14.058 4.000 S -(t) 19.506 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.500 181.500 0.000 0.000 14.000 28.013 rect -%@EndRect -gsave -195.506 108.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -14.000 3.000 S -(M) -3.330 3.000 S -(F) 7.339 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 317.500 181.500 0.000 0.000 14.000 28.013 rect -%@EndRect -gsave -195.506 324.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -14.000 3.000 S -(M) -3.330 3.000 S -(F) 7.339 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 63.000 270.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 41.000 333.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 72.000 270.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 63.000 450.000 72.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.000 343.000 0.000 0.000 16.000 42.772 rect -%@EndRect -gsave -364.386 55.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -20.500 4.000 S -(r) -16.610 4.000 S -(a) -11.948 4.000 S -(i) -5.734 4.000 S -(n) -1.844 4.000 S -(l) 5.155 4.000 S -(i) 9.044 4.000 S -(s) 12.934 4.000 S -(t) 18.382 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 414.000 441.000 0.000 0.000 14.000 24.673 rect -%@EndRect -gsave -453.336 421.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -11.500 3.000 S -(L) -0.830 3.000 S -(F) 6.500 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hierarch.eps b/HTKBook/HTKFigs/hierarch.eps deleted file mode 100644 index 6229dcd..0000000 --- a/HTKBook/HTKFigs/hierarch.eps +++ /dev/null @@ -1,3640 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hierarch.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:4/1/95 3:46:14 p.m. -%%BoundingBox: 10.500 534.500 427.500 769.500 -%%QDBoundingBox: 10.500 22.500 427.500 257.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.000 322.000 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -329.500 114.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -7.500 5.000 S -(.) -3.000 5.000 S -(.) 1.500 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.000 118.000 315.500 38.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 357.000 115.500 317.000 37.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 303.500 117.500 316.000 39.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.000 303.000 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -316.000 29.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -12.500 4.000 S -(m) -6.500 4.000 S -(m) 2.833 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 34.500 312.500 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 411.500 118.000 318.000 38.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 70.000 124.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 136.000 0.000 0.000 12.000 84.000 rect -%@EndRect -gsave -178.000 73.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(=) -41.500 3.000 S -( ) -35.860 3.000 S -(p) -33.360 3.000 S -(o) -28.360 3.000 S -(t) -23.360 3.000 S -(e) -20.582 3.000 S -(n) -16.143 3.000 S -(t) -11.143 3.000 S -(i) -8.365 3.000 S -(a) -5.586 3.000 S -(l) -1.148 3.000 S -( ) 1.629 3.000 S -(t) 4.129 3.000 S -(i) 6.908 3.000 S -(e) 9.686 3.000 S -( ) 14.125 3.000 S -(p) 16.625 3.000 S -(o) 21.625 3.000 S -(i) 26.625 3.000 S -(n) 29.403 3.000 S -(t) 34.403 3.000 S -(s) 37.181 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 118.000 0.000 0.000 22.000 110.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 214.000 57.000 0.000 0.000 13.000 8.000 rect -%@EndRect -gsave -61.000 220.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -3.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 64.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -67.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 84.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -87.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.000 76.000 0.000 0.000 13.000 9.000 rect -%@EndRect -gsave -80.500 219.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -4.500 2.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 209.000 72.000 191.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 209.000 72.000 191.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 75.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -78.000 183.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 69.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -72.500 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 188.000 69.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 78.000 172.000 126.000 152.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.000 174.500 126.000 152.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 120.000 172.500 125.500 152.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 204.500 60.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 205.500 78.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 214.000 102.500 0.000 0.000 13.000 8.000 rect -%@EndRect -gsave -106.500 220.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.000 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 110.500 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -113.500 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 130.500 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -133.500 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.000 122.500 0.000 0.000 13.000 9.000 rect -%@EndRect -gsave -127.000 219.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -4.000 2.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.500 209.000 117.500 191.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.500 209.000 117.500 191.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 119.500 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -122.500 183.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 113.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -117.000 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 188.500 115.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 206.000 105.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 206.000 123.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 214.000 165.000 0.000 0.000 13.000 8.000 rect -%@EndRect -gsave -169.000 220.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -3.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 173.000 0.000 0.000 11.000 10.000 rect -%@EndRect -gsave -178.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.500 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 197.000 0.000 0.000 11.000 10.000 rect -%@EndRect -gsave -202.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.000 189.000 0.000 0.000 13.000 9.000 rect -%@EndRect -gsave -193.500 219.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -4.500 2.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 173.000 209.000 182.000 191.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 191.000 209.000 182.000 191.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 179.000 184.000 0.000 0.000 11.000 10.000 rect -%@EndRect -gsave -189.000 184.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 178.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -181.500 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.000 179.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 206.000 170.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 205.500 188.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 142.000 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -149.500 205.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -7.500 5.000 S -(.) -3.000 5.000 S -(.) 1.500 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.500 204.500 moveto -/Triangular 14.099 7.049 false 292.326 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.259 202.649 140.500 185.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 193.000 14.000 0.000 0.000 12.000 12.000 rect -%@EndRect -gsave -20.000 199.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.500 3.000 S -(u) -0.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -56.000 207.000 moveto -/Triangular 14.099 7.049 false 188.758 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.023 206.695 30.000 203.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 190.000 11.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.000 36.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -43.500 170.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -7.500 3.000 S -(m) -2.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -68.000 188.000 moveto -/Triangular 14.099 7.049 false 214.454 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.350 186.868 50.500 176.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 34.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.000 133.000 0.000 0.000 12.000 16.500 rect -%@EndRect -gsave -141.250 177.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -1.410 3.000 S -(v) 4.000 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 167.500 135.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 119.000 124.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.500 155.000 209.000 119.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 182.000 232.000 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 248.000 182.000 232.000 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.000 182.000 232.000 155.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.000 225.777 0.000 0.000 12.000 23.333 rect -%@EndRect -gsave -237.444 196.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -10.722 4.000 S -(t) -5.396 4.000 S -(c) -2.062 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.500 155.000 207.000 119.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 319.500 153.000 207.000 118.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 364.000 154.000 207.000 118.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 309.000 0.000 0.000 13.000 27.000 rect -%@EndRect -gsave -322.500 167.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -({) -13.500 4.000 S -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1.000 0 160.500 309.000 0.000 0.000 13.000 27.000 rect -%@EndRect -gsave -322.500 167.000 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -7.740 4.000 S -grestore -restore -save -gsave -322.500 167.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -2.806 4.000 S -( ) 0.193 4.000 S -( ) 3.193 4.000 S -(}) 6.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 322.000 0.000 0.000 12.000 5.000 rect -%@EndRect -gsave -324.500 173.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.000 354.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -366.500 168.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -({) -12.500 4.000 S -(d) -6.740 4.000 S -( ) -0.740 4.000 S -( ) 2.259 4.000 S -(}) 5.259 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 368.000 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -370.000 173.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -1.500 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 152.000 363.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 152.000 318.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 209.500 314.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -321.500 215.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -7.000 3.000 S -(w) -1.589 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -321.000 181.500 moveto -/Triangular 14.099 7.049 false 448.886 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 321.040 183.499 321.500 206.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 206.500 312.500 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 210.000 359.000 0.000 0.000 12.000 12.000 rect -%@EndRect -gsave -365.000 216.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.500 3.000 S -(d) -0.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -365.500 182.000 moveto -/Triangular 14.099 7.049 false 448.886 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 365.540 183.999 366.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 207.000 357.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.500 288.000 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -291.000 105.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.000 293.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -296.000 110.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -2.500 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 206.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.000 197.000 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -200.000 103.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.000 202.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -205.000 108.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.500 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 300.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.500 363.000 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -366.000 108.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 108.000 369.000 0.000 0.000 11.000 19.000 rect -%@EndRect -gsave -378.500 113.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -9.500 2.000 S -(-) -2.278 2.000 S -(1) 3.209 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 355.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.000 155.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -160.500 108.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.500 3.000 S -(s) -0.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -197.000 116.000 moveto -/Triangular 14.099 7.049 false 188.758 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 195.023 115.695 171.000 112.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 152.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 409.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 124.500 400.000 0.000 0.000 12.000 27.000 rect -%@EndRect -gsave -413.500 130.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -({) -13.500 4.000 S -(a) -7.740 4.000 S -( ) -2.414 4.000 S -( ) 0.585 4.000 S -( ) 3.585 4.000 S -(}) 6.585 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 413.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -416.500 135.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -3.500 3.000 S -(j) -0.721 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -412.000 112.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 411.999 110.500 412.000 90.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 75.000 406.500 0.000 0.000 12.000 10.000 rect -%@EndRect -gsave -411.500 81.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.000 3.000 S -(t) 0.410 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 403.500 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.000 158.000 0.000 0.000 12.000 10.000 rect -%@EndRect -gsave -163.000 190.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -2.688 3.000 S -(i) 2.721 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.500 153.500 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.000 207.000 moveto -/Triangular 14.099 7.049 false 330.278 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.736 206.007 155.000 195.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.000 243.000 54.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 243.000 54.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 243.000 207.000 234.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 244.500 105.500 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -127.500 250.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -22.000 4.000 S -(t) -15.326 4.000 S -(r) -11.992 4.000 S -(e) -7.996 4.000 S -(a) -2.669 4.000 S -(m) 2.656 4.000 S -( ) 11.990 4.000 S -(1) 14.990 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 243.000 216.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 243.000 216.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 234.000 252.000 243.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 245.000 213.000 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -235.000 251.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -21.500 4.000 S -(t) -14.826 4.000 S -(r) -11.492 4.000 S -(e) -7.496 4.000 S -(a) -2.169 4.000 S -(m) 3.156 4.000 S -( ) 12.490 4.000 S -(2) 15.490 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 243.000 261.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 243.000 261.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 234.000 297.000 243.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 245.000 258.000 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -280.000 251.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -21.500 4.000 S -(t) -14.826 4.000 S -(r) -11.492 4.000 S -(e) -7.496 4.000 S -(a) -2.169 4.000 S -(m) 3.156 4.000 S -( ) 12.490 4.000 S -(3) 15.490 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 263.500 182.000 279.500 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.500 182.000 279.500 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.500 182.000 279.500 155.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.000 273.277 0.000 0.000 12.000 23.333 rect -%@EndRect -gsave -284.944 196.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -11.222 4.000 S -(t) -5.896 4.000 S -(c) -2.562 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hinitdp.eps b/HTKBook/HTKFigs/hinitdp.eps deleted file mode 100644 index 7bee439..0000000 --- a/HTKBook/HTKFigs/hinitdp.eps +++ /dev/null @@ -1,3745 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hinitdp.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:21:53 a.m. -%%BoundingBox: 91.502 428.144 466.014 759.855 -%%QDBoundingBox: 91.502 32.144 466.014 363.855 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=T tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.144 110.002 0.000 0.000 44.000 59.493 rect -%@EndRect -gsave -139.749 59.144 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -14.526 -10.000 S -(n) -9.864 -10.000 S -(p) -2.864 -10.000 S -(u) 4.135 -10.000 S -(t) 11.135 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.497 5.000 S -(M) -19.387 5.000 S -(M) -6.938 5.000 S -( ) 5.509 5.000 S -(D) 9.009 5.000 S -(e) 19.119 5.000 S -(f) 25.333 5.000 S -grestore -restore -save -gsave -139.749 59.144 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.753 19.000 S -(i) -11.752 19.000 S -(h) -5.751 19.000 S -(.) 0.249 19.000 S -(1) 6.250 19.000 S -(\)) 12.251 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 32.644 96.502 0.000 0.000 54.000 90.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.144 110.002 0.000 0.000 44.000 59.493 rect -%@EndRect -gsave -139.749 230.144 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -19.195 -10.000 S -(u) -9.085 -10.000 S -(t) -2.085 -10.000 S -(p) 1.804 -10.000 S -(u) 8.804 -10.000 S -(t) 15.804 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.497 5.000 S -(M) -19.387 5.000 S -(M) -6.938 5.000 S -( ) 5.509 5.000 S -(D) 9.009 5.000 S -(e) 19.119 5.000 S -(f) 25.333 5.000 S -grestore -restore -save -gsave -139.749 230.144 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.753 19.000 S -(i) -11.752 19.000 S -(h) -5.751 19.000 S -(.) 0.249 19.000 S -(2) 6.250 19.000 S -(\)) 12.251 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 203.644 96.502 0.000 0.000 54.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 113.644 96.502 0.000 0.000 63.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -141.502 113.644 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.502 112.255 141.502 86.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -141.502 203.644 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.502 202.255 141.502 176.644 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.644 91.502 0.000 0.000 20.000 107.000 rect -%@EndRect -gsave -145.002 146.644 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.495 5.000 S -(I) -5.496 5.000 S -(n) 0.498 5.000 S -(i) 9.498 5.000 S -(t) 14.499 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 37.644 213.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.644 222.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 56.644 224.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 65.644 233.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.644 235.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 84.644 244.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 94.644 246.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.644 255.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 113.644 257.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 122.644 266.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.644 268.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 141.644 277.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -186.502 133.644 moveto -/Triangular 14.687 10.574 false 321.865 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 187.594 132.786 228.502 100.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 176.644 216.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.644 225.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -253.891 214.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(1) -10.497 -19.000 S -(0) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -(e) 7.002 -19.000 S -(h) 11.440 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 194.644 234.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 204.644 243.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -271.891 232.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(2) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(s) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 212.644 252.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 222.644 261.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -289.891 250.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(5) -5.497 -19.000 S -(6) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(i) 9.502 -19.000 S -(h) 12.280 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 230.644 270.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 240.644 279.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -307.891 268.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(2) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(b) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 248.644 288.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 258.644 297.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -325.891 286.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(1) -5.497 -19.000 S -(6) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(a) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.644 306.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 276.644 315.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -343.891 304.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(2) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(b) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(i) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.144 340.002 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -378.777 46.144 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.497 4.000 S -(a) -32.496 4.000 S -(t) -26.495 4.000 S -(a) -20.494 4.000 S -(/) -14.493 4.000 S -(t) -8.492 4.000 S -(r) -2.491 4.000 S -(1) 3.509 4.000 S -(.) 9.510 4.000 S -(m) 15.511 4.000 S -(f) 21.512 4.000 S -(c) 27.513 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 58.701 349.694 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -388.469 65.701 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -37.805 4.000 S -(a) -31.804 4.000 S -(t) -25.803 4.000 S -(a) -19.802 4.000 S -(/) -13.801 4.000 S -(t) -7.800 4.000 S -(r) -1.799 4.000 S -(2) 4.201 4.000 S -(.) 10.202 4.000 S -(m) 16.203 4.000 S -(f) 22.204 4.000 S -(c) 28.205 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.259 359.386 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -398.162 85.259 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.113 4.000 S -(a) -32.112 4.000 S -(t) -26.111 4.000 S -(a) -20.110 4.000 S -(/) -14.109 4.000 S -(t) -8.108 4.000 S -(r) -2.107 4.000 S -(3) 3.893 4.000 S -(.) 9.894 4.000 S -(m) 15.895 4.000 S -(f) 21.896 4.000 S -(c) 27.897 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.817 369.079 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -407.854 104.817 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.420 4.000 S -(a) -32.419 4.000 S -(t) -26.418 4.000 S -(a) -20.417 4.000 S -(/) -14.416 4.000 S -(t) -8.415 4.000 S -(r) -2.414 4.000 S -(4) 3.586 4.000 S -(.) 9.587 4.000 S -(m) 15.587 4.000 S -(f) 21.588 4.000 S -(c) 27.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 117.375 378.771 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -417.546 124.375 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.728 4.000 S -(a) -32.727 4.000 S -(t) -26.726 4.000 S -(a) -20.725 4.000 S -(/) -14.724 4.000 S -(t) -8.723 4.000 S -(r) -2.722 4.000 S -(5) 3.278 4.000 S -(.) 9.279 4.000 S -(m) 15.280 4.000 S -(f) 21.281 4.000 S -(c) 27.282 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.932 388.463 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -427.238 143.932 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.036 4.000 S -(a) -32.035 4.000 S -(t) -26.034 4.000 S -(a) -20.033 4.000 S -(/) -14.032 4.000 S -(t) -8.031 4.000 S -(r) -2.030 4.000 S -(6) 3.970 4.000 S -(.) 9.971 4.000 S -(m) 15.972 4.000 S -(f) 21.973 4.000 S -(c) 27.974 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 267.644 153.502 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -203.355 274.644 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -48.997 4.000 S -(a) -42.996 4.000 S -(b) -36.995 4.000 S -(s) -30.994 4.000 S -(/) -24.993 4.000 S -(t) -18.992 4.000 S -(r) -12.991 4.000 S -(1) -6.990 4.000 S -(.) -0.989 4.000 S -(l) 5.011 4.000 S -(a) 11.012 4.000 S -(b) 17.013 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.086 165.963 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -215.816 291.086 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.536 4.000 S -(a) -43.535 4.000 S -(b) -37.534 4.000 S -(s) -31.533 4.000 S -(/) -25.532 4.000 S -(t) -19.531 4.000 S -(r) -13.530 4.000 S -(2) -7.529 4.000 S -(.) -1.528 4.000 S -(l) 4.472 4.000 S -(a) 10.473 4.000 S -(b) 16.474 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 300.528 178.424 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -228.277 307.528 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.075 4.000 S -(a) -43.074 4.000 S -(b) -37.073 4.000 S -(s) -31.072 4.000 S -(/) -25.071 4.000 S -(t) -19.070 4.000 S -(r) -13.069 4.000 S -(3) -7.068 4.000 S -(.) -1.067 4.000 S -(l) 4.933 4.000 S -(a) 10.934 4.000 S -(b) 16.935 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.971 190.886 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -240.738 323.971 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.613 4.000 S -(a) -43.612 4.000 S -(b) -37.611 4.000 S -(s) -31.611 4.000 S -(/) -25.610 4.000 S -(t) -19.609 4.000 S -(r) -13.608 4.000 S -(4) -7.607 4.000 S -(.) -1.606 4.000 S -(l) 4.394 4.000 S -(a) 10.395 4.000 S -(b) 16.396 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 333.413 203.347 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -253.200 340.413 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.152 4.000 S -(a) -43.151 4.000 S -(b) -37.150 4.000 S -(s) -31.149 4.000 S -(/) -25.148 4.000 S -(t) -19.147 4.000 S -(r) -13.146 4.000 S -(5) -7.145 4.000 S -(.) -1.144 4.000 S -(l) 4.856 4.000 S -(a) 10.856 4.000 S -(b) 16.857 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 349.855 215.808 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -265.661 356.855 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.691 4.000 S -(a) -43.690 4.000 S -(b) -37.689 4.000 S -(s) -31.688 4.000 S -(/) -25.687 4.000 S -(t) -19.686 4.000 S -(r) -13.685 4.000 S -(6) -7.684 4.000 S -(.) -1.683 4.000 S -(l) 4.317 4.000 S -(a) 10.318 4.000 S -(b) 16.319 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.502 293.644 369.502 293.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.502 203.644 396.502 293.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.502 203.644 396.502 203.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -333.502 167.644 moveto -/Triangular 14.687 10.574 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.502 169.033 333.502 203.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 140.644 285.502 0.000 0.000 23.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 140.644 330.502 0.000 0.000 23.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.502 167.644 moveto -/Triangular 14.687 10.574 false 405.029 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.484 168.626 333.502 203.644 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hmm1.eps b/HTKBook/HTKFigs/hmm1.eps deleted file mode 100644 index 6828f62..0000000 --- a/HTKBook/HTKFigs/hmm1.eps +++ /dev/null @@ -1,2535 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hmm1.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:3/19/95 2:39:24 p.m. -%%BoundingBox: 19.000 599.000 299.000 791.000 -%%QDBoundingBox: 19.000 1.000 299.000 193.000 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 77.000 19.500 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 26.000 77.199 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 74.600 73.500 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -140.100 90.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.100 90.800 106.800 90.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -77.199 58.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 77.385 56.408 78.125 48.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 26.000 143.800 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 74.600 140.099 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -206.700 90.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.700 90.800 173.400 90.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -143.800 58.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.986 56.408 144.725 48.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 26.000 210.400 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 74.600 206.699 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -273.300 90.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.300 90.800 240.000 90.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -210.400 58.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 210.586 56.408 211.325 48.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.500 91.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.500 91.000 46.500 91.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 48.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -53.500 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 56.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -63.500 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -7.000 4.000 S -(2) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 111.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -116.000 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 120.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -127.000 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(3) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 179.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -184.000 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 188.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -195.000 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 243.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -248.500 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 253.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -260.500 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -7.000 4.000 S -(5) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 1.500 78.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -83.000 10.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.500 87.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -94.000 16.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(2) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 1.500 145.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -150.000 10.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 11.000 154.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -161.000 17.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(3) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 1.500 212.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -217.000 10.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 11.000 221.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -228.000 17.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -6.000 4.000 S -(4) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 28.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -33.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 85.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -90.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 153.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -158.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 218.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -223.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -5.000 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 77.000 271.500 0.000 0.000 27.000 27.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 280.500 0.000 0.000 20.000 9.000 rect -%@EndRect -gsave -285.000 92.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -4.000 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 96.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 96.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -164.500 124.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.500 124.000 147.500 124.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 163.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 163.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -231.500 124.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 229.500 124.000 214.500 124.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 120.500 130.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -135.000 129.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 139.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -146.000 135.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 120.500 196.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -201.000 129.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.000 205.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -212.000 136.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(5) 0.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.500 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.499 164.000 88.500 107.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.500 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.499 164.000 155.500 107.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.500 166.000 moveto -/Triangular 14.099 7.049 false 269.048 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.466 164.000 222.500 107.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.000 75.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -80.500 178.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 179.000 84.000 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -87.000 186.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.500 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.000 90.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -94.000 180.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.000 103.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -107.000 180.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.500 144.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -149.500 176.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 153.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -157.000 184.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 159.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -163.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 173.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -177.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.500 209.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -214.500 176.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 218.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -222.000 184.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 224.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -228.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 237.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -241.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 30.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 30.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -98.500 124.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 96.500 124.000 81.500 124.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 119.500 60.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -65.000 128.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 68.000 0.000 0.000 14.000 12.000 rect -%@EndRect -gsave -74.000 136.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -5.500 3.000 S -(3) 0.500 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hmmirest_par.eps b/HTKBook/HTKFigs/hmmirest_par.eps deleted file mode 100644 index a0a6e9f..0000000 --- a/HTKBook/HTKFigs/hmmirest_par.eps +++ /dev/null @@ -1,393 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: hmmirest_par.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Tue Feb 24 15:31:55 2009 -%%For: mjfg@mjfghp (Mark Gales) -%%BoundingBox: 0 0 553 361 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 361 moveto 0 0 lineto 553 0 lineto 553 361 lineto closepath clip newpath --29.5 380.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06000 0.06000 sc -% -% Fig objects follow -% -% -% here starts figure with depth 30 -% Polyline -30.000 slw -n 5670 3285 m 5535 3285 5535 3915 135 arcto 4 {pop} repeat - 5535 4050 7140 4050 135 arcto 4 {pop} repeat - 7275 4050 7275 3420 135 arcto 4 {pop} repeat - 7275 3285 5670 3285 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3195 3270 m 3060 3270 3060 3900 135 arcto 4 {pop} repeat - 3060 4035 4665 4035 135 arcto 4 {pop} repeat - 4800 4035 4800 3405 135 arcto 4 {pop} repeat - 4800 3270 3195 3270 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 8070 3285 m 7935 3285 7935 3915 135 arcto 4 {pop} repeat - 7935 4050 9540 4050 135 arcto 4 {pop} repeat - 9675 4050 9675 3420 135 arcto 4 {pop} repeat - 9675 3285 8070 3285 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5625 3750 m -gs 1 -1 sc (HDR2.acc.n) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3150 3735 m -gs 1 -1 sc (HDR1.acc.n) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8025 3750 m -gs 1 -1 sc (HDR3.acc.n) col-1 sh gr -% here ends figure; -% -% here starts figure with depth 20 -% Polyline -30.000 slw -n 2745 3735 m 2610 3735 2610 4365 135 arcto 4 {pop} repeat - 2610 4500 4215 4500 135 arcto 4 {pop} repeat - 4350 4500 4350 3870 135 arcto 4 {pop} repeat - 4350 3735 2745 3735 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 5220 3735 m 5085 3735 5085 4365 135 arcto 4 {pop} repeat - 5085 4500 6690 4500 135 arcto 4 {pop} repeat - 6825 4500 6825 3870 135 arcto 4 {pop} repeat - 6825 3735 5220 3735 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7620 3735 m 7485 3735 7485 4365 135 arcto 4 {pop} repeat - 7485 4500 9090 4500 135 arcto 4 {pop} repeat - 9225 4500 9225 3870 135 arcto 4 {pop} repeat - 9225 3735 7620 3735 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 300.00 scf sf -2700 4275 m -gs 1 -1 sc (HDR1.acc.2) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5175 4275 m -gs 1 -1 sc (HDR2.acc.2) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7575 4275 m -gs 1 -1 sc (HDR3.acc.2) col-1 sh gr -% here ends figure; -% -% here starts figure with depth 10 -% Polyline -30.000 slw -n 2445 4260 m 2310 4260 2310 4890 135 arcto 4 {pop} repeat - 2310 5025 3915 5025 135 arcto 4 {pop} repeat - 4050 5025 4050 4395 135 arcto 4 {pop} repeat - 4050 4260 2445 4260 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4920 4260 m 4785 4260 4785 4890 135 arcto 4 {pop} repeat - 4785 5025 6390 5025 135 arcto 4 {pop} repeat - 6525 5025 6525 4395 135 arcto 4 {pop} repeat - 6525 4260 4920 4260 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7320 4260 m 7185 4260 7185 4890 135 arcto 4 {pop} repeat - 7185 5025 8790 5025 135 arcto 4 {pop} repeat - 8925 5025 8925 4395 135 arcto 4 {pop} repeat - 8925 4260 7320 4260 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% here ends figure; -% -% here starts figure with depth 0 -% Polyline -30.000 slw -n 2475 1875 m 4575 1875 l 4575 2550 l 2475 2550 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -3600 2325 m -gs 1 -1 sc (EST \(1\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2550 2325 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 4950 1875 m 7050 1875 l 7050 2550 l 4950 2550 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -6075 2325 m -gs 1 -1 sc (EST \(2\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5025 2325 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 5370 360 m 5235 360 5235 1140 135 arcto 4 {pop} repeat - 5235 1275 6690 1275 135 arcto 4 {pop} repeat - 6825 1275 6825 495 135 arcto 4 {pop} repeat - 6825 360 5370 360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5550 750 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5850 1050 m -gs 1 -1 sc (Files) col-1 sh gr -% Polyline -gs clippath -5940 1890 m 6060 1890 l 6060 1603 l 6000 1843 l 5940 1603 l cp -eoclip -n 6000 1275 m - 6000 1875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5940 1603 m 6000 1843 l 6060 1603 l 5940 1603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 7425 1875 m 9525 1875 l 9525 2550 l 7425 2550 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -8550 2325 m -gs 1 -1 sc (EST \(3\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7500 2325 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 7845 360 m 7710 360 7710 1140 135 arcto 4 {pop} repeat - 7710 1275 9165 1275 135 arcto 4 {pop} repeat - 9300 1275 9300 495 135 arcto 4 {pop} repeat - 9300 360 7845 360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -8025 750 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8325 1050 m -gs 1 -1 sc (Files) col-1 sh gr -% Polyline -gs clippath -8415 1890 m 8535 1890 l 8535 1603 l 8475 1843 l 8415 1603 l cp -eoclip -n 8475 1275 m - 8475 1875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8415 1603 m 8475 1843 l 8535 1603 l 8415 1603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 2895 360 m 2760 360 2760 1140 135 arcto 4 {pop} repeat - 2760 1275 4215 1275 135 arcto 4 {pop} repeat - 4350 1275 4350 495 135 arcto 4 {pop} repeat - 4350 360 2895 360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -3075 750 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3375 1050 m -gs 1 -1 sc (Files) col-1 sh gr -% Polyline -n 5025 5625 m 7125 5625 l 7125 6300 l 5025 6300 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -6150 6075 m -gs 1 -1 sc (EST \(0\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5100 6075 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 660 1935 m 525 1935 525 2340 135 arcto 4 {pop} repeat - 525 2475 1665 2475 135 arcto 4 {pop} repeat - 1800 2475 1800 2070 135 arcto 4 {pop} repeat - 1800 1935 660 1935 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -2415 2310 m 2415 2190 l 2128 2190 l 2368 2250 l 2128 2310 l cp -eoclip -n 1800 2250 m - 2400 2250 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2128 2310 m 2368 2250 l 2128 2190 l 2128 2310 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3465 1890 m 3585 1890 l 3585 1603 l 3525 1843 l 3465 1603 l cp -eoclip -n 3525 1275 m - 3525 1875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 1603 m 3525 1843 l 3585 1603 l 3465 1603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1185 2460 m 1065 2460 l 1065 2747 l 1125 2507 l 1185 2747 l cp -eoclip -n 5025 6000 m 1125 6000 l - 1125 2475 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1185 2747 m 1125 2507 l 1065 2747 l 1185 2747 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3465 3165 m 3585 3165 l 3585 2878 l 3525 3118 l 3465 2878 l cp -eoclip -n 3525 2550 m - 3525 3150 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 2878 m 3525 3118 l 3585 2878 l 3465 2878 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -5940 3165 m 6060 3165 l 6060 2878 l 6000 3118 l 5940 2878 l cp -eoclip -n 6000 2550 m - 6000 3150 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5940 2878 m 6000 3118 l 6060 2878 l 5940 2878 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -8415 3165 m 8535 3165 l 8535 2878 l 8475 3118 l 8415 2878 l cp -eoclip -n 8475 2550 m - 8475 3150 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8415 2878 m 8475 3118 l 8535 2878 l 8415 2878 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -7131 5699 m 7207 5791 l 7429 5609 l 7206 5715 l 7353 5516 l cp -eoclip -n 8006 5061 m - 7181 5736 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7353 5516 m 7206 5715 l 7429 5609 l 7353 5516 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4951 5812 m 5027 5720 l 4805 5537 l 4953 5736 l 4729 5630 l cp -eoclip -n 4153 5082 m - 4978 5757 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4729 5630 m 4953 5736 l 4805 5537 l 4729 5630 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6015 5640 m 6135 5640 l 6135 5353 l 6075 5593 l 6015 5353 l cp -eoclip -n 6075 5025 m - 6075 5625 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6015 5353 m 6075 5593 l 6135 5353 l 6015 5353 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 300.00 scf sf -720 2310 m -gs 1 -1 sc (HMMs) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2400 4725 m -gs 1 -1 sc (HDR1.acc.1) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4875 4725 m -gs 1 -1 sc (HDR2.acc.1) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7275 4725 m -gs 1 -1 sc (HDR3.acc.1) col-1 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff --git a/HTKBook/HTKFigs/hmmirest_par.fig b/HTKBook/HTKFigs/hmmirest_par.fig deleted file mode 100644 index 7b75529..0000000 --- a/HTKBook/HTKFigs/hmmirest_par.fig +++ /dev/null @@ -1,136 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -A4 -100.00 -Single --2 -1200 2 -6 2460 1860 4590 2565 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2475 1875 4575 1875 4575 2550 2475 2550 2475 1875 -4 0 -1 0 0 0 16 0.0000 4 210 765 3600 2325 EST (1)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 2550 2325 HMMIR\001 --6 -6 4935 1860 7065 2565 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 4950 1875 7050 1875 7050 2550 4950 2550 4950 1875 -4 0 -1 0 0 0 16 0.0000 4 210 765 6075 2325 EST (2)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 5025 2325 HMMIR\001 --6 -6 5175 300 6900 1950 -6 5175 300 6900 1350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 6825 1275 5235 1275 5235 360 6825 360 6825 1275 -4 0 -1 0 0 0 20 0.0000 4 195 585 5550 750 Data\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 5850 1050 Files\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6000 1275 6000 1875 --6 -6 7410 1860 9540 2565 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7425 1875 9525 1875 9525 2550 7425 2550 7425 1875 -4 0 -1 0 0 0 16 0.0000 4 210 765 8550 2325 EST (3)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 7500 2325 HMMIR\001 --6 -6 7650 300 9375 1950 -6 7650 300 9375 1350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 9300 1275 7710 1275 7710 360 9300 360 9300 1275 -4 0 -1 0 0 0 20 0.0000 4 195 585 8025 750 Data\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 8325 1050 Files\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8475 1275 8475 1875 --6 -6 2700 300 4425 1350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4350 1275 2760 1275 2760 360 4350 360 4350 1275 -4 0 -1 0 0 0 20 0.0000 4 195 585 3075 750 Data\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 3375 1050 Files\001 --6 -6 2550 3675 4425 4575 -2 4 0 3 -1 7 20 0 20 0.000 0 0 9 0 0 5 - 4350 4500 2610 4500 2610 3735 4350 3735 4350 4500 --6 -6 5025 3675 6900 4575 -2 4 0 3 -1 7 20 0 20 0.000 0 0 9 0 0 5 - 6825 4500 5085 4500 5085 3735 6825 3735 6825 4500 --6 -6 5520 3270 7290 4065 -2 4 0 3 -1 7 30 0 20 0.000 0 0 9 0 0 5 - 7275 4050 5535 4050 5535 3285 7275 3285 7275 4050 -4 0 -1 29 0 0 20 0.0000 4 195 1500 5625 3750 HDR2.acc.n\001 --6 -6 7425 3675 9300 4575 -2 4 0 3 -1 7 20 0 20 0.000 0 0 9 0 0 5 - 9225 4500 7485 4500 7485 3735 9225 3735 9225 4500 --6 -6 3045 3255 4815 4050 -2 4 0 3 -1 7 30 0 20 0.000 0 0 9 0 0 5 - 4800 4035 3060 4035 3060 3270 4800 3270 4800 4035 -4 0 -1 29 0 0 20 0.0000 4 195 1500 3150 3735 HDR1.acc.n\001 --6 -6 2700 4050 4200 4275 -4 0 -1 19 0 0 20 0.0000 4 195 1500 2700 4275 HDR1.acc.2\001 --6 -6 5175 4080 6675 4275 -4 0 -1 19 0 0 20 0.0000 4 195 1500 5175 4275 HDR2.acc.2\001 --6 -6 7920 3270 9690 4065 -2 4 0 3 -1 7 30 0 20 0.000 0 0 9 0 0 5 - 9675 4050 7935 4050 7935 3285 9675 3285 9675 4050 -4 0 -1 29 0 0 20 0.0000 4 195 1500 8025 3750 HDR3.acc.n\001 --6 -6 7575 4080 9075 4275 -4 0 -1 19 0 0 20 0.0000 4 195 1500 7575 4275 HDR3.acc.2\001 --6 -6 5010 5610 7140 6315 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5025 5625 7125 5625 7125 6300 5025 6300 5025 5625 -4 0 -1 0 0 0 16 0.0000 4 210 765 6150 6075 EST (0)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 5100 6075 HMMIR\001 --6 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 1800 2475 525 2475 525 1935 1800 1935 1800 2475 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1800 2250 2400 2250 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 1275 3525 1875 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 5025 6000 1125 6000 1125 2475 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 2550 3525 3150 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6000 2550 6000 3150 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8475 2550 8475 3150 -2 4 0 3 -1 7 10 0 20 0.000 0 0 9 0 0 5 - 4050 5025 2310 5025 2310 4260 4050 4260 4050 5025 -2 4 0 3 -1 7 10 0 20 0.000 0 0 9 0 0 5 - 6525 5025 4785 5025 4785 4260 6525 4260 6525 5025 -2 4 0 3 -1 7 10 0 20 0.000 0 0 9 0 0 5 - 8925 5025 7185 5025 7185 4260 8925 4260 8925 5025 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8006 5061 7181 5736 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4153 5082 4978 5757 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6075 5025 6075 5625 -4 0 -1 0 0 0 20 0.0000 4 195 885 720 2310 HMMs\001 -4 0 -1 0 0 0 20 0.0000 4 195 1500 2400 4725 HDR1.acc.1\001 -4 0 -1 0 0 0 20 0.0000 4 195 1500 4875 4725 HDR2.acc.1\001 -4 0 -1 0 0 0 20 0.0000 4 195 1500 7275 4725 HDR3.acc.1\001 diff --git a/HTKBook/HTKFigs/hsetdef.eps b/HTKBook/HTKFigs/hsetdef.eps deleted file mode 100644 index d1b41ca..0000000 --- a/HTKBook/HTKFigs/hsetdef.eps +++ /dev/null @@ -1,1959 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hsetdef.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:4/6/95 8:59:06 p.m. -%%BoundingBox: 26.500 470.500 435.115 768.000 -%%QDBoundingBox: 26.500 24.000 435.115 321.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 24.000 45.000 0.000 0.000 17.000 288.046 rect -%@EndRect -gsave -189.023 32.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -143.500 4.000 S -(T) -136.298 4.000 S -(o) -129.097 4.000 S -(o) -121.896 4.000 S -(l) -114.695 4.000 S -( ) -107.494 4.000 S -( ) -100.292 4.000 S -(-) -93.091 4.000 S -(H) -85.890 4.000 S -( ) -78.689 4.000 S -(m) -71.488 4.000 S -(f) -64.287 4.000 S -(1) -57.085 4.000 S -( ) -49.884 4.000 S -( ) -42.683 4.000 S -(-) -35.482 4.000 S -(H) -28.281 4.000 S -( ) -21.080 4.000 S -(m) -13.878 4.000 S -(f) -6.677 4.000 S -(2) 0.523 4.000 S -( ) 7.724 4.000 S -( ) 14.925 4.000 S -(.) 22.126 4.000 S -(.) 29.328 4.000 S -(.) 36.529 4.000 S -(.) 43.730 4.000 S -( ) 50.931 4.000 S -( ) 58.132 4.000 S -(h) 65.333 4.000 S -(l) 72.535 4.000 S -(i) 79.736 4.000 S -(s) 86.937 4.000 S -(t) 94.138 4.000 S -( ) 101.339 4.000 S -( ) 108.541 4.000 S -(.) 115.742 4.000 S -(.) 122.943 4.000 S -(.) 130.144 4.000 S -(.) 137.345 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.000 45.000 0.000 0.000 81.000 49.207 rect -%@EndRect -gsave -69.603 145.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 -28.000 S -(s) -17.298 -28.000 S -( ) -10.097 -28.000 S -(.) -2.896 -28.000 S -(.) 4.304 -28.000 S -(.) 11.505 -28.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 -12.000 S -(s) -17.298 -12.000 S -( ) -10.097 -12.000 S -(.) -2.896 -12.000 S -(.) 4.304 -12.000 S -(.) 11.505 -12.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 4.000 S -(s) -17.298 4.000 S -( ) -10.097 4.000 S -(.) -2.896 4.000 S -(.) 4.304 4.000 S -(.) 11.505 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 20.000 S -(t) -17.298 20.000 S -( ) -10.097 20.000 S -(.) -2.896 20.000 S -(.) 4.304 20.000 S -(.) 11.505 20.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -24.500 36.000 S -(e) -17.298 36.000 S -(t) -10.097 36.000 S -(c) -2.896 36.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.500 135.500 0.000 0.000 97.000 79.212 rect -%@EndRect -gsave -175.106 154.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -39.000 -35.000 S -(h) -31.798 -35.000 S -( ) -24.597 -35.000 S -(") -17.396 -35.000 S -(h) -10.195 -35.000 S -(a) -2.994 -35.000 S -(") 4.207 -35.000 S -( ) 11.408 -35.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -39.000 -19.000 S -( ) -31.798 -19.000 S -( ) -24.597 -19.000 S -(.) -17.396 -19.000 S -(.) -10.195 -19.000 S -(.) -2.994 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -39.000 -3.000 S -(h) -31.798 -3.000 S -( ) -24.597 -3.000 S -(") -17.396 -3.000 S -(h) -10.195 -3.000 S -(b) -2.994 -3.000 S -(") 4.207 -3.000 S -( ) 11.408 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -39.000 13.000 S -( ) -31.798 13.000 S -( ) -24.597 13.000 S -(.) -17.396 13.000 S -(.) -10.195 13.000 S -(.) -2.994 13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -39.000 29.000 S -(h) -31.798 29.000 S -( ) -24.597 29.000 S -(") -17.396 29.000 S -(h) -10.195 29.000 S -(c) -2.994 29.000 S -(") 4.207 29.000 S -( ) 11.408 29.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -39.000 45.000 S -( ) -31.798 45.000 S -( ) -24.597 45.000 S -(.) -17.396 45.000 S -(.) -10.195 45.000 S -(.) -2.994 45.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.500 252.500 0.000 0.000 81.000 14.402 rect -%@EndRect -gsave -259.701 146.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 -27.000 S -(a) 0.201 -27.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 -11.000 S -(b) 0.201 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 5.000 S -(c) 0.201 5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 21.000 S -(d) 0.201 21.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 37.000 S -(e) 0.201 37.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 36.000 0.000 0.000 105.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 126.000 0.000 0.000 105.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 243.000 0.000 0.000 105.000 36.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 258.500 106.500 0.000 0.000 31.000 100.816 rect -%@EndRect -gsave -156.908 274.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -28.562 -3.000 S -(o) -16.114 -3.000 S -(d) -9.114 -3.000 S -(e) -2.114 -3.000 S -(l) 4.099 -3.000 S -( ) 7.989 -3.000 S -(S) 11.489 -3.000 S -(e) 19.275 -3.000 S -(t) 25.489 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -40.412 12.000 S -(a) -33.412 12.000 S -(,) -27.198 12.000 S -(h) -23.698 12.000 S -(b) -16.698 12.000 S -(,) -9.698 12.000 S -(h) -6.198 12.000 S -(c) 0.801 12.000 S -(,) 7.015 12.000 S -(h) 10.515 12.000 S -(d) 17.515 12.000 S -(,) 24.515 12.000 S -(h) 28.015 12.000 S -(e) 35.015 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 252.000 108.000 0.000 0.000 45.000 99.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 27.000 216.000 27.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 216.000 27.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 207.000 297.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -158.000 252.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 157.999 248.000 158.000 217.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 229.000 333.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 333.500 0.000 0.000 17.000 14.402 rect -%@EndRect -gsave -340.701 217.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 5.000 S -(d) 0.201 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 283.000 333.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 262.500 333.500 0.000 0.000 17.000 14.402 rect -%@EndRect -gsave -340.701 271.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 5.000 S -(e) 0.201 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.000 321.000 324.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.000 321.000 324.000 321.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.000 204.000 324.000 204.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -208.000 277.000 moveto -/Triangular 16.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 212.000 276.999 324.000 277.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 135.000 288.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -351.000 198.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 350.999 196.000 351.000 135.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.500 361.500 0.000 0.000 53.000 73.615 rect -%@EndRect -gsave -398.307 185.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -36.000 -16.000 S -(e) -29.326 -16.000 S -(a) -24.000 -16.000 S -(r) -18.673 -16.000 S -(c) -14.677 -16.000 S -(h) -9.351 -16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -36.000 -3.000 S -(o) -29.326 -3.000 S -(r) -23.326 -3.000 S -( ) -19.330 -3.000 S -(F) -16.330 -3.000 S -(i) -9.656 -3.000 S -(l) -6.322 -3.000 S -(e) -2.988 -3.000 S -(s) 2.337 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -36.000 10.000 S -(a) -27.996 10.000 S -(l) -22.669 10.000 S -(l) -19.335 10.000 S -(e) -16.001 10.000 S -(d) -10.675 10.000 S -( ) -4.675 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -36.000 23.000 S -(h) -31.101 23.000 S -(d) -25.101 23.000 S -(") -19.101 23.000 S -( ) -14.203 23.000 S -(a) -11.203 23.000 S -(n) -5.876 23.000 S -(d) 0.123 23.000 S -( ) 6.123 23.000 S -(") 9.123 23.000 S -(h) 14.021 23.000 S -(e) 20.021 23.000 S -(") 25.347 23.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 115.500 290.500 0.000 0.000 53.000 47.982 rect -%@EndRect -gsave -314.491 142.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.346 -16.000 S -(M) -7.680 -16.000 S -(M) 2.989 -16.000 S -(s) 13.659 -16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -22.334 10.000 S -(d) -16.334 10.000 S -( ) -10.334 10.000 S -(a) -7.334 10.000 S -(n) -2.008 10.000 S -(d) 3.991 10.000 S -( ) 9.991 10.000 S -(h) 12.991 10.000 S -(e) 18.991 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -23.000 23.000 S -(n) -17.000 23.000 S -(d) -11.000 23.000 S -(e) -5.000 23.000 S -(f) 0.326 23.000 S -(i) 4.322 23.000 S -(n) 7.656 23.000 S -(e) 13.656 23.000 S -(d) 18.982 23.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 65.000 moveto -/Triangular 14.099 7.049 false 317.625 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.476 63.651 111.000 44.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -173.000 65.000 moveto -/Triangular 14.099 7.049 false 293.519 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 173.797 63.165 183.000 42.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 66.000 moveto -/Triangular 14.099 7.049 false 286.947 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.582 64.086 268.000 43.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 81.500 45.500 0.000 0.000 17.000 21.603 rect -%@EndRect -gsave -56.301 90.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -10.000 5.000 S -(f) -2.798 5.000 S -(1) 4.402 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 81.500 135.500 0.000 0.000 17.000 21.603 rect -%@EndRect -gsave -146.301 90.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -10.000 5.000 S -(f) -2.798 5.000 S -(2) 4.402 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 81.500 243.500 0.000 0.000 17.000 36.005 rect -%@EndRect -gsave -261.502 90.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -18.000 5.000 S -(l) -10.798 5.000 S -(i) -3.597 5.000 S -(s) 3.603 5.000 S -(t) 10.804 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hslab.eps b/HTKBook/HTKFigs/hslab.eps deleted file mode 100644 index 6d46025..0000000 --- a/HTKBook/HTKFigs/hslab.eps +++ /dev/null @@ -1,29774 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: HSLab.eps -%%Creator: XV Version 2.21 Rev: 4/29/92 - by John Bradley -%%BoundingBox: -45 145 658 648 -%%Pages: 1 -%%DocumentFonts: -%%EndComments -%%EndProlog - -%%Page: 1 1 - -% remember original state -/origstate save def - -% build a temporary dictionary -20 dict begin - -% define string to hold a scanline's worth of data -/pix 2109 string def - -% lower left corner --45 145 translate - -% size of image (on paper, in 1/72inch coords) -703 503 scale - -% define 'colorimage' if it isn't defined -% ('colortogray' and 'mergeprocs' come from xwd2ps -% via xgrab) -/colorimage where % do we know about 'colorimage'? - { pop } % yes: pop off the 'dict' returned - { % no: define one - /colortogray { % define an RGB->I function - /rgbdata exch store % call input 'rgbdata' - rgbdata length 3 idiv - /npixls exch store - /rgbindx 0 store - /grays npixls string store % str to hold the result - 0 1 npixls 1 sub { - grays exch - rgbdata rgbindx get 20 mul % Red - rgbdata rgbindx 1 add get 32 mul % Green - rgbdata rgbindx 2 add get 12 mul % Blue - add add 64 idiv % I = .5G + .31R + .18B - put - /rgbindx rgbindx 3 add store - } for - grays - } bind def - - % Utility procedure for colorimage operator. - % This procedure takes two procedures off the - % stack and merges them into a single procedure. - - /mergeprocs { % def - dup length - 3 -1 roll - dup - length - dup - 5 1 roll - 3 -1 roll - add - array cvx - dup - 3 -1 roll - 0 exch - putinterval - dup - 4 2 roll - putinterval - } bind def - - /colorimage { % def - pop pop % remove 'false 3' operands - {colortogray} mergeprocs - image - } bind def - } ifelse % end of 'false' case - - - -703 503 8 % dimensions of data -[703 0 0 -503 0 503] % mapping matrix -{currentfile pix readhexstring pop} -false 3 colorimage - -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000000000 -000000000000000000000000000000ffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000000000000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000000000ffffffffffffffffff000000ffffff -000000000000ffffffffffff000000ffffff000000000000ffffffffffff000000000000 -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffff000000ffffff000000000000ffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffff000000ffffff000000000000ffffffffffff000000 -000000ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000000000000000ffffffffffffffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000ffffff000000000000ffffffffffffffffffffffff000000000000000000 -ffffffffffffffffffffffff000000ffffff000000000000ffffffffffff000000000000 -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffff000000000000ffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffff -000000000000ffffffffffff000000000000ffffffffffffffffffffffff000000ffffff -000000000000ffffffffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffff000000000000000000ffffffffffffffffffffffff000000ffffff000000000000 -ffffffffffff000000000000ffffffffffffffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffff000000000000ffffffffffffffffffffffff000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000ffffff000000000000ffffffffffff -000000000000000000ffffffffffffffffff000000000000000000000000ffffffffffff -000000000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffff000000000000 -ffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffff000000000000ffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000000000ffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -ffffffffffff000000000000ffffffffffff000000ffffffffffffffffff000000000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffffffffff -000000000000ffffffffffff000000ffffffffffffffffff000000000000ffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000000000ffffffffffff000000ffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000 -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffff -ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffff000000 -ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000000000000000000000000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000000000000000000000000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000000000 -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffff000000ffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000000000000000 -000000000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffff000000ffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000000000ffffffffffffffffff000000ffffffffffff -000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000000000000000ffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000 -000000ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff -ffffff000000000000000000ffffff000000ffffffffffff000000000000000000000000 -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000000000 -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000000000000000ffffff000000ffffffffffff000000000000000000 -000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffffffffff000000000000000000ffffff000000ffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff -ffffff000000000000000000ffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000 -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000000000000000ffffff000000ffffffffffffffffff000000000000ffffffffffff -000000000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000ffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000000000000000ffffff000000000000ffffff -000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000ffffff000000000000ffffff -000000ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -000000000000000000000000000000000000000000000000ffffff000000000000ffffff -000000ffffff000000ffffffffffffffffff000000ffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffffffffffffffff000000000000ffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffff000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000ffffff000000000000000000 -000000ffffff000000ffffffffffffffffff000000ffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000ffffff000000000000ffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000ffffff000000000000000000 -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000ffffff000000000000ffffff000000ffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000ffffff000000ffffff000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000ffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000000000ffffff000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffff000000ffffff000000ffffffffffff000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff000000 -ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000ffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffff000000ffffff000000ffffffffffff000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffff000000ffffffffffff000000000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000ffffff -ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000ffffff000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000ffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -000000ffffff000000000000ffffff000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000000000ffffff000000000000ffffffffffffffffff -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000000000 -000000000000ffffff000000000000000000000000000000000000ffffff000000ffffff -ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000ffffffffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -000000ffffff000000000000ffffff000000000000ffffff000000ffffffffffff000000 -000000ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000ffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000ffffffffffffffffff -ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000000000ffffff000000ffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff000000ffffff -000000ffffff000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000ffffff000000ffffff -000000000000ffffff000000000000ffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff000000 -ffffff000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -000000000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000000000ffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000000000ffffff000000ffffffffffff000000 -000000ffffff000000ffffffffffff000000ffffffffffff000000000000ffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffff000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000ffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffff000000ffffffffffff000000000000000000ffffff000000000000 -000000ffffff000000000000ffffff000000ffffff000000ffffff000000000000ffffff -000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000ffffff000000ffffff -000000000000ffffff000000000000ffffff000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffff000000000000000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -000000000000000000000000ffffff000000ffffff000000000000ffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000000000ffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -ffffffffffff000000000000000000000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000ffffff000000000000ffffff000000000000ffffff000000000000ffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff -ffffffffffff000000000000ffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000ffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffff000000000000000000ffffffffffff000000ffffff000000 -000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000ffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000ffffff -000000000000000000000000000000ffffff000000000000ffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000000000000000000000 -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000ffffff000000000000000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffff -ffffff000000000000000000000000000000ffffff000000000000ffffffffffffffffff -000000000000000000ffffff000000ffffffffffff000000ffffff000000000000ffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffff000000000000ffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -ffffff000000000000000000000000000000000000000000ffffff000000000000000000 -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffff000000000000000000000000000000ffffff000000000000ffffffffffff -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -ffffffffffff000000000000ffffff000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000ffffff000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000 -000000ffffffffffff000000000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000ffffff000000 -000000ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff -000000ffffff000000ffffff000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000ffffffffffff000000000000ffffffffffffffffffffffffffffff000000ffffff -000000000000ffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 -000000ffffffffffff000000ffffffffffffffffffffffffffffff000000000000000000 -000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000000000000000 -ffffffffffff000000000000000000000000ffffffffffffffffff000000000000ffffff -ffffff000000000000000000000000000000ffffff000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -ffffff000000000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000ffffffffffffffffff -ffffffffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000000000 -000000000000000000000000000000ffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -000000ffffff000000ffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000000000000000ffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffff000000ffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffff000000ffffffffffff000000000000000000000000000000 -000000ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffff000000ffffff000000000000000000000000ffffff000000 -000000000000ffffffffffffffffff000000000000000000ffffff000000000000000000 -000000000000000000000000000000ffffffffffff000000000000000000ffffffffffff -ffffff000000000000ffffffffffff000000000000000000000000000000000000000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000ffffff000000000000000000000000ffffff000000ffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000000000000000000000000000000000000000ffffffffffffffffff000000ffffff -000000000000000000000000ffffffffffff000000000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffff000000ffffff000000000000000000000000000000000000 -000000ffffffffffff000000ffffffffffffffffff000000ffffff000000000000000000 -000000ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffff000000000000ffffff000000000000000000000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000ffffff000000000000000000 -000000ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff -ffffff000000000000000000000000000000ffffffffffff000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffff000000000000ffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000ffffff000000ffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000ffffff000000000000ffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff000000ffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -000000ffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffff000000000000000000ffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffff000000000000ffffff000000000000000000 -ffffffffffff000000000000000000ffffffffffffffffff000000000000ffffffffffff -ffffff000000000000000000000000000000000000ffffffffffffffffff000000ffffff -ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000ffffff000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000000000000000000000ffffff000000000000ffffff000000000000000000ffffff -ffffff000000000000000000000000000000000000000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffff000000000000000000ffffff000000 -000000ffffff000000000000000000ffffff000000000000000000000000000000000000 -000000000000ffffff000000000000000000ffffff000000ffffff000000000000000000 -000000ffffff000000000000000000000000000000000000000000ffffffffffff000000 -000000000000000000ffffffffffffffffff000000ffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffff000000 -000000000000000000ffffffffffff000000ffffffffffff000000000000ffffffffffff -ffffffffffff000000000000000000ffffffffffffffffff000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000ffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffff000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -ffffffffffffffffff000000000000000000000000000000000000000000000000000000 -ffffffffffff000000000000000000ffffff000000000000000000000000000000000000 -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffff000000ffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffff000000000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000 -ffffff000000000000ffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffff000000ffffffffffff -ffffff000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffff000000ffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000000000000000000000ffffff000000ffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffff000000ffffffffffff000000000000000000 -000000000000000000000000000000ffffffffffff000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000ffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffff000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffff000000ffffff000000000000ffffffffffff000000 -ffffffffffffffffffffffff000000000000ffffff000000000000000000ffffff000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffff000000000000000000000000000000ffffffffffff000000000000 -000000000000000000ffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffff000000000000ffffff000000000000ffffffffffffffffff -ffffffffffffffffff000000000000ffffff000000000000000000ffffffffffffffffff -ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000ffffff000000000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000000000000000000000000000000000000000000000000000 -ffffff000000000000ffffff000000ffffff000000ffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffff000000000000000000ffffffffffffffffff -ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000ffffff000000000000ffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffff000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000ffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000ffffff000000000000ffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffff000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000ffffffffffff000000000000000000000000ffffff000000000000 -000000ffffffffffffffffff000000000000ffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -000000000000000000ffffff000000000000000000ffffffffffffffffffffffff000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffffffffffffffff000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffff000000000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000000000 -000000000000000000ffffff000000000000000000000000000000000000000000000000 -ffffffffffffffffff000000000000ffffff000000ffffff000000000000000000000000 -ffffff000000000000ffffffffffffffffff000000ffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffff000000000000000000000000 -000000000000ffffff000000000000000000ffffff000000ffffff000000000000000000 -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000000000000000ffffff000000000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000ffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000ffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -ffffff000000ffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffff000000000000000000000000000000000000ffffff -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffffffffffffffff000000000000000000000000000000000000 -000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000ffffffffffff000000000000000000000000000000ffffff000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffff000000ffffff000000000000ffffff000000000000ffffff -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -ffffff000000ffffffffffff000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffff000000000000ffffffffffffffffff000000000000000000000000 -ffffff000000000000ffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffff000000000000000000000000 -000000000000ffffff000000000000ffffffffffff000000ffffffffffff000000000000 -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffffffffff000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffffffffffffffffffffff000000ffffff000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000ffffffffffff000000000000000000ffffff000000ffffff000000000000 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000ffffff000000000000ffffff000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000 -ffffff000000000000ffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffff000000000000000000000000 -000000000000ffffffffffff000000ffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000ffffff000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000ffffff000000000000000000000000000000ffffff000000 -ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000000000000000000000ffffffffffffffffff000000ffffff000000ffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000000000ffffff000000000000000000000000 -000000000000000000ffffff000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000ffffffffffff000000000000000000000000ffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000ffffff000000000000ffffffffffffffffff000000000000 -000000000000000000ffffff000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000 -000000000000000000ffffff000000000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000ffffffffffff000000000000000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000000000000000ffffff000000ffffff000000ffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000ffffff000000000000ffffffffffffffffff000000000000 -000000000000000000ffffff000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000000000000000ffffff000000ffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000 -000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000000000000000000000000000ffffff000000ffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000ffffff000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000000000000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000000000000000000000000000ffffff000000ffffffffffffffffff -ffffff000000000000000000ffffffffffff000000000000000000ffffffffffff000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000000000000000000000000000000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000ffffff000000000000ffffff000000ffffffffffffffffff -ffffff000000ffffff000000ffffffffffff000000000000000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffff000000ffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000000000ffffff000000ffffffffffffffffff -ffffff000000ffffff000000ffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffff000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000000000ffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000000000000000ffffff000000ffffffffffff000000ffffff000000000000 -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffff000000ffffff000000000000ffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000000000000000ffffff000000ffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffff000000ffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000 -000000000000000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888 -888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3888888 -888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888888888888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888 -888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888888888d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000 -000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888 -d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888888888888888d3d3d3d3d3d3d3d3d3888888888888888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888888888d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000 -000000d3d3d3000000000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000 -000000d3d3d3000000000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888888888888888 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888888888d3d3d3d3d3d3d3d3d3888888888888888888888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3000000d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888888888d3d3d3888888d3d3d3d3d3d3888888 -888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3000000d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3000000000000 -000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000000000000000000000000000d3d3d3d3d3d3000000000000000000000000000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3000000000000000000 -d3d3d3000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3000000 -000000000000d3d3d3000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3000000d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff - -showpage - -% stop using temporary dictionary -end - -% restore original state -origstate restore - -%%Trailer diff --git a/HTKBook/HTKFigs/htktools.eps b/HTKBook/HTKFigs/htktools.eps deleted file mode 100644 index 52403d9..0000000 --- a/HTKBook/HTKFigs/htktools.eps +++ /dev/null @@ -1,2284 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: htktools.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:59:43 p.m. -%%BoundingBox: 43.008 334.500 474.991 759.500 -%%QDBoundingBox: 43.008 32.500 474.991 457.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.500 124.508 0.000 0.000 27.000 99.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.000 134.008 0.000 0.000 16.000 80.869 rect -%@EndRect -gsave -174.442 119.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -39.491 4.000 S -(r) -30.939 4.000 S -(a) -26.277 4.000 S -(n) -20.063 4.000 S -(s) -13.063 4.000 S -(c) -7.615 4.000 S -(r) -1.401 4.000 S -(i) 3.260 4.000 S -(p) 7.149 4.000 S -(t) 14.149 4.000 S -(i) 18.039 4.000 S -(o) 21.929 4.000 S -(n) 28.929 4.000 S -(s) 35.929 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.500 241.508 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.000 257.008 0.000 0.000 16.000 40.427 rect -%@EndRect -gsave -277.222 119.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -19.491 4.000 S -(p) -11.705 4.000 S -(e) -4.705 4.000 S -(e) 1.508 4.000 S -(c) 7.722 4.000 S -(h) 13.936 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 169.508 69.500 106.508 69.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.500 43.508 0.000 0.000 54.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.000 50.008 0.000 0.000 31.000 54.889 rect -%@EndRect -gsave -77.453 70.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -26.491 -4.000 S -(L) -16.381 -4.000 S -(E) -7.829 -4.000 S -10.000 (_Times-Roman) fess -(D) 0.722 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -26.491 11.000 S -(L) -16.381 11.000 S -(S) -7.829 11.000 S -10.000 (_Times-Roman) fess -(T) -0.043 11.000 S -(A) 6.370 11.000 S -(T) 13.953 11.000 S -(S) 20.366 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -169.508 105.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 169.508 103.500 169.508 69.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 322.508 69.500 277.508 69.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.500 322.508 0.000 0.000 72.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 48.000 332.008 0.000 0.000 61.000 55.889 rect -%@EndRect -gsave -359.953 78.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 -19.000 S -(S) -17.381 -19.000 S -(L) -9.595 -19.000 S -10.000 (_Times-Roman) fess -(A) -1.043 -19.000 S -(B) 6.539 -19.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 -4.000 S -(C) -17.381 -4.000 S -10.000 (_Times-Roman) fess -(O) -8.043 -4.000 S -(P) -0.460 -4.000 S -(Y) 5.378 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 11.000 S -(L) -17.381 11.000 S -10.000 (_Times-Roman) fess -(I) -8.829 11.000 S -(S) -5.333 11.000 S -(T) 0.506 11.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 26.000 S -(Q) -17.381 26.000 S -10.000 (_Times-Roman) fess -(U) -7.270 26.000 S -(A) 0.311 26.000 S -(N) 7.894 26.000 S -(T) 15.477 26.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -277.508 105.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.508 103.500 277.508 69.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 152.008 0.000 0.000 31.000 153.417 rect -%@EndRect -gsave -228.716 182.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -76.491 -4.000 S -(C) -66.381 -4.000 S -10.000 (_Times-Roman) fess -(O) -57.043 -4.000 S -(M) -49.460 -4.000 S -(P) -40.124 -4.000 S -14.000 (_Times-Roman) fess -(V) -34.284 -4.000 S -(,) -24.174 -4.000 S -( ) -20.674 -4.000 S -(H) -17.174 -4.000 S -(I) -7.064 -4.000 S -10.000 (_Times-Roman) fess -(N) -2.402 -4.000 S -(I) 5.180 -4.000 S -(T) 8.677 -4.000 S -14.000 (_Times-Roman) fess -(,) 15.091 -4.000 S -( ) 18.591 -4.000 S -(H) 22.091 -4.000 S -(R) 32.201 -4.000 S -10.000 (_Times-Roman) fess -(E) 41.539 -4.000 S -(S) 47.953 -4.000 S -(T) 53.792 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -76.491 11.000 S -(E) -66.381 11.000 S -(R) -57.829 11.000 S -10.000 (_Times-Roman) fess -(E) -48.491 11.000 S -(S) -42.077 11.000 S -(T) -36.238 11.000 S -14.000 (_Times-Roman) fess -(,) -29.824 11.000 S -( ) -26.324 11.000 S -(H) -22.824 11.000 S -(S) -12.714 11.000 S -10.000 (_Times-Roman) fess -(M) -4.927 11.000 S -(O) 4.408 11.000 S -(O) 11.990 11.000 S -(T) 19.573 11.000 S -(H) 25.987 11.000 S -14.000 (_Times-Roman) fess -(,) 33.570 11.000 S -( ) 37.070 11.000 S -(H) 40.570 11.000 S -(H) 50.680 11.000 S -(E) 60.791 11.000 S -10.000 (_Times-Roman) fess -(D) 69.342 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 159.500 133.508 0.000 0.000 45.000 180.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -187.508 159.500 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 186.398 157.835 169.508 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -259.508 159.500 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.617 157.835 277.508 132.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 239.000 206.008 0.000 0.000 16.000 40.455 rect -%@EndRect -gsave -226.235 247.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.491 4.000 S -(M) -9.381 4.000 S -(M) 3.066 4.000 S -(s) 15.515 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 231.500 178.508 0.000 0.000 27.000 90.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 231.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 229.500 223.508 204.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 336.000 58.008 0.000 0.000 16.000 54.434 rect -%@EndRect -gsave -85.225 344.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -26.491 4.000 S -(e) -16.381 4.000 S -(t) -10.167 4.000 S -(w) -6.277 4.000 S -(o) 3.832 4.000 S -(r) 10.832 4.000 S -(k) 15.494 4.000 S -(s) 22.494 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 282.000 56.008 0.000 0.000 16.000 59.869 rect -%@EndRect -gsave -85.942 290.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.491 4.000 S -(i) -19.381 4.000 S -(c) -15.491 4.000 S -(t) -9.277 4.000 S -(i) -5.388 4.000 S -(o) -1.498 4.000 S -(n) 5.501 4.000 S -(a) 12.501 4.000 S -(r) 18.715 4.000 S -(y) 23.377 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 276.500 43.508 0.000 0.000 27.000 81.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 330.500 43.508 0.000 0.000 27.000 81.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 230.000 62.008 0.000 0.000 16.000 47.834 rect -%@EndRect -gsave -85.925 238.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.491 4.000 S -(D) -13.381 4.000 S -(M) -3.270 4.000 S -10.000 (_Times-Roman) fess -(A) 9.177 4.000 S -(N) 16.760 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 222.500 52.508 0.000 0.000 27.000 63.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -83.508 276.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 83.508 274.500 83.508 249.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -83.508 357.500 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 83.508 359.500 83.508 384.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 384.500 52.508 0.000 0.000 45.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 392.000 62.008 0.000 0.000 31.000 44.736 rect -%@EndRect -gsave -84.376 407.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.491 -4.000 S -(B) -11.381 -4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -2.043 -4.000 S -(I) 5.539 -4.000 S -(L) 9.035 -4.000 S -(D) 15.449 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.491 11.000 S -(P) -11.381 11.000 S -10.000 (_Times-Roman) fess -(A) -3.595 11.000 S -(R) 3.987 11.000 S -(S) 10.990 11.000 S -(E) 16.830 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 294.500 178.508 0.000 0.000 36.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 305.000 205.008 0.000 0.000 16.000 36.544 rect -%@EndRect -gsave -223.280 313.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.491 4.000 S -(V) -7.381 4.000 S -10.000 (_Times-Roman) fess -(I) 2.729 4.000 S -(T) 6.225 4.000 S -(E) 12.639 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -178.508 303.500 moveto -/Triangular 14.099 7.049 false 189.475 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.535 303.171 124.508 294.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -178.508 321.500 moveto -/Triangular 14.099 7.049 false 161.576 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.610 322.132 124.508 339.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 294.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 292.500 223.508 258.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 366.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 364.500 223.508 330.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 366.500 175.508 0.000 0.000 27.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 372.000 185.008 0.000 0.000 16.000 80.869 rect -%@EndRect -gsave -225.442 380.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -39.491 4.000 S -(r) -30.939 4.000 S -(a) -26.277 4.000 S -(n) -20.063 4.000 S -(s) -13.063 4.000 S -(c) -7.615 4.000 S -(r) -1.401 4.000 S -(i) 3.260 4.000 S -(p) 7.149 4.000 S -(t) 14.149 4.000 S -(i) 18.039 4.000 S -(o) 21.929 4.000 S -(n) 28.929 4.000 S -(s) 35.929 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 393.500 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 395.500 223.508 420.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 420.500 192.508 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 428.000 197.008 0.000 0.000 16.000 64.736 rect -%@EndRect -gsave -229.376 436.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -31.491 4.000 S -(R) -21.381 4.000 S -10.000 (_Times-Roman) fess -(E) -12.043 4.000 S -(S) -5.629 4.000 S -(U) 0.209 4.000 S -(L) 7.792 4.000 S -(T) 14.206 4.000 S -(S) 20.620 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 33.500 394.508 33.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 222.500 412.508 33.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 222.500 412.508 222.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 231.500 412.508 231.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 384.500 412.508 231.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 384.500 412.508 384.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 393.500 412.508 393.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 456.500 412.508 393.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 456.500 412.508 456.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.000 416.008 0.000 0.000 20.000 38.979 rect -%@EndRect -gsave -435.498 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -18.491 5.000 S -(r) -7.496 5.000 S -(a) -1.502 5.000 S -(i) 6.486 5.000 S -(n) 11.487 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 293.000 416.008 0.000 0.000 20.000 30.990 rect -%@EndRect -gsave -431.503 303.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -15.491 5.000 S -(e) -4.496 5.000 S -(s) 3.492 5.000 S -(t) 10.497 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 410.000 416.008 0.000 0.000 20.000 58.983 rect -%@EndRect -gsave -445.500 420.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -29.491 5.000 S -(n) -16.492 5.000 S -(a) -7.492 5.000 S -(l) 0.496 5.000 S -(y) 5.497 5.000 S -(s) 14.497 5.000 S -(e) 21.502 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hvalign.eps b/HTKBook/HTKFigs/hvalign.eps deleted file mode 100644 index 400c692..0000000 --- a/HTKBook/HTKFigs/hvalign.eps +++ /dev/null @@ -1,1473 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hvalign.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 4:21:48 p.m. -%%BoundingBox: 53.500 638.500 252.500 764.500 -%%QDBoundingBox: 53.500 27.500 252.500 153.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.500 61.500 0.000 0.000 31.000 80.869 rect -%@EndRect -gsave -101.934 67.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -33.187 -3.000 S -(o) -19.974 -3.000 S -(r) -12.974 -3.000 S -(d) -8.312 -3.000 S -( ) -1.312 -3.000 S -(L) 2.187 -3.000 S -(e) 10.739 -3.000 S -(v) 16.953 -3.000 S -(e) 23.953 -3.000 S -(l) 30.167 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -40.000 12.000 S -(r) -31.448 12.000 S -(a) -26.786 12.000 S -(n) -20.572 12.000 S -(s) -13.572 12.000 S -(c) -8.124 12.000 S -(r) -1.910 12.000 S -(i) 2.751 12.000 S -(p) 6.641 12.000 S -(t) 13.641 12.000 S -(i) 17.531 12.000 S -(o) 21.420 12.000 S -(n) 28.420 12.000 S -(s) 35.420 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 54.000 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 72.500 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -99.504 34.500 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -27.000 4.000 S -(o) -20.999 4.000 S -(r) -14.998 4.000 S -(d) -8.997 4.000 S -(s) -2.996 4.000 S -(.) 3.004 4.000 S -(m) 9.005 4.000 S -(l) 15.006 4.000 S -(f) 21.007 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.000 54.000 0.000 0.000 36.000 90.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 127.500 69.500 0.000 0.000 16.000 59.869 rect -%@EndRect -gsave -99.434 135.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.000 4.000 S -(i) -18.889 4.000 S -(c) -15.000 4.000 S -(t) -8.786 4.000 S -(i) -4.896 4.000 S -(o) -1.006 4.000 S -(n) 5.993 4.000 S -(a) 12.993 4.000 S -(r) 19.207 4.000 S -(y) 23.869 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.500 86.500 0.000 0.000 14.000 24.003 rect -%@EndRect -gsave -98.501 107.500 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -12.000 4.000 S -(i) -5.999 4.000 S -(c) 0.001 4.000 S -(t) 6.002 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 180.000 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.500 198.500 0.000 0.000 16.000 36.544 rect -%@EndRect -gsave -216.772 86.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.000 4.000 S -(V) -7.889 4.000 S -10.000 (_Times-Roman) fess -(I) 2.220 4.000 S -(T) 5.717 4.000 S -(E) 12.131 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 193.500 0.000 0.000 16.000 43.920 rect -%@EndRect -gsave -215.460 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -21.000 4.000 S -(i) -16.337 4.000 S -(l) -12.448 4.000 S -(e) -8.558 4.000 S -(.) -2.344 4.000 S -(m) 1.155 4.000 S -(f) 12.044 4.000 S -(c) 16.707 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 193.500 0.000 0.000 16.000 39.245 rect -%@EndRect -gsave -213.122 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -19.000 4.000 S -(i) -14.337 4.000 S -(l) -10.448 4.000 S -(e) -6.558 4.000 S -(.) -0.344 4.000 S -(r) 3.155 4.000 S -(e) 7.817 4.000 S -(c) 14.031 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 72.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 70.666 216.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 126.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 124.666 216.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 63.000 moveto -/Triangular 9.399 7.049 false 338.222 DrawArrowHead -} bind def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.237 62.504 189.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 81.000 moveto -/Triangular 9.399 7.049 false 194.050 DrawArrowHead -} bind def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.706 80.676 144.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 90.000 moveto -/Triangular 9.399 7.049 false 128.668 DrawArrowHead -} bind def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 179.167 91.041 144.000 135.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/isoprob.eps b/HTKBook/HTKFigs/isoprob.eps deleted file mode 100644 index 104c2bd..0000000 --- a/HTKBook/HTKFigs/isoprob.eps +++ /dev/null @@ -1,2555 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: isoprob.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:14:54 p.m. -%%BoundingBox: 3.857 460.500 469.500 788.500 -%%QDBoundingBox: 3.857 3.500 469.500 331.500 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.022 4.357 0.000 0.000 81.042 56.739 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.678 80.579] CP -[14.691 73.478 15.367 68.461 15.704 65.528] CP -[16.042 62.595 15.704 59.199 14.691 55.340] CP -[13.678 51.481 12.158 48.702 10.132 47.004] CP -[8.105 45.306 6.248 42.605 4.559 38.900] CP -[2.870 35.195 1.688 31.568 1.013 28.017] CP -[0.337 24.467 0.253 20.839 0.759 17.134] CP -[1.266 13.429 2.448 10.496 4.306 8.335] CP -[6.163 6.174 8.781 4.476 12.158 3.241] CP -[15.535 2.006 20.179 1.157 26.090 0.694] CP -[32.000 0.231 37.235 0.694 41.794 2.083] CP -[46.354 3.473 49.309 5.325 50.660 7.641] CP -[52.011 9.956 52.602 12.889 52.433 16.440] CP -[52.264 19.990 52.940 23.000 54.460 25.470] CP -[55.979 27.940 56.739 29.792 56.739 31.027] CP -[56.739 32.262 55.051 32.803 51.673 32.648] CP -[48.296 32.494 47.705 34.578 49.900 38.900] CP -[52.095 43.222 50.829 45.075 46.101 44.457] CP -[41.372 43.840 40.190 44.149 42.554 45.384] CP -[44.918 46.618 46.860 47.776 48.380 48.857] CP -[49.900 49.937 50.744 51.944 50.913 54.877] CP -[51.082 57.810 48.718 58.736 43.821 57.656] CP -[38.924 56.575 35.462 56.498 33.435 57.424] CP -[31.409 58.350 30.396 60.897 30.396 65.065] CP -[30.396 69.233 29.889 72.707 28.876 75.485] CP -[27.863 78.264 27.694 80.116 28.369 81.042] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 22.595 0.000 0.000 17.597 10.132 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[9.118 2.778] CP -[5.403 0.926 2.955 1.157 1.773 3.473] CP -[0.591 5.788 0.168 7.795 0.506 9.493] CP -[0.844 11.191 2.364 12.966 5.066 14.819] CP -[7.767 16.671 9.287 16.594 9.625 14.587] CP -[9.963 12.580 8.949 10.960 6.585 9.725] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 44.886 0.000 0.000 4.167 9.118 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.941 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.580 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 98.057 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 97.558 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.408 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.721 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 82.138 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.190 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 132.142 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 168.713 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 211.003 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 177.666 132.977 177.666 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 132.500 132.977 132.500 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 222.833 132.977 222.833 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 267.999 132.977 267.999 96.977 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 267.284 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 303.856 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 346.146 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 312.809 132.977 312.809 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 357.975 132.977 357.975 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 403.142 132.977 403.142 96.977 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 151.090 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 196.138 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 241.185 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 286.233 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 331.280 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 376.328 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -155.380 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 155.380 180.727 155.380 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -200.428 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 200.428 180.727 200.428 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -245.475 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 245.475 180.727 245.475 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -290.523 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 290.523 180.727 290.523 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -335.570 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 335.570 180.727 335.570 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -380.618 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 380.618 180.727 380.618 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -39.000 0.000 0.000 54.000 180.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -24.000 0.000 0.000 54.000 150.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 20.000 123.000 0.000 0.000 36.000 315.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.666 194.599 0.000 0.000 22.666 194.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.666 145.999 0.000 0.000 22.666 194.400 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 264.833 267.499 0.000 0.000 11.333 48.599 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 264.833 218.900 0.000 0.000 11.333 48.599 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -268.380 313.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 268.380 309.727 268.380 277.727 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.000 408.000 0.000 0.000 31.000 61.000 rect -%@EndRect -gsave -438.500 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -29.927 11.000 S -(a) -16.713 11.000 S -(v) -10.500 11.000 S -(e) -3.500 11.000 S -(f) 2.713 11.000 S -(o) 7.375 11.000 S -(r) 14.375 11.000 S -(m) 19.038 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 205.000 416.000 0.000 0.000 31.000 45.000 rect -%@EndRect -gsave -438.500 220.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -21.769 11.000 S -(e) -11.658 11.000 S -(c) -5.444 11.000 S -(t) 0.769 11.000 S -(o) 4.658 11.000 S -(r) 11.658 11.000 S -(s) 16.320 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 133.000 0.000 0.000 15.000 131.000 rect -%@EndRect -gsave -198.500 11.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -65.500 4.000 S -(o) -56.162 4.000 S -(n) -49.162 4.000 S -(c) -42.162 4.000 S -(e) -35.948 4.000 S -(p) -29.734 4.000 S -(t) -22.734 4.000 S -(:) -18.844 4.000 S -( ) -14.955 4.000 S -(a) -11.455 4.000 S -( ) -5.241 4.000 S -(s) -1.741 4.000 S -(i) 3.707 4.000 S -(n) 7.596 4.000 S -(g) 14.596 4.000 S -(l) 21.596 4.000 S -(e) 25.486 4.000 S -( ) 31.700 4.000 S -(w) 35.200 4.000 S -(o) 45.310 4.000 S -(r) 52.310 4.000 S -(d) 56.972 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 39.000 0.000 0.000 15.000 74.000 rect -%@EndRect -gsave -76.000 174.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -36.500 4.000 S -(a) -28.713 4.000 S -(r) -22.500 4.000 S -(a) -17.837 4.000 S -(m) -11.624 4.000 S -(e) -0.734 4.000 S -(t) 5.479 4.000 S -(e) 9.369 4.000 S -(r) 15.583 4.000 S -(i) 20.245 4.000 S -(s) 24.134 4.000 S -(e) 29.583 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.000 34.000 0.000 0.000 22.000 80.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 292.000 40.000 0.000 0.000 15.000 60.000 rect -%@EndRect -gsave -70.000 299.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -29.500 4.000 S -(e) -20.162 4.000 S -(c) -13.948 4.000 S -(o) -7.734 4.000 S -(g) -0.734 4.000 S -(n) 6.265 4.000 S -(i) 13.265 4.000 S -(s) 17.155 4.000 S -(e) 22.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 289.000 37.000 0.000 0.000 21.000 65.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 173.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.000 173.000 114.000 173.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.000 300.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.000 300.000 102.000 300.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.000 270.000 0.000 0.000 15.000 12.000 rect -%@EndRect -gsave -276.000 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.000 263.000 0.000 0.000 15.000 12.000 rect -%@EndRect -gsave -269.000 323.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.500 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/isoword.eps b/HTKBook/HTKFigs/isoword.eps deleted file mode 100644 index e95bab2..0000000 --- a/HTKBook/HTKFigs/isoword.eps +++ /dev/null @@ -1,2314 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: isoword.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/4/95 10:39:21 p.m. -%%BoundingBox: 8.500 461.000 216.500 767.000 -%%QDBoundingBox: 8.500 25.000 216.500 331.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 66.199 63.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.334 74.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.617 88.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 66.199 105.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.334 117.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.617 130.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 84.067 137.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.000 124.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.944 105.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 84.067 94.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.000 81.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.944 63.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.500 52.000 0.000 0.000 63.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.567 63.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.500 74.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.444 88.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.567 105.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.500 117.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.444 130.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 25.000 61.500 0.000 0.000 14.000 90.972 rect -%@EndRect -gsave -106.986 32.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -45.000 3.000 S -(n) -36.333 3.000 S -(l) -30.333 3.000 S -(a) -27.000 3.000 S -(b) -21.673 3.000 S -(e) -15.673 3.000 S -(l) -10.347 3.000 S -(l) -7.013 3.000 S -(e) -3.679 3.000 S -(d) 1.646 3.000 S -( ) 7.646 3.000 S -(T) 10.646 3.000 S -(o) 17.976 3.000 S -(k) 23.976 3.000 S -(e) 29.976 3.000 S -(n) 35.302 3.000 S -(s) 41.302 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.500 61.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.000 75.500 0.000 0.000 14.000 25.330 rect -%@EndRect -gsave -88.165 192.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -12.000 3.000 S -(I) -3.333 3.000 S -(n) 0.662 3.000 S -(i) 6.662 3.000 S -(t) 9.996 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.500 115.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.000 123.500 0.000 0.000 14.000 46.669 rect -%@EndRect -gsave -146.834 147.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.000 3.000 S -(C) -14.333 3.000 S -(o) -6.330 3.000 S -(m) -0.330 3.000 S -(p) 9.003 3.000 S -(V) 15.003 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 240.500 61.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 248.000 72.500 0.000 0.000 14.000 30.000 rect -%@EndRect -gsave -87.500 255.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(R) -6.333 3.000 S -(e) 1.669 3.000 S -(s) 6.996 3.000 S -(t) 11.666 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 177.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 87.999 175.500 88.000 105.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -142.000 132.500 moveto -/Triangular 14.099 7.049 false 251.583 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.367 130.602 133.000 105.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -115.000 177.500 moveto -/Triangular 14.099 7.049 false 326.332 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 116.664 176.390 142.000 159.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 240.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 87.999 238.500 88.000 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 303.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 87.999 301.500 88.000 267.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 304.000 51.500 0.000 0.000 27.000 72.693 rect -%@EndRect -gsave -87.846 317.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -30.807 -4.000 S -(h) -19.481 -4.000 S -(o) -13.481 -4.000 S -(l) -7.481 -4.000 S -(e) -4.147 -4.000 S -( ) 1.178 -4.000 S -(W) 4.178 -4.000 S -(o) 15.504 -4.000 S -(r) 21.504 -4.000 S -(d) 25.500 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.991 9.000 S -(M) -8.325 9.000 S -(M) 2.344 9.000 S -(s) 13.014 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -1.000 216.000 39.000 9.000 39.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/itemtree.eps b/HTKBook/HTKFigs/itemtree.eps deleted file mode 100644 index 3e9e875..0000000 --- a/HTKBook/HTKFigs/itemtree.eps +++ /dev/null @@ -1,1419 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: itemtree.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 11:27:23 a.m. -%%BoundingBox: 3.500 526.500 292.500 788.500 -%%QDBoundingBox: 3.500 3.500 292.500 265.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 76.000 0.000 0.000 15.000 64.000 rect -%@EndRect -gsave -108.000 11.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --32.000 6 31.207 6 U -(h) -31.500 4.000 S -(m) -24.500 4.000 S -(m) -13.610 4.000 S -(N) -2.720 4.000 S -(a) 7.389 4.000 S -(m) 13.603 4.000 S -(e) 24.493 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.000 4.000 0.000 0.000 15.000 36.000 rect -%@EndRect -gsave -22.000 83.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --18.000 6 18.000 6 U -(t) -17.500 4.000 S -(r) -13.610 4.000 S -(a) -8.948 4.000 S -(n) -2.734 4.000 S -(s) 4.265 4.000 S -(P) 9.713 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.000 139.000 0.000 0.000 15.000 36.000 rect -%@EndRect -gsave -157.000 83.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --18.000 6 17.979 6 U -(s) -17.500 4.000 S -(t) -12.051 4.000 S -(a) -8.162 4.000 S -(t) -1.948 4.000 S -(e) 1.941 4.000 S -([) 8.155 4.000 S -(]) 12.817 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.000 58.000 0.000 0.000 15.000 48.000 rect -%@EndRect -gsave -82.000 146.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -23.500 4.000 S -(t) -18.051 4.000 S -(r) -14.162 4.000 S -(e) -9.500 4.000 S -(a) -3.286 4.000 S -(m) 2.927 4.000 S -([) 13.817 4.000 S -(]) 18.479 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.000 166.000 0.000 0.000 15.000 20.000 rect -%@EndRect -gsave -176.000 146.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --10.000 6 9.662 6 U -(d) -9.500 4.000 S -(u) -2.500 4.000 S -(r) 4.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.000 247.000 0.000 0.000 15.000 45.000 rect -%@EndRect -gsave -269.500 146.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --23.000 6 21.551 6 U -(w) -22.500 4.000 S -(e) -12.389 4.000 S -(i) -6.175 4.000 S -(g) -2.286 4.000 S -(h) 4.713 4.000 S -(t) 11.713 4.000 S -(s) 15.603 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 193.000 85.000 0.000 0.000 15.000 33.000 rect -%@EndRect -gsave -101.500 200.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --17.000 6 15.103 6 U -(m) -16.500 4.000 S -(i) -5.610 4.000 S -(x) -1.720 4.000 S -([) 5.279 4.000 S -(]) 9.941 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 250.000 40.000 0.000 0.000 15.000 32.000 rect -%@EndRect -gsave -56.000 257.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --16.000 6 15.317 6 U -(m) -15.500 4.000 S -(e) -4.610 4.000 S -(a) 1.603 4.000 S -(n) 7.817 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 250.000 130.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -141.000 257.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --11.000 6 10.213 6 U -(c) -10.500 4.000 S -(o) -4.286 4.000 S -(v) 2.713 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 22.000 70.000 94.000 25.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 149.000 72.000 121.000 25.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 85.000 133.000 139.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 103.000 187.000 148.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 96.000 187.000 85.000 160.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 175.000 133.000 157.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 265.000 133.000 166.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 58.000 250.000 94.000 214.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 139.000 250.000 103.000 214.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/labegs.eps b/HTKBook/HTKFigs/labegs.eps deleted file mode 100644 index 2d6ad9f..0000000 --- a/HTKBook/HTKFigs/labegs.eps +++ /dev/null @@ -1,3306 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: labegs.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:2/13/95 8:30:13 p.m. -%%BoundingBox: 8.500 417.386 207.500 783.500 -%%QDBoundingBox: 8.500 8.500 207.500 374.613 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=T tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet - - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 38.496 11.312 0.000 0.000 23.100 17.092 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 10.813] CP -[0.396 3.604 0.817 0.245 1.263 0.737] CP -[1.709 1.228 2.105 3.276 2.452 6.881] CP -[2.799 10.485 3.369 14.089 4.161 17.694] CP -[4.954 21.298 5.548 22.445 5.945 21.134] CP -[6.341 19.823 6.688 17.612 6.985 14.499] CP -[7.283 11.386 7.704 8.847 8.249 6.881] CP -[8.794 4.915 9.314 5.242 9.809 7.864] CP -[10.305 10.485 10.652 12.615 10.850 14.253] CP -[11.048 15.891 11.593 15.236 12.485 12.287] CP -[13.377 9.338 14.293 8.355 15.234 9.338] CP -[16.176 10.321 16.795 10.649 17.092 10.321] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.038 28.554 0.000 0.000 20.643 19.768 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.812] CP -[0.590 12.338 1.081 11.547 1.475 10.440] CP -[1.868 9.332 2.175 8.344 2.397 7.474] CP -[2.618 6.604 2.839 5.378 3.061 3.796] CP -[3.282 2.214 3.565 1.186 3.909 0.711] CP -[4.253 0.237 4.597 0.672 4.942 2.016] CP -[5.286 3.361 5.556 4.785 5.753 6.287] CP -[5.950 7.790 6.110 8.739 6.232 9.135] CP -[6.355 9.530 6.491 10.479 6.638 11.982] CP -[6.786 13.485 7.068 15.146 7.486 16.965] CP -[7.904 18.784 8.224 19.852 8.445 20.168] CP -[8.667 20.484 8.962 20.524 9.330 20.287] CP -[9.699 20.049 9.945 19.654 10.068 19.100] CP -[10.191 18.547 10.400 17.321 10.695 15.422] CP -[10.990 13.524 11.273 12.022 11.543 10.914] CP -[11.814 9.807 12.023 8.779 12.170 7.830] CP -[12.318 6.881 12.490 6.920 12.687 7.948] CP -[12.883 8.976 13.092 10.163 13.314 11.507] CP -[13.535 12.852 13.805 13.801 14.125 14.355] CP -[14.445 14.908 14.678 14.394 14.826 12.812] CP -[14.973 11.231 15.109 9.886 15.231 8.779] CP -[15.354 7.671 15.576 7.671 15.895 8.779] CP -[16.215 9.886 16.498 11.151 16.744 12.575] CP -[16.989 13.999 17.235 14.790 17.481 14.948] CP -[17.727 15.106 17.936 14.592 18.108 13.406] CP -[18.280 12.219 18.551 11.428 18.920 11.033] CP -[19.288 10.637 19.571 11.072 19.768 12.338] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.688 48.593 0.000 0.000 17.129 21.214 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.343] CP -[1.247 3.114] CP -[2.495 17.129 ] CP -[3.743 0.000 ] CP -[4.991 17.129 ] CP -[6.239 1.557 ] CP -[7.487 17.129 ] CP -[8.735 0.000 ] CP -[9.983 17.129 ] CP -[11.231 0.000 ] CP -[12.479 17.129 ] CP -[13.727 1.557 ] CP -[14.975 17.129 ] CP -[16.223 4.671 ] CP -[17.471 15.572 ] CP -[18.719 6.228 ] CP -[19.967 12.457 ] CP -[21.214 9.343 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.901 69.692 0.000 0.000 6.787 18.645 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 1.850] CP -[0.305 1.233] CP -[0.305 0.616 ] CP -[0.611 0.616 ] CP -[0.611 -0.000 ] CP -[0.917 -0.000 ] CP -[0.917 0.616 ] CP -[1.222 0.616 ] CP -[1.528 1.233 ] CP -[1.834 1.233 ] CP -[1.834 1.850 ] CP -[2.139 1.850 ] CP -[2.445 1.850 ] CP -[2.445 2.468 ] CP -[2.751 2.468 ] CP -[2.751 3.085 ] CP -[2.751 3.702 ] CP -[3.056 4.936 ] CP -[3.362 4.936 ] CP -[3.668 4.936 ] CP -[3.973 4.936 ] CP -[4.279 4.936 ] CP -[4.585 4.936 ] CP -[4.890 4.319 ] CP -[4.890 3.702 ] CP -[5.196 3.702 ] CP -[5.196 3.085 ] CP -[5.502 3.085 ] CP -[5.502 2.468 ] CP -[5.807 2.468 ] CP -[6.113 2.468 ] CP -[7.030 2.468 ] CP -[7.336 3.085 ] CP -[7.336 3.702 ] CP -[7.641 3.702 ] CP -[7.641 4.319 ] CP -[7.947 4.319 ] CP -[7.947 4.936 ] CP -[8.253 4.936 ] CP -[8.558 4.936 ] CP -[8.558 5.553 ] CP -[8.864 5.553 ] CP -[8.864 4.936 ] CP -[8.864 4.319 ] CP -[9.170 3.702 ] CP -[9.170 4.319 ] CP -[9.475 4.319 ] CP -[9.475 4.936 ] CP -[9.781 4.936 ] CP -[9.781 5.553 ] CP -[10.087 5.553 ] CP -[10.087 6.170 ] CP -[10.392 6.170 ] CP -[10.698 6.170 ] CP -[11.004 5.553 ] CP -[11.004 4.936 ] CP -[11.004 4.319 ] CP -[11.309 4.319 ] CP -[11.615 4.319 ] CP -[11.615 3.702 ] CP -[11.921 3.702 ] CP -[12.226 3.702 ] CP -[12.532 3.702 ] CP -[12.838 3.702 ] CP -[13.143 3.702 ] CP -[13.143 4.319 ] CP -[13.449 4.936 ] CP -[13.449 5.553 ] CP -[13.755 5.553 ] CP -[13.755 6.170 ] CP -[14.060 6.170 ] CP -[14.060 6.787 ] CP -[14.366 6.787 ] CP -[14.672 6.787 ] CP -[14.977 6.787 ] CP -[14.977 6.170 ] CP -[14.977 5.553 ] CP -[14.977 4.936 ] CP -[14.977 4.319 ] CP -[14.977 3.702 ] CP -[14.977 3.085 ] CP -[14.977 2.468 ] CP -[14.977 1.850 ] CP -[15.283 1.850 ] CP -[15.589 1.850 ] CP -[16.200 1.233 ] CP -[16.506 1.233 ] CP -[16.506 1.850 ] CP -[16.506 2.468 ] CP -[16.811 2.468 ] CP -[17.117 2.468 ] CP -[17.117 3.085 ] CP -[17.117 3.702 ] CP -[17.423 3.702 ] CP -[17.728 3.702 ] CP -[17.728 4.319 ] CP -[18.034 4.319 ] CP -[18.340 4.319 ] CP -[18.645 4.319 ] CP -[18.645 3.702 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 41.636 88.717 0.000 0.000 20.120 26.701 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.001] CP -[1.012 3.000 1.696 1.235 2.053 3.706] CP -[2.411 6.177 2.768 8.383 3.125 10.324] CP -[3.482 12.266 3.795 11.825 4.063 9.001] CP -[4.331 6.177 4.524 4.412 4.643 3.706] CP -[4.762 3.000 5.030 4.235 5.447 7.412] CP -[5.864 10.589 6.161 13.501 6.340 16.149] CP -[6.519 18.796 6.801 18.973 7.188 16.678] CP -[7.575 14.384 8.066 11.295 8.662 7.412] CP -[9.257 3.529 9.704 1.853 10.001 2.382] CP -[10.299 2.912 10.567 4.235 10.805 6.353] CP -[11.043 8.471 11.371 9.618 11.787 9.795] CP -[12.204 9.971 12.591 9.618 12.948 8.736] CP -[13.305 7.853 13.648 7.853 13.975 8.736] CP -[14.303 9.618 14.615 9.883 14.913 9.530] CP -[15.211 9.177 15.672 9.442 16.297 10.324] CP -[16.922 11.207 17.443 11.560 17.860 11.383] CP -[18.277 11.207 18.664 10.766 19.021 10.060] CP -[19.378 9.354 19.720 8.559 20.048 7.677] CP -[20.375 6.794 20.703 6.883 21.030 7.942] CP -[21.358 9.001 21.730 9.795 22.146 10.324] CP -[22.563 10.854 22.980 10.677 23.397 9.795] CP -[23.813 8.912 24.185 8.736 24.513 9.265] CP -[24.840 9.795 25.570 10.060 26.701 10.060] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 37.599 115.597 0.000 0.000 29.887 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.990] CP -[0.410 4.663 0.846 0.317 1.308 0.953] CP -[1.770 1.589 2.180 4.239 2.540 8.902] CP -[2.899 13.566 3.489 18.229 4.310 22.892] CP -[5.131 27.556 5.747 29.039 6.158 27.344] CP -[6.568 25.648 6.927 22.786 7.235 18.759] CP -[7.543 14.731 7.979 11.446 8.544 8.902] CP -[9.108 6.359 9.647 6.783 10.160 10.174] CP -[10.673 13.566 11.033 16.321 11.238 18.441] CP -[11.443 20.561 12.008 19.713 12.931 15.897] CP -[13.855 12.082 14.804 10.810 15.779 12.082] CP -[16.754 13.354 17.396 13.778 17.704 13.354] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.451 133.486 0.000 0.000 24.951 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.679] CP -[0.410 3.893 0.846 0.265 1.308 0.796] CP -[1.770 1.327 2.180 3.539 2.540 7.432] CP -[2.899 11.325 3.489 15.218 4.310 19.111] CP -[5.131 23.005 5.747 24.243 6.157 22.828] CP -[6.568 21.412 6.927 19.023 7.235 15.661] CP -[7.543 12.298 7.979 9.555 8.544 7.432] CP -[9.108 5.308 9.647 5.662 10.160 8.494] CP -[10.673 11.325 11.033 13.626 11.238 15.395] CP -[11.443 17.165 12.008 16.457 12.931 13.272] CP -[13.855 10.086 14.804 9.025 15.779 10.086] CP -[16.754 11.148 17.396 11.502 17.704 11.148] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 40.844 151.986 0.000 0.000 20.930 16.481 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.797] CP -[0.382 3.265 0.788 0.222 1.218 0.667] CP -[1.648 1.113 2.030 2.968 2.364 6.234] CP -[2.699 9.500 3.248 12.766 4.012 16.032] CP -[4.777 19.297 5.350 20.337 5.732 19.149] CP -[6.114 17.961 6.449 15.957 6.735 13.137] CP -[7.022 10.316 7.428 8.016 7.954 6.234] CP -[8.479 4.453 8.981 4.750 9.458 7.125] CP -[9.936 9.500 10.271 11.430 10.462 12.914] CP -[10.653 14.399 11.178 13.805 12.038 11.133] CP -[12.898 8.461 13.782 7.570 14.690 8.461] CP -[15.597 9.352 16.194 9.648 16.481 9.352] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.270 168.729 0.000 0.000 15.412 31.178 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[31.178 7.472] CP -[30.877 6.177 30.890 4.324 30.405 4.152] CP -[30.193 4.076 30.119 4.776 29.984 5.337] CP -[29.614 6.882 29.761 8.691 29.282 9.844] CP -[28.989 10.551 28.718 10.624 28.369 10.319] CP -[28.067 10.053 27.964 9.384 27.737 8.658] CP -[27.343 7.395 27.291 6.041 26.824 5.100] CP -[26.607 4.664 26.428 4.324 26.192 4.626] CP -[25.495 5.516 25.681 8.410 25.069 9.844] CP -[24.648 10.829 24.310 11.297 23.805 11.030] CP -[22.671 10.431 22.177 8.248 21.347 5.575] CP -[21.077 4.706 21.121 3.508 20.785 2.966] CP -[20.290 2.167 19.873 2.387 19.381 3.203] CP -[18.927 3.954 18.783 5.031 18.538 6.523] CP -[18.093 9.236 18.564 12.223 17.836 14.114] CP -[17.336 15.412 16.804 15.157 16.221 14.351] CP -[15.701 13.632 15.571 12.321 15.238 10.793] CP -[15.107 10.192 15.096 9.712 14.957 9.133] CP -[14.749 8.268 14.490 8.198 14.325 7.235] CP -[14.058 5.682 14.364 4.162 14.044 2.728] CP -[13.689 1.144 13.288 -0.000 12.710 0.356] CP -[11.450 1.134 11.397 5.467 10.533 8.658] CP -[10.075 10.348 9.942 11.881 9.339 12.928] CP -[8.798 13.866 8.385 14.128 7.794 13.639] CP -[7.012 12.991 6.757 11.223 6.109 9.607] CP -[5.747 8.706 5.572 8.066 5.196 7.235] CP -[4.673 6.079 4.397 5.151 3.791 4.626] CP -[3.261 4.166 2.921 4.220 2.387 4.626] CP -[1.825 5.053 1.599 6.149 1.053 6.761] CP -[0.655 7.206 0.410 7.195 0.000 7.472] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 9.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.000 33.942 0.000 0.000 16.000 19.256 rect -%@EndRect -gsave -43.571 17.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -9.557 4.000 S -(c) -5.667 4.000 S -(e) 0.546 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 17.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 23.497 71.228 9.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.613 30.914 0.000 0.000 16.000 157.262 rect -%@EndRect -gsave -109.545 87.613 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -78.585 4.000 S -(a) -73.923 4.000 S -(\)) -67.709 4.000 S -( ) -63.047 4.000 S -(1) -59.547 4.000 S -(-) -52.547 4.000 S -(a) -47.885 4.000 S -(l) -41.671 4.000 S -(t) -37.781 4.000 S -(e) -33.892 4.000 S -(r) -27.678 4.000 S -(n) -23.016 4.000 S -(a) -16.016 4.000 S -(t) -9.802 4.000 S -(i) -5.912 4.000 S -(v) -2.023 4.000 S -(e) 4.976 4.000 S -(,) 11.190 4.000 S -( ) 14.690 4.000 S -(1) 18.190 4.000 S -(-) 25.190 4.000 S -(l) 29.852 4.000 S -(e) 33.742 4.000 S -(v) 39.956 4.000 S -(e) 46.956 4.000 S -(l) 53.170 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 165.496 11.312 0.000 0.000 23.100 17.092 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 10.813] CP -[0.396 3.604 0.817 0.245 1.263 0.737] CP -[1.709 1.228 2.105 3.276 2.452 6.881] CP -[2.799 10.485 3.369 14.089 4.161 17.694] CP -[4.954 21.298 5.548 22.445 5.945 21.134] CP -[6.341 19.823 6.688 17.612 6.985 14.499] CP -[7.283 11.386 7.704 8.847 8.249 6.881] CP -[8.794 4.915 9.314 5.242 9.809 7.864] CP -[10.305 10.485 10.652 12.615 10.850 14.253] CP -[11.048 15.891 11.593 15.236 12.485 12.287] CP -[13.377 9.338 14.293 8.355 15.234 9.338] CP -[16.176 10.321 16.795 10.649 17.092 10.321] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 163.038 28.554 0.000 0.000 20.643 19.768 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.812] CP -[0.590 12.338 1.081 11.547 1.475 10.440] CP -[1.868 9.332 2.175 8.344 2.397 7.474] CP -[2.618 6.604 2.839 5.378 3.061 3.796] CP -[3.282 2.214 3.565 1.186 3.909 0.711] CP -[4.253 0.237 4.597 0.672 4.942 2.016] CP -[5.286 3.361 5.556 4.785 5.753 6.287] CP -[5.950 7.790 6.110 8.739 6.232 9.135] CP -[6.355 9.530 6.491 10.479 6.638 11.982] CP -[6.786 13.485 7.068 15.146 7.486 16.965] CP -[7.904 18.784 8.224 19.852 8.445 20.168] CP -[8.667 20.484 8.962 20.524 9.330 20.287] CP -[9.699 20.049 9.945 19.654 10.068 19.100] CP -[10.191 18.547 10.400 17.321 10.695 15.422] CP -[10.990 13.524 11.273 12.022 11.543 10.914] CP -[11.814 9.807 12.023 8.779 12.170 7.830] CP -[12.318 6.881 12.490 6.920 12.687 7.948] CP -[12.883 8.976 13.092 10.163 13.314 11.507] CP -[13.535 12.852 13.805 13.801 14.125 14.355] CP -[14.445 14.908 14.678 14.394 14.826 12.812] CP -[14.973 11.231 15.109 9.886 15.231 8.779] CP -[15.354 7.671 15.576 7.671 15.895 8.779] CP -[16.215 9.886 16.498 11.151 16.744 12.575] CP -[16.989 13.999 17.235 14.790 17.481 14.948] CP -[17.727 15.106 17.936 14.592 18.108 13.406] CP -[18.280 12.219 18.551 11.428 18.920 11.033] CP -[19.288 10.637 19.571 11.072 19.768 12.338] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 166.688 48.593 0.000 0.000 17.129 21.214 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.343] CP -[1.247 3.114] CP -[2.495 17.129 ] CP -[3.743 0.000 ] CP -[4.991 17.129 ] CP -[6.239 1.557 ] CP -[7.487 17.129 ] CP -[8.735 0.000 ] CP -[9.983 17.129 ] CP -[11.231 0.000 ] CP -[12.479 17.129 ] CP -[13.727 1.557 ] CP -[14.975 17.129 ] CP -[16.223 4.671 ] CP -[17.471 15.572 ] CP -[18.719 6.228 ] CP -[19.967 12.457 ] CP -[21.214 9.343 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 173.901 69.692 0.000 0.000 6.787 18.645 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 1.850] CP -[0.305 1.233] CP -[0.305 0.616 ] CP -[0.611 0.616 ] CP -[0.611 -0.000 ] CP -[0.917 -0.000 ] CP -[0.917 0.616 ] CP -[1.222 0.616 ] CP -[1.528 1.233 ] CP -[1.834 1.233 ] CP -[1.834 1.850 ] CP -[2.139 1.850 ] CP -[2.445 1.850 ] CP -[2.445 2.468 ] CP -[2.751 2.468 ] CP -[2.751 3.085 ] CP -[2.751 3.702 ] CP -[3.056 4.936 ] CP -[3.362 4.936 ] CP -[3.668 4.936 ] CP -[3.973 4.936 ] CP -[4.279 4.936 ] CP -[4.585 4.936 ] CP -[4.890 4.319 ] CP -[4.890 3.702 ] CP -[5.196 3.702 ] CP -[5.196 3.085 ] CP -[5.502 3.085 ] CP -[5.502 2.468 ] CP -[5.807 2.468 ] CP -[6.113 2.468 ] CP -[7.030 2.468 ] CP -[7.336 3.085 ] CP -[7.336 3.702 ] CP -[7.641 3.702 ] CP -[7.641 4.319 ] CP -[7.947 4.319 ] CP -[7.947 4.936 ] CP -[8.253 4.936 ] CP -[8.558 4.936 ] CP -[8.558 5.553 ] CP -[8.864 5.553 ] CP -[8.864 4.936 ] CP -[8.864 4.319 ] CP -[9.170 3.702 ] CP -[9.170 4.319 ] CP -[9.475 4.319 ] CP -[9.475 4.936 ] CP -[9.781 4.936 ] CP -[9.781 5.553 ] CP -[10.087 5.553 ] CP -[10.087 6.170 ] CP -[10.392 6.170 ] CP -[10.698 6.170 ] CP -[11.004 5.553 ] CP -[11.004 4.936 ] CP -[11.004 4.319 ] CP -[11.309 4.319 ] CP -[11.615 4.319 ] CP -[11.615 3.702 ] CP -[11.921 3.702 ] CP -[12.226 3.702 ] CP -[12.532 3.702 ] CP -[12.838 3.702 ] CP -[13.143 3.702 ] CP -[13.143 4.319 ] CP -[13.449 4.936 ] CP -[13.449 5.553 ] CP -[13.755 5.553 ] CP -[13.755 6.170 ] CP -[14.060 6.170 ] CP -[14.060 6.787 ] CP -[14.366 6.787 ] CP -[14.672 6.787 ] CP -[14.977 6.787 ] CP -[14.977 6.170 ] CP -[14.977 5.553 ] CP -[14.977 4.936 ] CP -[14.977 4.319 ] CP -[14.977 3.702 ] CP -[14.977 3.085 ] CP -[14.977 2.468 ] CP -[14.977 1.850 ] CP -[15.283 1.850 ] CP -[15.589 1.850 ] CP -[16.200 1.233 ] CP -[16.506 1.233 ] CP -[16.506 1.850 ] CP -[16.506 2.468 ] CP -[16.811 2.468 ] CP -[17.117 2.468 ] CP -[17.117 3.085 ] CP -[17.117 3.702 ] CP -[17.423 3.702 ] CP -[17.728 3.702 ] CP -[17.728 4.319 ] CP -[18.034 4.319 ] CP -[18.340 4.319 ] CP -[18.645 4.319 ] CP -[18.645 3.702 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 168.636 88.717 0.000 0.000 20.120 26.701 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.001] CP -[1.012 3.000 1.696 1.235 2.053 3.706] CP -[2.411 6.177 2.768 8.383 3.125 10.324] CP -[3.482 12.266 3.795 11.825 4.063 9.001] CP -[4.331 6.177 4.524 4.412 4.643 3.706] CP -[4.762 3.000 5.030 4.235 5.447 7.412] CP -[5.864 10.589 6.161 13.501 6.340 16.149] CP -[6.519 18.796 6.801 18.973 7.188 16.678] CP -[7.575 14.384 8.066 11.295 8.662 7.412] CP -[9.257 3.529 9.704 1.853 10.001 2.382] CP -[10.299 2.912 10.567 4.235 10.805 6.353] CP -[11.043 8.471 11.371 9.618 11.787 9.795] CP -[12.204 9.971 12.591 9.618 12.948 8.736] CP -[13.305 7.853 13.648 7.853 13.975 8.736] CP -[14.303 9.618 14.615 9.883 14.913 9.530] CP -[15.211 9.177 15.672 9.442 16.297 10.324] CP -[16.922 11.207 17.443 11.560 17.860 11.383] CP -[18.277 11.207 18.664 10.766 19.021 10.060] CP -[19.378 9.354 19.720 8.559 20.048 7.677] CP -[20.375 6.794 20.703 6.883 21.030 7.942] CP -[21.358 9.001 21.730 9.795 22.146 10.324] CP -[22.563 10.854 22.980 10.677 23.397 9.795] CP -[23.813 8.912 24.185 8.736 24.513 9.265] CP -[24.840 9.795 25.570 10.060 26.701 10.060] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 164.599 115.597 0.000 0.000 29.887 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.990] CP -[0.410 4.663 0.846 0.317 1.308 0.953] CP -[1.770 1.589 2.180 4.239 2.540 8.902] CP -[2.899 13.566 3.489 18.229 4.310 22.892] CP -[5.131 27.556 5.747 29.039 6.158 27.344] CP -[6.568 25.648 6.927 22.786 7.235 18.759] CP -[7.543 14.731 7.979 11.446 8.544 8.902] CP -[9.108 6.359 9.647 6.783 10.160 10.174] CP -[10.673 13.566 11.033 16.321 11.238 18.441] CP -[11.443 20.561 12.008 19.713 12.931 15.897] CP -[13.855 12.082 14.804 10.810 15.779 12.082] CP -[16.754 13.354 17.396 13.778 17.704 13.354] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 166.451 133.486 0.000 0.000 24.951 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.679] CP -[0.410 3.893 0.846 0.265 1.308 0.796] CP -[1.770 1.327 2.180 3.539 2.540 7.432] CP -[2.899 11.325 3.489 15.218 4.310 19.111] CP -[5.131 23.005 5.747 24.243 6.157 22.828] CP -[6.568 21.412 6.927 19.023 7.235 15.661] CP -[7.543 12.298 7.979 9.555 8.544 7.432] CP -[9.108 5.308 9.647 5.662 10.160 8.494] CP -[10.673 11.325 11.033 13.626 11.238 15.395] CP -[11.443 17.165 12.008 16.457 12.931 13.272] CP -[13.855 10.086 14.804 9.025 15.779 10.086] CP -[16.754 11.148 17.396 11.502 17.704 11.148] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 167.844 151.986 0.000 0.000 20.930 16.481 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.797] CP -[0.382 3.265 0.788 0.222 1.218 0.667] CP -[1.648 1.113 2.030 2.968 2.364 6.234] CP -[2.699 9.500 3.248 12.766 4.012 16.032] CP -[4.777 19.297 5.350 20.337 5.732 19.149] CP -[6.114 17.961 6.449 15.957 6.735 13.137] CP -[7.022 10.316 7.428 8.016 7.954 6.234] CP -[8.479 4.453 8.981 4.750 9.458 7.125] CP -[9.936 9.500 10.271 11.430 10.462 12.914] CP -[10.653 14.399 11.178 13.805 12.038 11.133] CP -[12.898 8.461 13.782 7.570 14.690 8.461] CP -[15.597 9.352 16.194 9.648 16.481 9.352] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 169.270 168.729 0.000 0.000 15.412 31.178 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[31.178 7.472] CP -[30.877 6.177 30.890 4.324 30.405 4.152] CP -[30.193 4.076 30.119 4.776 29.984 5.337] CP -[29.614 6.882 29.761 8.691 29.282 9.844] CP -[28.989 10.551 28.718 10.624 28.369 10.319] CP -[28.067 10.053 27.964 9.384 27.737 8.658] CP -[27.343 7.395 27.291 6.041 26.824 5.100] CP -[26.607 4.664 26.428 4.324 26.192 4.626] CP -[25.495 5.516 25.681 8.410 25.069 9.844] CP -[24.648 10.829 24.310 11.297 23.805 11.030] CP -[22.671 10.431 22.177 8.248 21.347 5.575] CP -[21.077 4.706 21.121 3.508 20.785 2.966] CP -[20.290 2.167 19.873 2.387 19.381 3.203] CP -[18.927 3.954 18.783 5.031 18.538 6.523] CP -[18.093 9.236 18.564 12.223 17.836 14.114] CP -[17.336 15.412 16.804 15.157 16.221 14.351] CP -[15.701 13.632 15.571 12.321 15.238 10.793] CP -[15.107 10.192 15.096 9.712 14.957 9.133] CP -[14.749 8.268 14.490 8.198 14.325 7.235] CP -[14.058 5.682 14.364 4.162 14.044 2.728] CP -[13.689 1.144 13.288 -0.000 12.710 0.356] CP -[11.450 1.134 11.397 5.467 10.533 8.658] CP -[10.075 10.348 9.942 11.881 9.339 12.928] CP -[8.798 13.866 8.385 14.128 7.794 13.639] CP -[7.012 12.991 6.757 11.223 6.109 9.607] CP -[5.747 8.706 5.572 8.066 5.196 7.235] CP -[4.673 6.079 4.397 5.151 3.791 4.626] CP -[3.261 4.166 2.921 4.220 2.387 4.626] CP -[1.825 5.053 1.599 6.149 1.053 6.761] CP -[0.655 7.206 0.410 7.195 0.000 7.472] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 118.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 33.942 0.000 0.000 16.000 19.256 rect -%@EndRect -gsave -43.571 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -9.557 4.000 S -(c) -5.667 4.000 S -(e) 0.546 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 132.497 71.228 118.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 206.613 30.914 0.000 0.000 16.000 136.431 rect -%@EndRect -gsave -99.130 214.613 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -67.585 4.000 S -(b) -62.923 4.000 S -(\)) -55.923 4.000 S -( ) -51.261 4.000 S -(1) -47.761 4.000 S -(-) -40.761 4.000 S -(a) -36.099 4.000 S -(l) -29.885 4.000 S -(t) -25.995 4.000 S -(e) -22.106 4.000 S -(r) -15.892 4.000 S -(n) -11.230 4.000 S -(a) -4.230 4.000 S -(t) 1.983 4.000 S -(i) 5.873 4.000 S -(v) 9.762 4.000 S -(e) 16.762 4.000 S -(,) 22.976 4.000 S -( ) 26.476 4.000 S -(2) 29.976 4.000 S -(-) 36.976 4.000 S -(l) 41.638 4.000 S -(e) 45.528 4.000 S -(v) 51.742 4.000 S -(e) 58.742 4.000 S -(l) 64.956 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 19.942 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -26.549 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -6.557 4.000 S -(y) -0.343 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 146.497 71.228 132.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 55.942 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -58.666 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 82.942 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -86.442 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(k) -2.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 102.942 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -105.273 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(r) -1.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 131.942 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -137.387 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.557 4.000 S -(y) -0.667 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 176.942 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -182.387 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.557 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.228 146.497 98.228 132.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 113.228 146.497 113.228 132.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 167.228 146.497 167.228 132.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 44.228 146.497 44.228 132.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 317.496 11.312 0.000 0.000 23.100 17.092 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 10.813] CP -[0.396 3.604 0.817 0.245 1.263 0.737] CP -[1.709 1.228 2.105 3.276 2.452 6.881] CP -[2.799 10.485 3.369 14.089 4.161 17.694] CP -[4.954 21.298 5.548 22.445 5.945 21.134] CP -[6.341 19.823 6.688 17.612 6.985 14.499] CP -[7.283 11.386 7.704 8.847 8.249 6.881] CP -[8.794 4.915 9.314 5.242 9.809 7.864] CP -[10.305 10.485 10.652 12.615 10.850 14.253] CP -[11.048 15.891 11.593 15.236 12.485 12.287] CP -[13.377 9.338 14.293 8.355 15.234 9.338] CP -[16.176 10.321 16.795 10.649 17.092 10.321] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 315.038 28.554 0.000 0.000 20.643 19.768 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.812] CP -[0.590 12.338 1.081 11.547 1.475 10.440] CP -[1.868 9.332 2.175 8.344 2.397 7.474] CP -[2.618 6.604 2.839 5.378 3.061 3.796] CP -[3.282 2.214 3.565 1.186 3.909 0.711] CP -[4.253 0.237 4.597 0.672 4.942 2.016] CP -[5.286 3.361 5.556 4.785 5.753 6.287] CP -[5.950 7.790 6.110 8.739 6.232 9.135] CP -[6.355 9.530 6.491 10.479 6.638 11.982] CP -[6.786 13.485 7.068 15.146 7.486 16.965] CP -[7.904 18.784 8.224 19.852 8.445 20.168] CP -[8.667 20.484 8.962 20.524 9.330 20.287] CP -[9.699 20.049 9.945 19.654 10.068 19.100] CP -[10.191 18.547 10.400 17.321 10.695 15.422] CP -[10.990 13.524 11.273 12.022 11.543 10.914] CP -[11.814 9.807 12.023 8.779 12.170 7.830] CP -[12.318 6.881 12.490 6.920 12.687 7.948] CP -[12.883 8.976 13.092 10.163 13.314 11.507] CP -[13.535 12.852 13.805 13.801 14.125 14.355] CP -[14.445 14.908 14.678 14.394 14.826 12.812] CP -[14.973 11.231 15.109 9.886 15.231 8.779] CP -[15.354 7.671 15.576 7.671 15.895 8.779] CP -[16.215 9.886 16.498 11.151 16.744 12.575] CP -[16.989 13.999 17.235 14.790 17.481 14.948] CP -[17.727 15.106 17.936 14.592 18.108 13.406] CP -[18.280 12.219 18.551 11.428 18.920 11.033] CP -[19.288 10.637 19.571 11.072 19.768 12.338] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 318.688 48.593 0.000 0.000 17.129 21.214 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.343] CP -[1.247 3.114] CP -[2.495 17.129 ] CP -[3.743 0.000 ] CP -[4.991 17.129 ] CP -[6.239 1.557 ] CP -[7.487 17.129 ] CP -[8.735 0.000 ] CP -[9.983 17.129 ] CP -[11.231 0.000 ] CP -[12.479 17.129 ] CP -[13.727 1.557 ] CP -[14.975 17.129 ] CP -[16.223 4.671 ] CP -[17.471 15.572 ] CP -[18.719 6.228 ] CP -[19.967 12.457 ] CP -[21.214 9.343 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 325.901 69.692 0.000 0.000 6.787 18.645 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 1.850] CP -[0.305 1.233] CP -[0.305 0.616 ] CP -[0.611 0.616 ] CP -[0.611 -0.000 ] CP -[0.917 -0.000 ] CP -[0.917 0.616 ] CP -[1.222 0.616 ] CP -[1.528 1.233 ] CP -[1.834 1.233 ] CP -[1.834 1.850 ] CP -[2.139 1.850 ] CP -[2.445 1.850 ] CP -[2.445 2.468 ] CP -[2.751 2.468 ] CP -[2.751 3.085 ] CP -[2.751 3.702 ] CP -[3.056 4.936 ] CP -[3.362 4.936 ] CP -[3.668 4.936 ] CP -[3.973 4.936 ] CP -[4.279 4.936 ] CP -[4.585 4.936 ] CP -[4.890 4.319 ] CP -[4.890 3.702 ] CP -[5.196 3.702 ] CP -[5.196 3.085 ] CP -[5.502 3.085 ] CP -[5.502 2.468 ] CP -[5.807 2.468 ] CP -[6.113 2.468 ] CP -[7.030 2.468 ] CP -[7.336 3.085 ] CP -[7.336 3.702 ] CP -[7.641 3.702 ] CP -[7.641 4.319 ] CP -[7.947 4.319 ] CP -[7.947 4.936 ] CP -[8.253 4.936 ] CP -[8.558 4.936 ] CP -[8.558 5.553 ] CP -[8.864 5.553 ] CP -[8.864 4.936 ] CP -[8.864 4.319 ] CP -[9.170 3.702 ] CP -[9.170 4.319 ] CP -[9.475 4.319 ] CP -[9.475 4.936 ] CP -[9.781 4.936 ] CP -[9.781 5.553 ] CP -[10.087 5.553 ] CP -[10.087 6.170 ] CP -[10.392 6.170 ] CP -[10.698 6.170 ] CP -[11.004 5.553 ] CP -[11.004 4.936 ] CP -[11.004 4.319 ] CP -[11.309 4.319 ] CP -[11.615 4.319 ] CP -[11.615 3.702 ] CP -[11.921 3.702 ] CP -[12.226 3.702 ] CP -[12.532 3.702 ] CP -[12.838 3.702 ] CP -[13.143 3.702 ] CP -[13.143 4.319 ] CP -[13.449 4.936 ] CP -[13.449 5.553 ] CP -[13.755 5.553 ] CP -[13.755 6.170 ] CP -[14.060 6.170 ] CP -[14.060 6.787 ] CP -[14.366 6.787 ] CP -[14.672 6.787 ] CP -[14.977 6.787 ] CP -[14.977 6.170 ] CP -[14.977 5.553 ] CP -[14.977 4.936 ] CP -[14.977 4.319 ] CP -[14.977 3.702 ] CP -[14.977 3.085 ] CP -[14.977 2.468 ] CP -[14.977 1.850 ] CP -[15.283 1.850 ] CP -[15.589 1.850 ] CP -[16.200 1.233 ] CP -[16.506 1.233 ] CP -[16.506 1.850 ] CP -[16.506 2.468 ] CP -[16.811 2.468 ] CP -[17.117 2.468 ] CP -[17.117 3.085 ] CP -[17.117 3.702 ] CP -[17.423 3.702 ] CP -[17.728 3.702 ] CP -[17.728 4.319 ] CP -[18.034 4.319 ] CP -[18.340 4.319 ] CP -[18.645 4.319 ] CP -[18.645 3.702 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 320.636 88.717 0.000 0.000 20.120 26.701 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.001] CP -[1.012 3.000 1.696 1.235 2.053 3.706] CP -[2.411 6.177 2.768 8.383 3.125 10.324] CP -[3.482 12.266 3.795 11.825 4.063 9.001] CP -[4.331 6.177 4.524 4.412 4.643 3.706] CP -[4.762 3.000 5.030 4.235 5.447 7.412] CP -[5.864 10.589 6.161 13.501 6.340 16.149] CP -[6.519 18.796 6.801 18.973 7.188 16.678] CP -[7.575 14.384 8.066 11.295 8.662 7.412] CP -[9.257 3.529 9.704 1.853 10.001 2.382] CP -[10.299 2.912 10.567 4.235 10.805 6.353] CP -[11.043 8.471 11.371 9.618 11.787 9.795] CP -[12.204 9.971 12.591 9.618 12.948 8.736] CP -[13.305 7.853 13.648 7.853 13.975 8.736] CP -[14.303 9.618 14.615 9.883 14.913 9.530] CP -[15.211 9.177 15.672 9.442 16.297 10.324] CP -[16.922 11.207 17.443 11.560 17.860 11.383] CP -[18.277 11.207 18.664 10.766 19.021 10.060] CP -[19.378 9.354 19.720 8.559 20.048 7.677] CP -[20.375 6.794 20.703 6.883 21.030 7.942] CP -[21.358 9.001 21.730 9.795 22.146 10.324] CP -[22.563 10.854 22.980 10.677 23.397 9.795] CP -[23.813 8.912 24.185 8.736 24.513 9.265] CP -[24.840 9.795 25.570 10.060 26.701 10.060] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 316.599 115.597 0.000 0.000 29.887 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.990] CP -[0.410 4.663 0.846 0.317 1.308 0.953] CP -[1.770 1.589 2.180 4.239 2.540 8.902] CP -[2.899 13.566 3.489 18.229 4.310 22.892] CP -[5.131 27.556 5.747 29.039 6.158 27.344] CP -[6.568 25.648 6.927 22.786 7.235 18.759] CP -[7.543 14.731 7.979 11.446 8.544 8.902] CP -[9.108 6.359 9.647 6.783 10.160 10.174] CP -[10.673 13.566 11.033 16.321 11.238 18.441] CP -[11.443 20.561 12.008 19.713 12.931 15.897] CP -[13.855 12.082 14.804 10.810 15.779 12.082] CP -[16.754 13.354 17.396 13.778 17.704 13.354] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 318.451 133.486 0.000 0.000 24.951 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.679] CP -[0.410 3.893 0.846 0.265 1.308 0.796] CP -[1.770 1.327 2.180 3.539 2.540 7.432] CP -[2.899 11.325 3.489 15.218 4.310 19.111] CP -[5.131 23.005 5.747 24.243 6.157 22.828] CP -[6.568 21.412 6.927 19.023 7.235 15.661] CP -[7.543 12.298 7.979 9.555 8.544 7.432] CP -[9.108 5.308 9.647 5.662 10.160 8.494] CP -[10.673 11.325 11.033 13.626 11.238 15.395] CP -[11.443 17.165 12.008 16.457 12.931 13.272] CP -[13.855 10.086 14.804 9.025 15.779 10.086] CP -[16.754 11.148 17.396 11.502 17.704 11.148] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 319.844 151.986 0.000 0.000 20.930 16.481 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.797] CP -[0.382 3.265 0.788 0.222 1.218 0.667] CP -[1.648 1.113 2.030 2.968 2.364 6.234] CP -[2.699 9.500 3.248 12.766 4.012 16.032] CP -[4.777 19.297 5.350 20.337 5.732 19.149] CP -[6.114 17.961 6.449 15.957 6.735 13.137] CP -[7.022 10.316 7.428 8.016 7.954 6.234] CP -[8.479 4.453 8.981 4.750 9.458 7.125] CP -[9.936 9.500 10.271 11.430 10.462 12.914] CP -[10.653 14.399 11.178 13.805 12.038 11.133] CP -[12.898 8.461 13.782 7.570 14.690 8.461] CP -[15.597 9.352 16.194 9.648 16.481 9.352] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 321.270 168.729 0.000 0.000 15.412 31.178 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[31.178 7.472] CP -[30.877 6.177 30.890 4.324 30.405 4.152] CP -[30.193 4.076 30.119 4.776 29.984 5.337] CP -[29.614 6.882 29.761 8.691 29.282 9.844] CP -[28.989 10.551 28.718 10.624 28.369 10.319] CP -[28.067 10.053 27.964 9.384 27.737 8.658] CP -[27.343 7.395 27.291 6.041 26.824 5.100] CP -[26.607 4.664 26.428 4.324 26.192 4.626] CP -[25.495 5.516 25.681 8.410 25.069 9.844] CP -[24.648 10.829 24.310 11.297 23.805 11.030] CP -[22.671 10.431 22.177 8.248 21.347 5.575] CP -[21.077 4.706 21.121 3.508 20.785 2.966] CP -[20.290 2.167 19.873 2.387 19.381 3.203] CP -[18.927 3.954 18.783 5.031 18.538 6.523] CP -[18.093 9.236 18.564 12.223 17.836 14.114] CP -[17.336 15.412 16.804 15.157 16.221 14.351] CP -[15.701 13.632 15.571 12.321 15.238 10.793] CP -[15.107 10.192 15.096 9.712 14.957 9.133] CP -[14.749 8.268 14.490 8.198 14.325 7.235] CP -[14.058 5.682 14.364 4.162 14.044 2.728] CP -[13.689 1.144 13.288 -0.000 12.710 0.356] CP -[11.450 1.134 11.397 5.467 10.533 8.658] CP -[10.075 10.348 9.942 11.881 9.339 12.928] CP -[8.798 13.866 8.385 14.128 7.794 13.639] CP -[7.012 12.991 6.757 11.223 6.109 9.607] CP -[5.747 8.706 5.572 8.066 5.196 7.235] CP -[4.673 6.079 4.397 5.151 3.791 4.626] CP -[3.261 4.166 2.921 4.220 2.387 4.626] CP -[1.825 5.053 1.599 6.149 1.053 6.761] CP -[0.655 7.206 0.410 7.195 0.000 7.472] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 288.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 288.000 33.942 0.000 0.000 16.000 24.875 rect -%@EndRect -gsave -46.380 296.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -11.557 4.000 S -(y) -5.343 4.000 S -(e) 1.656 4.000 S -(s) 7.870 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 288.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 296.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 302.497 71.228 288.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 358.613 30.914 0.000 0.000 16.000 135.645 rect -%@EndRect -gsave -98.737 366.613 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -67.585 4.000 S -(c) -62.923 4.000 S -(\)) -56.709 4.000 S -( ) -52.047 4.000 S -(3) -48.547 4.000 S -(-) -41.547 4.000 S -(a) -36.885 4.000 S -(l) -30.671 4.000 S -(t) -26.781 4.000 S -(e) -22.892 4.000 S -(r) -16.678 4.000 S -(n) -12.016 4.000 S -(a) -5.016 4.000 S -(t) 1.197 4.000 S -(i) 5.087 4.000 S -(v) 8.976 4.000 S -(e) 15.976 4.000 S -(,) 22.190 4.000 S -( ) 25.690 4.000 S -(1) 29.190 4.000 S -(-) 36.190 4.000 S -(l) 40.852 4.000 S -(e) 44.742 4.000 S -(v) 50.956 4.000 S -(e) 57.956 4.000 S -(l) 64.170 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 270.000 33.942 0.000 0.000 16.000 19.256 rect -%@EndRect -gsave -43.571 278.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -9.557 4.000 S -(c) -5.667 4.000 S -(e) 0.546 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 270.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 278.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 284.497 71.228 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.000 33.942 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -36.273 260.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -1.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.000 104.142 0.000 0.000 16.000 39.641 rect -%@EndRect -gsave -123.963 260.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.357 4.000 S -(c) -13.908 4.000 S -(r) -7.695 4.000 S -(e) -3.032 4.000 S -(a) 3.180 4.000 S -(m) 9.394 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.228 266.497 53.228 252.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/markovgen.eps b/HTKBook/HTKFigs/markovgen.eps deleted file mode 100644 index 07ab8f6..0000000 --- a/HTKBook/HTKFigs/markovgen.eps +++ /dev/null @@ -1,3730 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: markovgen.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:17:14 p.m. -%%BoundingBox: 0.000 522.500 395.000 792.000 -%%QDBoundingBox: 0.000 0.000 395.000 269.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 82.000 49.500 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 107.199 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 103.500 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -170.100 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 168.100 95.800 136.800 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -107.199 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 107.385 61.408 108.125 53.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 173.800 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 170.099 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -236.700 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.700 95.800 203.400 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -173.800 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 173.986 61.408 174.725 53.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 240.400 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 236.699 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -303.300 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 301.300 95.800 270.000 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -240.400 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.586 61.408 241.325 53.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 307.000 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 303.300 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.900 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 367.900 95.800 336.599 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -307.000 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 307.186 61.408 307.925 53.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -103.500 96.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 101.500 96.000 76.500 96.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 82.000 367.500 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 78.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -83.500 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 86.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -93.500 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -7.000 4.000 S -(2) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 141.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -146.000 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 150.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -157.000 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(3) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 209.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -214.000 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 218.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -225.000 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 273.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -278.500 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 283.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -290.500 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -7.000 4.000 S -(5) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 340.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -345.000 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 349.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -356.000 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -6.500 4.000 S -(6) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 108.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -113.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 117.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -124.000 15.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(2) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 175.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -180.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.000 184.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -191.000 16.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(3) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 242.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -247.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.000 251.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -258.000 16.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -6.000 4.000 S -(4) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 309.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -314.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.000 318.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -325.000 16.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -6.000 4.000 S -(5) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 58.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -63.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 115.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -120.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 183.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -188.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 248.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -253.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 316.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -321.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 376.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -381.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -5.000 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 126.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 126.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.500 129.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.500 129.000 177.500 129.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 193.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 193.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.500 129.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.500 129.000 244.500 129.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 166.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -171.000 141.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 175.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -182.000 147.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 248.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -253.000 140.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.000 257.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -264.000 147.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(5) 0.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 76.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 130.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 184.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 238.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 292.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 346.500 0.000 0.000 27.000 9.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 74.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -79.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 83.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -87.000 262.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 128.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -133.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 137.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -141.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 182.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -187.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 191.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -195.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 236.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -241.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 245.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -249.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 290.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -295.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 299.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -303.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 344.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -349.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 353.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -357.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -80.500 206.000 moveto -/Triangular 14.099 7.049 false 289.176 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.156 204.110 113.500 111.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.500 205.000 moveto -/Triangular 14.099 7.049 false 263.345 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.267 203.013 123.500 111.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.500 206.000 moveto -/Triangular 14.099 7.049 false 271.250 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.542 204.000 191.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -242.500 205.000 moveto -/Triangular 14.099 7.049 false 272.455 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.584 203.001 246.500 111.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -296.500 207.000 moveto -/Triangular 14.099 7.049 false 250.177 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.821 205.118 261.500 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -350.500 206.000 moveto -/Triangular 14.099 7.049 false 252.318 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 349.891 204.094 320.500 112.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 90.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -95.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 99.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -103.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 110.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -115.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 119.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -123.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 105.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -109.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 124.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -128.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 345.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -350.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 354.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -358.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 365.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -370.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 375.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -379.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 360.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -364.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 381.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -385.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 134.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -139.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 143.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -147.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 154.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -159.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.500 164.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -168.000 188.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 149.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -153.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 170.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -174.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 191.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -196.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 200.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -204.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 211.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -216.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 221.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -225.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 206.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -210.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 227.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -231.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 244.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -249.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 253.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -257.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 264.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -269.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 274.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -278.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 259.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -263.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 279.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -283.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 289.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -294.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 298.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -302.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 309.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -314.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 319.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -323.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 304.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -308.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 325.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -329.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.000 18.500 0.000 0.000 46.000 49.000 rect -%@EndRect -gsave -43.000 46.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -21.662 -11.000 S -(a) -9.213 -11.000 S -(r) -3.000 -11.000 S -(k) 1.662 -11.000 S -(o) 8.662 -11.000 S -(v) 15.662 -11.000 S -( ) 22.662 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -17.775 4.000 S -(o) -5.327 4.000 S -(d) 1.672 4.000 S -(e) 8.672 4.000 S -(l) 14.886 4.000 S -( ) 18.775 4.000 S -grestore -restore -save -gsave -43.000 46.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -14.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -6.106 19.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 210.000 0.500 0.000 0.000 31.000 70.000 rect -%@EndRect -gsave -35.500 225.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -34.213 -4.000 S -(b) -24.103 -4.000 S -(s) -17.103 -4.000 S -(e) -11.655 -4.000 S -(r) -5.441 -4.000 S -(v) -0.779 -4.000 S -(a) 6.220 -4.000 S -(t) 12.434 -4.000 S -(i) 16.324 -4.000 S -(o) 20.213 -4.000 S -(n) 27.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -26.820 11.000 S -(e) -19.034 11.000 S -(q) -12.820 11.000 S -(u) -5.820 11.000 S -(e) 1.179 11.000 S -(n) 7.393 11.000 S -(c) 14.393 11.000 S -(e) 20.606 11.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/melfbank.eps b/HTKBook/HTKFigs/melfbank.eps deleted file mode 100644 index 28e6eca..0000000 --- a/HTKBook/HTKFigs/melfbank.eps +++ /dev/null @@ -1,2031 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: melfbank.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:2/5/95 3:37:33 p.m. -%%BoundingBox: 62.500 587.500 426.234 738.000 -%%QDBoundingBox: 62.500 54.000 426.234 204.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 81.500 0.000 0.000 14.000 9.333 rect -%@EndRect -gsave -86.166 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 90.500 0.000 0.000 11.000 4.500 rect -%@EndRect -gsave -92.750 183.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 305.500 0.000 0.000 14.000 9.333 rect -%@EndRect -gsave -310.166 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 315.000 0.000 0.000 11.000 5.005 rect -%@EndRect -gsave -317.502 183.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -2.500 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 54.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 56.000 72.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 144.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 367.000 144.000 72.000 144.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 138.000 378.000 0.000 0.000 14.000 19.318 rect -%@EndRect -gsave -387.659 145.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -9.500 3.000 S -(r) -5.503 3.000 S -(e) -1.507 3.000 S -(q) 3.818 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 72.000 72.000 72.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 63.000 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -66.000 75.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 90.500 72.000 72.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 108.500 144.000 90.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 108.500 72.000 90.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 126.500 144.000 108.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 126.000 72.000 108.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 144.000 144.000 126.000 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 144.500 72.000 126.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 162.500 144.000 144.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 171.500 72.000 144.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 198.500 144.000 171.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 203.000 72.000 171.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 234.500 144.000 203.000 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 234.500 72.000 198.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 270.500 144.000 234.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 270.000 72.000 234.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 306.000 144.000 270.000 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 310.500 72.000 270.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 351.000 144.000 310.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.999 169.000 90.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 107.999 169.000 108.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 169.000 126.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.999 169.000 144.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -171.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.999 169.000 171.000 117.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 196.000 0.000 0.000 14.000 9.333 rect -%@EndRect -gsave -200.666 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 206.000 0.000 0.000 11.000 3.019 rect -%@EndRect -gsave -207.509 183.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -0.981 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -202.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 201.999 169.000 202.000 117.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.999 169.000 234.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -270.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 269.999 169.000 270.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -311.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 310.999 169.000 311.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 72.000 0.000 0.000 18.000 252.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 189.000 99.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 189.000 189.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 189.000 216.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 189.000 297.000 171.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 135.000 0.000 0.000 14.000 9.000 rect -%@EndRect -gsave -139.500 180.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -4.500 3.000 S -(.) -1.500 3.000 S -(.) 1.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 252.000 0.000 0.000 14.000 9.000 rect -%@EndRect -gsave -256.500 180.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -4.500 3.000 S -(.) -1.500 3.000 S -(.) 1.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.000 333.000 0.000 0.000 31.000 93.234 rect -%@EndRect -gsave -379.617 179.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -46.500 -4.000 S -(n) -37.948 -4.000 S -(e) -30.948 -4.000 S -(r) -24.734 -4.000 S -(g) -20.072 -4.000 S -(y) -13.072 -4.000 S -( ) -6.072 -4.000 S -(i) -2.572 -4.000 S -(n) 1.317 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -46.500 11.000 S -(a) -37.948 11.000 S -(c) -31.734 11.000 S -(h) -25.520 11.000 S -( ) -18.520 11.000 S -(B) -15.020 11.000 S -(a) -5.682 11.000 S -(n) 0.531 11.000 S -(d) 7.531 11.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.500 184.500 0.000 0.000 13.000 37.806 rect -%@EndRect -gsave -203.403 198.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -18.000 4.000 S -(E) -12.599 4.000 S -(L) -7.198 4.000 S -(S) -1.797 4.000 S -(P) 3.603 4.000 S -(E) 9.004 4.000 S -(C) 14.405 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/memheap.eps b/HTKBook/HTKFigs/memheap.eps deleted file mode 100644 index 6e766f1..0000000 --- a/HTKBook/HTKFigs/memheap.eps +++ /dev/null @@ -1,4904 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: memheap.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/22/96 6:44:00 p.m. -%%BoundingBox: -1 476 487 793 -%%QDBoundingBox: -1.000 -0.500 486.500 315.500 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 35.000 54.000 0.000 0.000 12.000 51.000 rect -%@EndRect -gsave -79.500 41.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(M) -25.500 4.000 S -(e) -14.830 4.000 S -(m) -9.503 4.000 S -(H) -0.169 4.000 S -(e) 8.496 4.000 S -(a) 13.822 4.000 S -(p) 19.148 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 63.000 0.000 0.000 12.000 72.000 rect -%@EndRect -gsave -99.000 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -35.500 4.000 S -(a) -29.500 4.000 S -(m) -24.173 4.000 S -(e) -14.839 4.000 S -(=) -9.513 4.000 S -(Ó) -2.746 4.000 S -(a) 2.580 4.000 S -(h) 7.906 4.000 S -(e) 13.906 4.000 S -(a) 19.232 4.000 S -(p) 24.558 4.000 S -(Ó) 30.558 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {} def -/PC {} def -1.000 0 54.000 54.000 0.000 0.000 198.000 81.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 72.000 54.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 90.000 54.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 108.000 54.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 126.000 54.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 144.000 54.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 162.000 54.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 180.000 54.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 198.000 54.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 216.000 54.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 234.000 54.000 234.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 63.000 0.000 0.000 12.000 70.000 rect -%@EndRect -gsave -98.000 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(t) -34.500 4.000 S -(y) -31.166 4.000 S -(p) -25.166 4.000 S -(e) -19.166 4.000 S -(=) -13.839 4.000 S -(M) -7.072 4.000 S -(H) 3.597 4.000 S -(E) 12.263 4.000 S -(A) 19.593 4.000 S -(P) 28.259 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 111.000 63.000 0.000 0.000 12.000 57.000 rect -%@EndRect -gsave -91.500 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(g) -28.500 4.000 S -(r) -22.500 4.000 S -(o) -18.503 4.000 S -(w) -12.503 4.000 S -(f) -3.837 4.000 S -( ) 0.158 4.000 S -(=) 3.158 4.000 S -( ) 9.925 4.000 S -(0) 12.925 4.000 S -(.) 18.925 4.000 S -(1) 21.925 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 93.000 63.000 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -85.000 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(e) -21.500 4.000 S -(l) -16.173 4.000 S -(e) -12.839 4.000 S -(m) -7.513 4.000 S -(S) 1.820 4.000 S -(i) 8.494 4.000 S -(z) 11.828 4.000 S -(e) 17.154 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 129.000 63.000 0.000 0.000 12.000 63.000 rect -%@EndRect -gsave -94.500 135.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(m) -31.500 4.000 S -(i) -22.166 4.000 S -(n) -18.832 4.000 S -(E) -12.832 4.000 S -(l) -5.501 4.000 S -(e) -2.167 4.000 S -(m) 3.158 4.000 S -(=) 12.492 4.000 S -(1) 19.259 4.000 S -(0) 25.259 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 147.000 63.000 0.000 0.000 12.000 65.000 rect -%@EndRect -gsave -95.500 153.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(m) -32.500 4.000 S -(a) -23.166 4.000 S -(x) -17.839 4.000 S -(E) -11.839 4.000 S -(l) -4.509 4.000 S -(e) -1.175 4.000 S -(m) 4.150 4.000 S -(=) 13.484 4.000 S -(2) 20.251 4.000 S -(0) 26.251 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 165.000 63.000 0.000 0.000 12.000 60.000 rect -%@EndRect -gsave -93.000 171.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(c) -29.500 4.000 S -(u) -24.173 4.000 S -(r) -18.173 4.000 S -(E) -14.177 4.000 S -(l) -6.847 4.000 S -(e) -3.513 4.000 S -(m) 1.812 4.000 S -(=) 11.146 4.000 S -(1) 17.914 4.000 S -(1) 23.914 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 183.000 63.000 0.000 0.000 12.000 57.000 rect -%@EndRect -gsave -91.500 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(t) -28.500 4.000 S -(o) -25.166 4.000 S -(t) -19.166 4.000 S -(U) -15.832 4.000 S -(s) -7.166 4.000 S -(e) -2.496 4.000 S -(d) 2.830 4.000 S -(=) 8.830 4.000 S -(1) 15.597 4.000 S -(2) 21.597 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 201.000 63.000 0.000 0.000 12.000 59.000 rect -%@EndRect -gsave -92.500 207.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(t) -29.500 4.000 S -(o) -26.166 4.000 S -(t) -20.166 4.000 S -(A) -16.832 4.000 S -(l) -8.166 4.000 S -(l) -4.832 4.000 S -(o) -1.498 4.000 S -(c) 4.501 4.000 S -(=) 9.828 4.000 S -(2) 16.595 4.000 S -(1) 22.595 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 219.000 63.000 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -74.500 225.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -11.500 4.000 S -(e) -5.500 4.000 S -(a) -0.173 4.000 S -(p) 5.152 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 237.000 63.000 0.000 0.000 12.000 50.000 rect -%@EndRect -gsave -88.000 243.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(p) -24.500 4.000 S -(r) -18.500 4.000 S -(o) -14.503 4.000 S -(t) -8.503 4.000 S -(e) -5.169 4.000 S -(c) 0.156 4.000 S -(t) 5.482 4.000 S -(S) 8.816 4.000 S -(t) 15.490 4.000 S -(k) 18.824 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 0.500 0.500 0.000 0.000 -1.000 -1.000 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 0.500 0.500 0.000 0.000 -1.000 -1.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 270.000 54.000 0.000 0.000 36.000 95.000 rect -%@EndRect -gsave -101.500 288.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(D) -47.500 -8.000 S -(e) -38.833 -8.000 S -(t) -33.507 -8.000 S -(e) -30.173 -8.000 S -(r) -24.847 -8.000 S -(m) -20.851 -8.000 S -(i) -11.517 -8.000 S -(n) -8.183 -8.000 S -(e) -2.183 -8.000 S -(s) 3.142 -8.000 S -( ) 7.812 -8.000 S -(n) 10.812 -8.000 S -(u) 16.812 -8.000 S -(m) 22.812 -8.000 S -(b) 32.146 -8.000 S -(e) 38.146 -8.000 S -(r) 43.472 -8.000 S -0.000 0.000 0.000 setrgbcolor -(o) -47.500 4.000 S -(f) -41.500 4.000 S -( ) -37.503 4.000 S -(e) -34.503 4.000 S -(l) -29.177 4.000 S -(e) -25.843 4.000 S -(m) -20.517 4.000 S -(e) -11.183 4.000 S -(n) -5.857 4.000 S -(t) 0.142 4.000 S -(s) 3.476 4.000 S -( ) 8.146 4.000 S -(i) 11.146 4.000 S -(n) 14.480 4.000 S -( ) 20.480 4.000 S -(n) 23.480 4.000 S -(e) 29.480 4.000 S -(x) 34.806 4.000 S -(t) 40.806 4.000 S -0.000 0.000 0.000 setrgbcolor -(b) -47.500 16.000 S -(l) -41.500 16.000 S -(o) -38.166 16.000 S -(c) -32.166 16.000 S -(k) -26.839 16.000 S -( ) -20.839 16.000 S -(a) -17.839 16.000 S -(l) -12.513 16.000 S -(l) -9.179 16.000 S -(o) -5.845 16.000 S -(c) 0.154 16.000 S -(a) 5.480 16.000 S -(t) 10.806 16.000 S -(e) 14.140 16.000 S -(d) 19.466 16.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 151.187 40.000 0.000 0.000 28.812 18.000 rect -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 151.187 40.000 0.000 0.000 28.812 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.000 165.593 40.000 151.195 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 144.000 22.000 0.000 0.000 14.390 18.000 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 144.000 22.000 0.000 0.000 14.390 18.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 108.000 40.000 0.000 0.000 28.789 18.000 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 108.000 40.000 0.000 0.000 28.789 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.000 122.394 40.000 136.796 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 129.593 22.000 0.000 0.000 14.406 18.000 rect -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 129.593 22.000 0.000 0.000 14.406 18.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -27.000 144.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 9.000 144.000 25.750 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 9.000 288.000 9.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 36.000 288.000 9.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 180.000 0.000 0.000 108.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 90.000 180.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 108.000 180.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 126.000 180.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 144.000 180.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 162.000 180.000 162.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 93.000 189.000 0.000 0.000 12.000 41.000 rect -%@EndRect -gsave -209.500 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(f) -20.500 4.000 S -(i) -16.503 4.000 S -(r) -13.169 4.000 S -(s) -9.173 4.000 S -(t) -4.503 4.000 S -(F) -1.169 4.000 S -(r) 5.503 4.000 S -(e) 9.500 4.000 S -(e) 14.826 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 111.000 189.000 0.000 0.000 12.000 47.000 rect -%@EndRect -gsave -212.500 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -23.500 4.000 S -(u) -17.500 4.000 S -(m) -11.500 4.000 S -(E) -2.166 4.000 S -(l) 5.164 4.000 S -(e) 8.498 4.000 S -(m) 13.824 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 129.000 189.000 0.000 0.000 12.000 22.000 rect -%@EndRect -gsave -200.000 135.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(u) -10.500 4.000 S -(s) -4.500 4.000 S -(e) 0.169 4.000 S -(d) 5.496 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 147.000 189.000 0.000 0.000 12.000 20.000 rect -%@EndRect -gsave -199.000 153.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(d) -9.500 4.000 S -(a) -3.500 4.000 S -(t) 1.826 4.000 S -(a) 5.160 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 165.000 189.000 0.000 0.000 12.000 21.000 rect -%@EndRect -gsave -199.500 171.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -10.500 4.000 S -(e) -4.500 4.000 S -(x) 0.826 4.000 S -(t) 6.826 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 225.000 108.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 225.000 153.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 81.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.750 81.000 153.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 207.000 180.000 0.000 0.000 108.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 225.000 180.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 243.000 180.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 261.000 180.000 261.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 279.000 180.000 279.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 297.000 180.000 297.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 189.000 0.000 0.000 12.000 56.000 rect -%@EndRect -gsave -217.000 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -27.500 4.000 S -(u) -21.500 4.000 S -(m) -15.500 4.000 S -(F) -6.166 4.000 S -(r) 0.507 4.000 S -(e) 4.503 4.000 S -(e) 9.830 4.000 S -(=) 15.156 4.000 S -(7) 21.923 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 228.000 189.000 0.000 0.000 12.000 41.000 rect -%@EndRect -gsave -209.500 234.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(f) -20.500 4.000 S -(i) -16.503 4.000 S -(r) -13.169 4.000 S -(s) -9.173 4.000 S -(t) -4.503 4.000 S -(F) -1.169 4.000 S -(r) 5.503 4.000 S -(e) 9.500 4.000 S -(e) 14.826 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 246.000 189.000 0.000 0.000 12.000 47.000 rect -%@EndRect -gsave -212.500 252.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -23.500 4.000 S -(u) -17.500 4.000 S -(m) -11.500 4.000 S -(E) -2.166 4.000 S -(l) 5.164 4.000 S -(e) 8.498 4.000 S -(m) 13.824 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 264.000 189.000 0.000 0.000 12.000 22.000 rect -%@EndRect -gsave -200.000 270.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(u) -10.500 4.000 S -(s) -4.500 4.000 S -(e) 0.169 4.000 S -(d) 5.496 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 282.000 189.000 0.000 0.000 12.000 20.000 rect -%@EndRect -gsave -199.000 288.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(d) -9.500 4.000 S -(a) -3.500 4.000 S -(t) 1.826 4.000 S -(a) 5.160 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 300.000 189.000 0.000 0.000 12.000 21.000 rect -%@EndRect -gsave -199.500 306.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -10.500 4.000 S -(e) -4.500 4.000 S -(x) 0.826 4.000 S -(t) 6.826 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 207.000 moveto -/Triangular 8.812 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 224.999 205.750 225.000 171.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 45.000 288.000 0.000 0.000 12.000 193.000 rect -%@EndRect -gsave -384.500 51.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(E) -96.500 4.000 S -(l) -89.169 4.000 S -(e) -85.835 4.000 S -(m) -80.509 4.000 S -( ) -71.175 4.000 S -(a) -68.175 4.000 S -(l) -62.849 4.000 S -(l) -59.515 4.000 S -(o) -56.181 4.000 S -(c) -50.181 4.000 S -(a) -44.855 4.000 S -(t) -39.529 4.000 S -(i) -36.195 4.000 S -(o) -32.861 4.000 S -(n) -26.861 4.000 S -( ) -20.861 4.000 S -(b) -17.861 4.000 S -(i) -11.861 4.000 S -(t) -8.527 4.000 S -( ) -5.193 4.000 S -(m) -2.193 4.000 S -(a) 7.140 4.000 S -(p) 12.466 4.000 S -( ) 18.466 4.000 S -(\() 21.466 4.000 S -(M) 25.462 4.000 S -(H) 36.132 4.000 S -(E) 44.798 4.000 S -(A) 52.128 4.000 S -(P) 60.794 4.000 S -( ) 67.468 4.000 S -(o) 70.468 4.000 S -(n) 76.468 4.000 S -(l) 82.468 4.000 S -(y) 85.802 4.000 S -(\)) 91.802 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 288.000 0.000 0.000 27.000 180.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 234.000 243.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 270.000 moveto -/Triangular 8.812 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 368.999 268.750 369.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 288.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 306.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 324.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 342.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 378.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 396.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 414.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 297.000 450.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 468.000 297.000 468.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 198.000 288.000 0.000 0.000 18.000 180.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.000 216.000 306.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.000 216.000 324.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 216.000 342.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 216.000 360.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 216.000 378.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 216.000 396.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.000 216.000 414.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 432.000 216.000 432.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 216.000 450.000 198.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 294.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -297.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 312.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -315.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 330.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -333.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 348.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -351.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 366.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -369.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 384.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -387.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 402.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -405.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 420.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -423.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 438.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -441.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 456.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -459.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 270.000 243.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 270.000 261.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 207.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 207.000 286.750 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 450.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 288.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.750 288.000 243.000 288.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 288.000 0.000 0.000 27.000 198.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 127.082 437.230 0.000 0.000 77.843 17.984 rect -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 127.082 437.230 0.000 0.000 77.843 17.984 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 446.378 175.000 406.781 175.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 164.566 398.281 0.000 0.000 38.859 17.984 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 164.566 398.281 0.000 0.000 38.859 17.984 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 127.112 318.753 0.000 0.000 77.781 17.984 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 127.112 318.753 0.000 0.000 77.781 17.984 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 327.578 175.000 367.183 175.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 164.543 357.691 0.000 0.000 38.906 17.984 rect -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 164.543 357.691 0.000 0.000 38.906 17.984 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 117.000 243.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 184.000 270.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 184.000 270.000 184.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 99.000 243.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 135.000 moveto -/Triangular 8.812 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 368.999 133.750 369.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 288.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 306.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 324.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 342.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 162.000 450.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 468.000 162.000 468.000 135.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 99.000 378.000 0.000 0.000 24.000 82.000 rect -%@EndRect -gsave -419.000 111.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(f) -40.477 -2.000 S -(i) -36.481 -2.000 S -(r) -33.147 -2.000 S -(s) -29.151 -2.000 S -(t) -24.481 -2.000 S -( ) -21.147 -2.000 S -(f) -18.147 -2.000 S -(r) -14.151 -2.000 S -(e) -10.155 -2.000 S -(e) -4.829 -2.000 S -( ) 0.497 -2.000 S -(e) 3.497 -2.000 S -(l) 8.823 -2.000 S -(e) 12.157 -2.000 S -(m) 17.483 -2.000 S -(e) 26.817 -2.000 S -(n) 32.143 -2.000 S -(t) 38.143 -2.000 S -0.000 0.000 0.000 setrgbcolor -(\() -37.987 10.000 S -(o) -33.991 10.000 S -(r) -27.991 10.000 S -( ) -23.995 10.000 S -(t) -20.995 10.000 S -(o) -17.661 10.000 S -(p) -11.661 10.000 S -( ) -5.661 10.000 S -(o) -2.661 10.000 S -(f) 3.338 10.000 S -( ) 7.334 10.000 S -(s) 10.334 10.000 S -(t) 15.004 10.000 S -(a) 18.338 10.000 S -(c) 23.665 10.000 S -(k) 28.991 10.000 S -(\)) 34.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 63.000 288.000 0.000 0.000 18.000 198.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.000 81.000 306.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.000 81.000 324.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 81.000 342.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 81.000 360.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 81.000 378.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 81.000 396.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.000 81.000 414.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 432.000 81.000 432.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 81.000 450.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 468.000 81.000 468.000 63.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 294.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -297.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 312.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -315.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 330.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -333.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 348.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -351.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 366.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -369.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 384.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -387.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 402.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -405.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 420.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -423.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 438.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -441.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 456.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -459.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 474.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -477.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 135.000 243.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 135.000 261.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 72.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 72.000 286.750 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 432.000 162.000 432.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.000 162.000 414.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 162.000 396.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 162.000 378.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 153.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.750 153.000 243.000 153.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 36.000 180.000 0.000 0.000 24.000 72.000 rect -%@EndRect -gsave -216.000 48.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(H) -35.500 -2.000 S -(e) -26.833 -2.000 S -(a) -21.507 -2.000 S -(d) -16.181 -2.000 S -( ) -10.181 -2.000 S -(o) -7.181 -2.000 S -(f) -1.181 -2.000 S -( ) 2.814 -2.000 S -(C) 5.814 -2.000 S -(h) 13.818 -2.000 S -(a) 19.818 -2.000 S -(i) 25.144 -2.000 S -(n) 28.478 -2.000 S -0.000 0.000 0.000 setrgbcolor -(=) -35.500 10.000 S -( ) -28.732 10.000 S -(T) -25.732 10.000 S -(o) -18.402 10.000 S -(p) -12.402 10.000 S -( ) -6.402 10.000 S -(o) -3.402 10.000 S -(f) 2.597 10.000 S -( ) 6.593 10.000 S -(S) 9.593 10.000 S -(t) 16.267 10.000 S -(a) 19.601 10.000 S -(c) 24.927 10.000 S -(k) 30.253 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 300.000 217.000 0.000 0.000 12.000 32.000 rect -%@EndRect -gsave -233.000 306.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -15.500 4.000 S -(U) -6.833 4.000 S -(L) 1.832 4.000 S -(L) 9.162 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 210.000 189.000 0.000 0.000 12.000 62.000 rect -%@EndRect -gsave -220.000 216.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -30.500 4.000 S -(u) -24.500 4.000 S -(m) -18.500 4.000 S -(F) -9.166 4.000 S -(r) -2.492 4.000 S -(e) 1.503 4.000 S -(e) 6.830 4.000 S -( ) 12.156 4.000 S -(=) 15.156 4.000 S -( ) 21.923 4.000 S -(2) 24.923 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/messencode.eps b/HTKBook/HTKFigs/messencode.eps deleted file mode 100644 index c90a2a2..0000000 --- a/HTKBook/HTKFigs/messencode.eps +++ /dev/null @@ -1,3012 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: messencode.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:12:11 p.m. -%%BoundingBox: 3.857 453.500 469.500 788.500 -%%QDBoundingBox: 3.857 3.500 469.500 338.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.022 4.357 0.000 0.000 81.042 56.739 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.678 80.579] CP -[14.691 73.478 15.367 68.461 15.704 65.528] CP -[16.042 62.595 15.704 59.199 14.691 55.340] CP -[13.678 51.481 12.158 48.702 10.132 47.004] CP -[8.105 45.306 6.248 42.605 4.559 38.900] CP -[2.870 35.195 1.688 31.568 1.013 28.017] CP -[0.337 24.467 0.253 20.839 0.759 17.134] CP -[1.266 13.429 2.448 10.496 4.306 8.335] CP -[6.163 6.174 8.781 4.476 12.158 3.241] CP -[15.535 2.006 20.179 1.157 26.090 0.694] CP -[32.000 0.231 37.235 0.694 41.794 2.083] CP -[46.354 3.473 49.309 5.325 50.660 7.641] CP -[52.011 9.956 52.602 12.889 52.433 16.440] CP -[52.264 19.990 52.940 23.000 54.460 25.470] CP -[55.979 27.940 56.739 29.792 56.739 31.027] CP -[56.739 32.262 55.051 32.803 51.673 32.648] CP -[48.296 32.494 47.705 34.578 49.900 38.900] CP -[52.095 43.222 50.829 45.075 46.101 44.457] CP -[41.372 43.840 40.190 44.149 42.554 45.384] CP -[44.918 46.618 46.860 47.776 48.380 48.857] CP -[49.900 49.937 50.744 51.944 50.913 54.877] CP -[51.082 57.810 48.718 58.736 43.821 57.656] CP -[38.924 56.575 35.462 56.498 33.435 57.424] CP -[31.409 58.350 30.396 60.897 30.396 65.065] CP -[30.396 69.233 29.889 72.707 28.876 75.485] CP -[27.863 78.264 27.694 80.116 28.369 81.042] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 22.595 0.000 0.000 17.597 10.132 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[9.118 2.778] CP -[5.403 0.926 2.955 1.157 1.773 3.473] CP -[0.591 5.788 0.168 7.795 0.506 9.493] CP -[0.844 11.191 2.364 12.966 5.066 14.819] CP -[7.767 16.671 9.287 16.594 9.625 14.587] CP -[9.963 12.580 8.949 10.960 6.585 9.725] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 44.886 0.000 0.000 4.167 9.118 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.941 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.580 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 98.057 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 97.558 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.408 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.721 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 82.138 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.190 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 132.142 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 168.713 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 211.003 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 177.666 132.977 177.666 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 132.500 132.977 132.500 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 222.833 132.977 222.833 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 267.999 132.977 267.999 96.977 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 267.284 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 303.856 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 346.146 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 312.809 132.977 312.809 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 357.975 132.977 357.975 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 403.142 132.977 403.142 96.977 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 151.090 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 196.138 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 241.185 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 286.233 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 331.280 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 376.328 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -155.380 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 155.380 180.727 155.380 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -200.428 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 200.428 180.727 200.428 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -245.475 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 245.475 180.727 245.475 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -290.523 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 290.523 180.727 290.523 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -335.570 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 335.570 180.727 335.570 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -380.618 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 380.618 180.727 380.618 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -39.000 0.000 0.000 54.000 180.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -24.000 0.000 0.000 54.000 150.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 20.000 123.000 0.000 0.000 36.000 315.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 196.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -201.000 36.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 36.500 203.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -207.500 42.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -4.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 277.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -282.000 36.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.000 285.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -288.500 43.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 349.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -354.000 36.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.000 357.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -360.500 43.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.000 393.000 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -402.000 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -8.500 4.000 S -(t) -2.286 4.000 S -(c) 1.603 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 166.599 0.000 0.000 24.000 86.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 145.000 0.000 0.000 24.000 86.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 199.000 0.000 0.000 12.000 21.599 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 177.400 0.000 0.000 12.000 21.599 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 280.399 0.000 0.000 24.000 21.600 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 274.999 0.000 0.000 24.000 21.600 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 288.499 0.000 0.000 12.000 5.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 283.099 0.000 0.000 12.000 5.400 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 338.599 0.000 0.000 24.000 50.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 326.000 0.000 0.000 24.000 50.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 357.500 0.000 0.000 12.000 12.599 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 344.900 0.000 0.000 12.000 12.599 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.500 193.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -198.000 325.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 325.500 200.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -204.500 331.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -4.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.500 283.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -288.000 325.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 326.000 291.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -294.500 332.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.500 353.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -358.000 325.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 326.000 361.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -364.500 332.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -200.380 316.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 200.380 312.727 200.380 280.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -289.380 316.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 289.380 312.727 289.380 280.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -359.380 316.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 359.380 312.727 359.380 280.727 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.000 408.000 0.000 0.000 31.000 61.000 rect -%@EndRect -gsave -438.500 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -29.927 11.000 S -(a) -16.713 11.000 S -(v) -10.500 11.000 S -(e) -3.500 11.000 S -(f) 2.713 11.000 S -(o) 7.375 11.000 S -(r) 14.375 11.000 S -(m) 19.038 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 205.000 416.000 0.000 0.000 31.000 45.000 rect -%@EndRect -gsave -438.500 220.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -21.769 11.000 S -(e) -11.658 11.000 S -(c) -5.444 11.000 S -(t) 0.769 11.000 S -(o) 4.658 11.000 S -(r) 11.658 11.000 S -(s) 16.320 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 133.000 0.000 0.000 15.000 182.000 rect -%@EndRect -gsave -224.000 11.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -90.500 4.000 S -(o) -81.162 4.000 S -(n) -74.162 4.000 S -(c) -67.162 4.000 S -(e) -60.948 4.000 S -(p) -54.734 4.000 S -(t) -47.734 4.000 S -(:) -43.844 4.000 S -( ) -39.955 4.000 S -(a) -36.455 4.000 S -( ) -30.241 4.000 S -(s) -26.741 4.000 S -(e) -21.292 4.000 S -(q) -15.079 4.000 S -(u) -8.079 4.000 S -(e) -1.079 4.000 S -(n) 5.134 4.000 S -(c) 12.134 4.000 S -(e) 18.348 4.000 S -( ) 24.562 4.000 S -(o) 28.062 4.000 S -(f) 35.062 4.000 S -( ) 39.724 4.000 S -(s) 43.224 4.000 S -(y) 48.672 4.000 S -(m) 55.672 4.000 S -(b) 66.562 4.000 S -(o) 73.562 4.000 S -(l) 80.562 4.000 S -(s) 84.452 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 39.000 0.000 0.000 15.000 74.000 rect -%@EndRect -gsave -76.000 174.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -36.500 4.000 S -(a) -28.713 4.000 S -(r) -22.500 4.000 S -(a) -17.837 4.000 S -(m) -11.624 4.000 S -(e) -0.734 4.000 S -(t) 5.479 4.000 S -(e) 9.369 4.000 S -(r) 15.583 4.000 S -(i) 20.245 4.000 S -(s) 24.134 4.000 S -(e) 29.583 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.000 34.000 0.000 0.000 22.000 80.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 292.000 40.000 0.000 0.000 15.000 60.000 rect -%@EndRect -gsave -70.000 299.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -29.500 4.000 S -(e) -20.162 4.000 S -(c) -13.948 4.000 S -(o) -7.734 4.000 S -(g) -0.734 4.000 S -(n) 6.265 4.000 S -(i) 13.265 4.000 S -(s) 17.155 4.000 S -(e) 22.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 289.000 37.000 0.000 0.000 21.000 65.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 173.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.000 173.000 114.000 173.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.000 300.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.000 300.000 102.000 300.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/mononet.eps b/HTKBook/HTKFigs/mononet.eps deleted file mode 100644 index 6a8ac31..0000000 --- a/HTKBook/HTKFigs/mononet.eps +++ /dev/null @@ -1,2225 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: mononet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 3:58:04 p.m. -%%BoundingBox: 36.500 604.562 505.500 745.437 -%%QDBoundingBox: 36.500 46.562 505.500 187.437 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 181.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 121.500 343.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 361.000 121.500 217.000 121.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.000 121.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 281.600 121.499 307.000 121.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 112.500 181.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 76.500 343.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 361.000 112.500 217.000 112.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.000 112.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 281.600 112.499 307.000 112.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.500 37.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.000 49.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -56.113 118.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.500 415.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.000 427.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -434.113 118.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.500 469.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.059 475.841 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -487.117 119.059 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.658 4.000 S -(n) -2.106 4.000 S -(d) 4.893 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.609 91.278 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.169 97.378 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -110.599 119.169 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.121 4.000 S -(t) -5.334 4.000 S -(a) -1.445 4.000 S -(r) 4.768 4.000 S -(t) 9.430 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -91.000 117.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.399 117.795 73.000 117.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -469.000 117.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 467.399 117.795 451.000 117.795 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 67.500 172.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.358 191.767 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -195.267 81.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -2.732 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 67.500 235.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.358 256.249 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -258.194 81.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.250 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 67.500 298.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.358 319.249 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -321.194 81.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.250 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 81.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.399 81.795 217.000 81.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.000 81.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.399 81.795 280.000 81.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.500 361.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -361.000 81.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 359.399 81.795 343.000 81.795 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 74.538 367.266 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -374.656 82.538 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.233 4.000 S -(i) -0.233 4.000 S -(t) 3.656 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 139.500 172.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.358 193.249 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -196.749 153.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -3.250 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 139.500 235.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 145.358 256.139 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -259.639 153.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -3.360 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 139.500 298.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.358 319.880 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -321.825 153.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.619 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 153.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.399 153.795 217.000 153.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.000 153.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.399 153.795 280.000 153.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 139.500 361.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -361.000 153.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 359.399 153.795 343.000 153.795 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.538 365.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -374.729 154.538 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.000 85.500 moveto -/Triangular 9.399 5.874 false 149.046 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.628 86.323 127.000 112.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.000 148.500 moveto -/Triangular 9.399 5.874 false 210.979 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.627 147.676 127.000 121.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.000 112.500 moveto -/Triangular 9.399 5.874 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 413.868 111.368 388.000 85.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.000 121.500 moveto -/Triangular 9.399 5.874 false 135.009 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 413.868 122.631 388.000 148.500 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 388.000 49.500 172.000 49.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -271.000 49.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 272.600 49.499 298.000 49.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 388.000 184.500 172.000 184.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -271.000 184.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 272.600 184.499 298.000 184.500 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/muacc.eps b/HTKBook/HTKFigs/muacc.eps deleted file mode 100644 index 11d449a..0000000 --- a/HTKBook/HTKFigs/muacc.eps +++ /dev/null @@ -1,150 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: muacc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:15:29 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 249 58 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 96.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 900 900 m 2100 900 l 2100 1500 l 900 1500 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 2700 900 m 4800 900 l 4800 1200 l 2700 1200 l cp gs col-1 s gr -% Polyline -gs clippath -2553 1020 m 2673 1050 l 2553 1080 l 2715 1080 l 2715 1020 l cp clip -n 1950 1050 m 2700 1050 l gs col-1 s gr gr - -% arrowhead -n 2553 1020 m 2673 1050 l 2553 1080 l 2553 1050 l 2553 1020 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 3000 900 m 3000 1200 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 3600 900 m 3600 1200 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -3300 750 m -gs 1 -1 sc ([1 .. sWidth]) col-1 sh gr -% Polyline -n 4200 900 m 4200 1200 l gs col-1 s gr -% Polyline -n 4500 900 m 4500 1200 l gs col-1 s gr -% Polyline -n 3900 900 m 3900 1200 l gs col-1 s gr -/Times-Bold ff 180.00 scf sf -1275 750 m -gs 1 -1 sc (MuAcc) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (mu) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ = 3.4) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/netforcsr.eps b/HTKBook/HTKFigs/netforcsr.eps deleted file mode 100644 index bd409e6..0000000 --- a/HTKBook/HTKFigs/netforcsr.eps +++ /dev/null @@ -1,1843 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: netforcsr.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:56:27 p.m. -%%BoundingBox: 53.500 554.475 288.500 720.500 -%%QDBoundingBox: 53.500 71.500 288.500 237.524 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 72.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 83.500 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -90.106 81.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -6.000 4.000 S -(x) 0.213 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 72.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 86.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -90.000 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 126.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 108.500 139.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -144.944 116.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.000 4.000 S -(y) -1.110 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 72.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 86.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -90.000 153.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 126.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 144.500 139.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -144.944 152.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.000 4.000 S -(y) -1.110 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 180.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 194.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -198.000 153.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 234.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 249.500 0.000 0.000 16.000 6.213 rect -%@EndRect -gsave -252.606 81.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 234.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 246.500 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -253.106 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.000 4.000 S -(e) 1.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 234.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 239.500 0.000 0.000 16.000 26.427 rect -%@EndRect -gsave -252.713 153.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -13.000 4.000 S -(e) -6.000 4.000 S -(e) 0.213 4.000 S -(n) 6.427 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 198.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.000 216.000 54.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 81.000 108.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 117.000 108.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 153.000 108.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 117.000 162.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 153.000 162.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 153.000 216.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 234.000 72.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 198.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 216.000 288.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 189.000 72.000 189.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 180.500 116.500 0.000 0.000 16.000 16.317 rect -%@EndRect -gsave -124.658 188.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -8.000 4.000 S -(t) -1.786 4.000 S -(c) 2.103 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 189.000 270.000 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.000 234.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 164.000 233.999 189.000 234.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/overview.eps b/HTKBook/HTKFigs/overview.eps deleted file mode 100644 index 57bac82..0000000 --- a/HTKBook/HTKFigs/overview.eps +++ /dev/null @@ -1,2398 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: overview.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:06:42 p.m. -%%BoundingBox: 8.338 555.500 234.672 786.500 -%%QDBoundingBox: 8.338 5.500 234.672 236.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 53.000 68.000 0.000 0.000 20.000 107.481 rect -%@EndRect -gsave -121.740 63.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -53.500 5.000 S -(r) -42.504 5.000 S -(a) -36.510 5.000 S -(i) -28.521 5.000 S -(n) -23.520 5.000 S -(i) -14.520 5.000 S -(n) -9.519 5.000 S -(g) -0.519 5.000 S -( ) 8.480 5.000 S -(T) 12.980 5.000 S -(o) 23.975 5.000 S -(o) 32.975 5.000 S -(l) 41.975 5.000 S -(s) 46.976 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 37.238 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -37.238 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 37.238 119.020 37.238 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -51.815 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 50.731 127.505 45.029 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -20.148 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 19.065 127.505 13.362 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 8.838 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 67.648 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 35.981 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 21.405 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -21.405 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 21.405 119.020 21.405 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 20.148 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -35.981 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 34.898 127.505 29.196 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 53.071 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -53.071 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.071 119.020 53.071 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 51.815 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -67.648 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.565 127.505 60.862 127.505 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 5.500 13.500 0.000 0.000 16.000 70.355 rect -%@EndRect -gsave -48.677 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -35.000 4.000 S -(p) -27.213 4.000 S -(e) -20.213 4.000 S -(e) -14.000 4.000 S -(c) -7.786 4.000 S -(h) -1.572 4.000 S -( ) 5.427 4.000 S -(D) 8.927 4.000 S -(a) 19.038 4.000 S -(t) 25.251 4.000 S -(a) 29.141 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 49.000 14.000 0.000 0.000 27.000 216.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 118.238 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -118.238 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 118.238 119.020 118.238 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.815 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.731 127.505 126.029 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -101.148 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 100.065 127.505 94.362 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 89.838 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 148.648 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 116.981 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 102.405 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -102.405 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 102.405 119.020 102.405 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 101.148 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -116.981 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.898 127.505 110.196 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 134.071 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.071 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.071 119.020 134.071 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 132.815 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -148.648 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 147.565 127.505 141.862 127.505 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 199.238 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.238 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 199.238 119.020 199.238 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -213.815 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 212.731 127.505 207.029 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.148 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.065 127.505 175.362 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 170.838 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 229.648 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 197.981 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 183.405 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -183.405 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 183.405 119.020 183.405 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 182.148 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -197.981 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.898 127.505 191.196 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 215.071 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -215.071 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.071 119.020 215.071 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 213.815 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -229.648 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 228.565 127.505 222.862 127.505 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -41.000 103.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.999 101.000 41.000 76.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.000 103.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.999 101.000 194.000 76.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -68.000 49.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.890 47.335 50.000 22.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -122.000 103.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.999 101.000 122.000 76.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -41.000 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.999 164.000 41.000 139.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.000 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.999 164.000 194.000 139.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -122.000 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.999 164.000 122.000 139.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 170.000 82.000 0.000 0.000 20.000 80.973 rect -%@EndRect -gsave -122.486 180.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -39.500 5.000 S -(e) -27.494 5.000 S -(c) -19.504 5.000 S -(o) -11.515 5.000 S -(g) -2.515 5.000 S -(n) 6.484 5.000 S -(i) 15.484 5.000 S -(s) 20.485 5.000 S -(e) 27.490 5.000 S -(r) 35.479 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 166.000 14.000 0.000 0.000 27.000 216.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 5.500 157.500 0.000 0.000 16.000 75.420 rect -%@EndRect -gsave -195.210 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -37.000 4.000 S -(r) -28.448 4.000 S -(a) -23.786 4.000 S -(n) -17.572 4.000 S -(s) -10.572 4.000 S -(c) -5.124 4.000 S -(r) 1.089 4.000 S -(i) 5.751 4.000 S -(p) 9.641 4.000 S -(t) 16.641 4.000 S -(i) 20.531 4.000 S -(o) 24.420 4.000 S -(n) 31.420 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -176.000 49.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.109 47.335 194.000 22.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.500 13.500 0.000 0.000 16.000 99.148 rect -%@EndRect -gsave -63.074 228.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -49.000 4.000 S -(n) -38.889 4.000 S -(k) -31.889 4.000 S -(n) -24.889 4.000 S -(o) -17.889 4.000 S -(w) -10.889 4.000 S -(n) -0.779 4.000 S -( ) 6.220 4.000 S -(S) 9.720 4.000 S -(p) 17.506 4.000 S -(e) 24.506 4.000 S -(e) 30.720 4.000 S -(c) 36.934 4.000 S -(h) 43.148 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -68.000 193.000 moveto -/Triangular 14.099 7.049 false 123.698 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.890 194.664 50.000 220.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.500 157.500 0.000 0.000 16.000 75.420 rect -%@EndRect -gsave -195.210 228.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -37.000 4.000 S -(r) -28.448 4.000 S -(a) -23.786 4.000 S -(n) -17.572 4.000 S -(s) -10.572 4.000 S -(c) -5.124 4.000 S -(r) 1.089 4.000 S -(i) 5.751 4.000 S -(p) 9.641 4.000 S -(t) 16.641 4.000 S -(i) 20.531 4.000 S -(o) 24.420 4.000 S -(n) 31.420 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.000 220.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.000 193.000 192.890 218.335 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/parher.eps b/HTKBook/HTKFigs/parher.eps deleted file mode 100644 index fbe17f4..0000000 --- a/HTKBook/HTKFigs/parher.eps +++ /dev/null @@ -1,1834 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: parher.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:42:30 a.m. -%%BoundingBox: 15.000 449.000 428.000 757.000 -%%QDBoundingBox: 15.000 35.000 428.000 343.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.500 243.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 274.499 241.500 274.500 216.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 243.500 175.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 217.500 0.000 0.000 19.000 102.000 rect -%@EndRect -gsave -268.500 263.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -51.000 6.000 S -(c) -38.000 6.000 S -(c) -30.011 6.000 S -(u) -22.022 6.000 S -(m) -13.022 6.000 S -(u) 0.978 6.000 S -(l) 9.978 6.000 S -(a) 14.979 6.000 S -(t) 22.968 6.000 S -(o) 27.969 6.000 S -(r) 36.969 6.000 S -(s) 42.963 6.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.500 306.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 274.499 304.500 274.500 279.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 112.500 0.000 0.000 36.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 188.500 123.423 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -164.164 198.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.076 5.000 S -(E) -27.077 5.000 S -(R) -16.082 5.000 S -(e) -4.076 5.000 S -(s) 3.912 5.000 S -(t) 10.917 5.000 S -( ) 15.918 5.000 S -(\() 20.418 5.000 S -(1) 26.412 5.000 S -(\)) 35.412 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 306.500 166.500 0.000 0.000 36.000 234.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 314.500 231.500 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -272.241 324.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.000 5.000 S -(E) -27.000 5.000 S -(R) -16.005 5.000 S -(e) -4.000 5.000 S -(s) 3.989 5.000 S -(t) 10.994 5.000 S -( ) 15.995 5.000 S -(\() 20.495 5.000 S -(0) 26.489 5.000 S -(\)) 35.489 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 15.500 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.500 24.500 0.000 0.000 19.000 53.000 rect -%@EndRect -gsave -51.000 201.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -26.000 6.000 S -(M) -13.000 6.000 S -(M) 3.003 6.000 S -(s) 19.008 6.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -112.500 199.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 110.500 199.500 88.500 199.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 51.500 324.500 166.500 324.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -51.500 216.500 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 51.500 218.500 51.500 324.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 220.500 0.000 0.000 36.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 188.500 231.423 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -272.164 198.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.076 5.000 S -(E) -27.077 5.000 S -(R) -16.082 5.000 S -(e) -4.076 5.000 S -(s) 3.912 5.000 S -(t) 10.917 5.000 S -( ) 15.918 5.000 S -(\() 20.418 5.000 S -(2) 26.412 5.000 S -(\)) 35.412 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 328.500 0.000 0.000 36.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 188.500 339.423 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -380.164 198.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.076 5.000 S -(E) -27.077 5.000 S -(R) -16.082 5.000 S -(e) -4.076 5.000 S -(s) 3.912 5.000 S -(t) 10.917 5.000 S -( ) 15.918 5.000 S -(\() 20.418 5.000 S -(3) 26.412 5.000 S -(\)) 35.412 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -193.500 243.500 moveto -/Triangular 14.687 10.574 false 216.885 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.388 242.666 157.500 216.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -364.500 243.500 moveto -/Triangular 14.687 10.574 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 365.270 242.344 382.500 216.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.500 180.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 274.499 178.500 274.500 135.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.500 238.500 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 98.000 257.000 0.000 0.000 31.000 37.727 rect -%@EndRect -gsave -275.863 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -18.500 -4.000 S -(a) -8.389 -4.000 S -(t) -2.175 -4.000 S -(a) 1.713 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -18.500 11.000 S -( ) -15.000 11.000 S -( ) -11.500 11.000 S -(F) -8.000 11.000 S -(i) -0.213 11.000 S -(l) 3.675 11.000 S -(e) 7.565 11.000 S -(s) 13.779 11.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -373.500 180.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 373.499 178.500 373.500 135.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.500 337.500 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 98.000 356.000 0.000 0.000 31.000 37.727 rect -%@EndRect -gsave -374.863 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -18.500 -4.000 S -(a) -8.389 -4.000 S -(t) -2.175 -4.000 S -(a) 1.713 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -18.500 11.000 S -( ) -15.000 11.000 S -( ) -11.500 11.000 S -(F) -8.000 11.000 S -(i) -0.213 11.000 S -(l) 3.675 11.000 S -(e) 7.565 11.000 S -(s) 13.779 11.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -157.500 180.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 157.499 178.500 157.500 135.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.500 121.500 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 98.000 140.000 0.000 0.000 31.000 37.727 rect -%@EndRect -gsave -158.863 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -18.500 -4.000 S -(a) -8.389 -4.000 S -(t) -2.175 -4.000 S -(a) 1.713 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -18.500 11.000 S -( ) -15.000 11.000 S -( ) -11.500 11.000 S -(F) -8.000 11.000 S -(i) -0.213 11.000 S -(l) 3.675 11.000 S -(e) 7.565 11.000 S -(s) 13.779 11.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 35.000 185.000 0.000 0.000 20.000 166.957 rect -%@EndRect -gsave -268.478 45.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -82.500 5.000 S -(a) -72.489 5.000 S -(r) -64.500 5.000 S -(t) -58.505 5.000 S -(i) -53.504 5.000 S -(t) -48.503 5.000 S -(i) -43.502 5.000 S -(o) -38.501 5.000 S -(n) -29.501 5.000 S -( ) -20.501 5.000 S -(T) -16.001 5.000 S -(r) -5.006 5.000 S -(a) 0.987 5.000 S -(i) 8.976 5.000 S -(n) 13.977 5.000 S -(i) 22.977 5.000 S -(n) 27.978 5.000 S -(g) 36.978 5.000 S -( ) 45.978 5.000 S -(D) 50.478 5.000 S -(a) 63.477 5.000 S -(t) 71.466 5.000 S -(a) 76.467 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.500 81.500 121.500 63.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 409.500 63.500 121.500 63.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 409.500 81.500 409.500 63.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/qstree.eps b/HTKBook/HTKFigs/qstree.eps deleted file mode 100644 index 06e7670..0000000 --- a/HTKBook/HTKFigs/qstree.eps +++ /dev/null @@ -1,2930 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: qstree.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 11:33:11 a.m. -%%BoundingBox: 88.338 291.500 458.544 698.500 -%%QDBoundingBox: 88.338 93.500 458.544 500.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 100.000 235.112 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.112 114.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.112 113.138 235.112 107.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -260.659 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.576 124.888 248.766 124.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -205.159 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.076 124.888 193.266 124.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 121.333 185.338 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 121.333 288.409 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.777 232.909 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 100.000 207.362 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.362 114.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.362 113.138 207.362 107.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.777 205.159 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -232.909 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.826 124.888 221.016 124.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 100.000 262.862 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.862 114.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.862 113.138 262.862 107.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.777 260.659 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.409 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.326 124.888 276.516 124.888 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 116.500 123.673 0.000 0.000 16.000 41.330 rect -%@EndRect -gsave -144.338 124.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.826 4.000 S -(-) -14.378 4.000 S -(a) -9.716 4.000 S -(w) -3.502 4.000 S -(+) 6.607 4.000 S -(n) 14.503 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 152.000 124.338 0.000 0.000 16.000 39.771 rect -%@EndRect -gsave -144.224 160.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -19.161 4.000 S -(-) -15.271 4.000 S -(a) -10.609 4.000 S -(w) -4.395 4.000 S -(+) 5.714 4.000 S -(n) 13.609 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 189.000 124.338 0.000 0.000 16.000 38.219 rect -%@EndRect -gsave -143.448 197.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -18.161 4.000 S -(-) -12.713 4.000 S -(a) -8.051 4.000 S -(w) -1.837 4.000 S -(+) 8.272 4.000 S -(t) 16.168 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 136.000 235.112 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.112 150.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.112 149.138 235.112 143.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -260.659 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.576 160.888 248.766 160.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -205.159 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.076 160.888 193.266 160.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 157.333 185.338 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 157.333 288.409 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.777 232.909 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 136.000 207.362 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.362 150.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.362 149.138 207.362 143.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.777 205.159 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -232.909 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.826 160.888 221.016 160.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 136.000 262.862 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.862 150.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.862 149.138 262.862 143.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.777 260.659 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.409 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.326 160.888 276.516 160.888 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 172.000 235.112 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.112 186.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.112 185.138 235.112 179.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -260.659 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.576 196.888 248.766 196.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -205.159 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.076 196.888 193.266 196.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 193.333 185.338 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 193.333 288.409 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.777 232.909 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 172.000 207.362 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.362 186.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.362 185.138 207.362 179.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.777 205.159 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -232.909 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.826 196.888 221.016 196.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 172.000 262.862 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.862 186.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.862 185.138 262.862 179.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.777 260.659 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.409 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.326 196.888 276.516 196.888 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 226.838 256.000 226.838 94.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.838 94.000 226.838 94.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.838 256.000 253.838 94.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 212.500 234.338 0.000 0.000 26.000 17.000 rect -%@EndRect -gsave -242.838 225.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -5.661 6.000 S -(.) 0.338 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.500 139.179 0.000 0.000 16.000 16.317 rect -%@EndRect -gsave -147.338 228.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -7.320 4.000 S -(t) -1.106 4.000 S -(c) 2.783 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 133.500 326.458 0.000 0.000 16.000 49.758 rect -%@EndRect -gsave -351.338 141.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --24.541 6 26.217 6 U -(E) -24.041 4.000 S -(x) -15.489 4.000 S -(a) -8.489 4.000 S -(m) -2.275 4.000 S -(p) 8.614 4.000 S -(l) 15.614 4.000 S -(e) 19.503 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 325.338 0.000 0.000 46.000 82.044 rect -%@EndRect -gsave -366.360 176.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -40.161 -11.000 S -(l) -30.823 -11.000 S -(u) -26.934 -11.000 S -(s) -19.934 -11.000 S -(t) -14.485 -11.000 S -(e) -10.596 -11.000 S -(r) -4.382 -11.000 S -( ) 0.279 -11.000 S -(c) 3.779 -11.000 S -(e) 9.993 -11.000 S -(n) 16.207 -11.000 S -(t) 23.207 -11.000 S -(r) 27.097 -11.000 S -(e) 31.759 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -40.161 4.000 S -(t) -34.713 4.000 S -(a) -30.823 4.000 S -(t) -24.609 4.000 S -(e) -20.720 4.000 S -(s) -14.506 4.000 S -( ) -9.058 4.000 S -(o) -5.558 4.000 S -(f) 1.441 4.000 S -( ) 6.104 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -40.161 19.000 S -(h) -33.161 19.000 S -(o) -26.161 19.000 S -(n) -19.161 19.000 S -(e) -12.161 19.000 S -( ) -5.947 19.000 S -(/) -2.447 19.000 S -(a) 1.441 19.000 S -(w) 7.655 19.000 S -(/) 17.766 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 287.000 231.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 341.000 168.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 341.000 294.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 186.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 249.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 395.000 339.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 123.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 312.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 375.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 185.838 344.000 233.838 303.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.838 343.000 248.838 302.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.838 448.000 172.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.838 448.000 182.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.838 446.000 299.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 343.838 397.000 307.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.838 447.000 342.838 412.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 380.838 448.000 355.838 411.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 301.500 270.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -273.838 309.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 302.500 206.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -209.838 310.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 360.500 195.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -198.838 368.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 360.500 151.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -154.838 368.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 361.500 330.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -333.838 369.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 361.500 280.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -283.838 369.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 407.500 367.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -370.838 415.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 407.500 323.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -326.838 415.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -240.838 287.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.838 285.000 240.838 251.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 94.338 0.000 0.000 16.000 129.206 rect -%@EndRect -gsave -158.941 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -64.161 4.000 S -(=) -54.823 4.000 S -(C) -46.928 4.000 S -(e) -37.590 4.000 S -(n) -31.376 4.000 S -(t) -24.376 4.000 S -(r) -20.486 4.000 S -(a) -15.824 4.000 S -(l) -9.610 4.000 S -(-) -5.721 4.000 S -(C) -1.059 4.000 S -(o) 8.278 4.000 S -(n) 15.278 4.000 S -(s) 22.278 4.000 S -(o) 27.727 4.000 S -(n) 34.727 4.000 S -(a) 41.727 4.000 S -(n) 47.940 4.000 S -(t) 54.940 4.000 S -(?) 58.830 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 105.338 0.000 0.000 16.000 54.537 rect -%@EndRect -gsave -132.606 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -27.161 4.000 S -(=) -18.609 4.000 S -(N) -10.714 4.000 S -(a) -0.604 4.000 S -(s) 5.609 4.000 S -(a) 11.058 4.000 S -(l) 17.271 4.000 S -(?) 21.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 321.338 0.000 0.000 16.000 55.323 rect -%@EndRect -gsave -349.000 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -27.161 4.000 S -(=) -17.823 4.000 S -(N) -9.928 4.000 S -(a) 0.182 4.000 S -(s) 6.395 4.000 S -(a) 11.844 4.000 S -(l) 18.058 4.000 S -(?) 21.947 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.838 477.000 88.838 459.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 430.838 477.000 88.838 477.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 430.838 459.000 430.838 477.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 484.500 170.338 0.000 0.000 16.000 177.249 rect -%@EndRect -gsave -258.962 492.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -88.161 4.000 S -(t) -80.375 4.000 S -(a) -76.485 4.000 S -(t) -70.271 4.000 S -(e) -66.382 4.000 S -(s) -60.168 4.000 S -( ) -54.720 4.000 S -(i) -51.220 4.000 S -(n) -47.330 4.000 S -( ) -40.330 4.000 S -(e) -36.830 4.000 S -(a) -30.616 4.000 S -(c) -24.402 4.000 S -(h) -18.188 4.000 S -( ) -11.188 4.000 S -(l) -7.688 4.000 S -(e) -3.799 4.000 S -(a) 2.414 4.000 S -(f) 8.628 4.000 S -( ) 13.290 4.000 S -(n) 16.790 4.000 S -(o) 23.790 4.000 S -(d) 30.790 4.000 S -(e) 37.790 4.000 S -( ) 44.004 4.000 S -(a) 47.504 4.000 S -(r) 53.718 4.000 S -(e) 58.380 4.000 S -( ) 64.594 4.000 S -(t) 68.094 4.000 S -(i) 71.983 4.000 S -(e) 75.873 4.000 S -(d) 82.087 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 380.500 364.338 0.000 0.000 16.000 94.206 rect -%@EndRect -gsave -411.441 388.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -46.161 4.000 S -(=) -37.609 4.000 S -(C) -29.714 4.000 S -(e) -20.376 4.000 S -(n) -14.162 4.000 S -(t) -7.162 4.000 S -(r) -3.272 4.000 S -(a) 1.389 4.000 S -(l) 7.603 4.000 S -(-) 11.492 4.000 S -(S) 16.154 4.000 S -(t) 23.940 4.000 S -(o) 27.830 4.000 S -(p) 34.830 4.000 S -(?) 41.830 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/recipe.eps b/HTKBook/HTKFigs/recipe.eps deleted file mode 100644 index 90f8433..0000000 --- a/HTKBook/HTKFigs/recipe.eps +++ /dev/null @@ -1,2309 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: recipe.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/15/95 4:21:49 p.m. -%%BoundingBox: 42.617 467.500 307.291 605.088 -%%QDBoundingBox: 42.617 186.911 307.291 324.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 132.302 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.302 281.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 132.302 280.918 132.302 278.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 158.261 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -158.261 281.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 158.261 280.918 158.261 278.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 184.219 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -184.219 281.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 184.219 280.918 184.219 278.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 287.096 130.242 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 287.096 156.200 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 287.096 182.159 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.242 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.575 293.985 119.117 293.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -156.200 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.534 293.985 145.075 293.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.159 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.492 293.985 171.034 293.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -208.117 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.450 293.985 196.992 293.985 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 262.874 43.117 0.000 0.000 17.000 53.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.185] CP -[0.188 5.498 0.565 3.567 1.130 2.392] CP -[1.695 1.217 2.190 0.923 2.614 1.511] CP -[3.038 2.098 3.415 3.358 3.745 5.288] CP -[4.075 7.219 4.334 8.856 4.522 10.199] CP -[4.711 11.543 4.946 12.760 5.229 13.851] CP -[5.511 14.943 5.959 15.635 6.571 15.929] CP -[7.184 16.223 7.632 15.929 7.914 15.048] CP -[8.197 14.166 8.338 13.075 8.338 11.774] CP -[8.338 10.472 8.550 9.171 8.974 7.870] CP -[9.398 6.569 9.799 5.645 10.175 5.100] CP -[10.552 4.554 10.906 4.680 11.235 5.477] CP -[11.565 6.275 11.872 7.282 12.154 8.500] CP -[12.437 9.717 12.790 10.724 13.214 11.522] CP -[13.638 12.319 14.086 12.571 14.557 12.277] CP -[15.028 11.983 15.334 11.732 15.475 11.522] CP -[15.617 11.312 15.805 10.640 16.041 9.507] CP -[16.276 8.374 16.677 7.387 17.242 6.548] CP -[17.807 5.708 18.302 5.540 18.726 6.044] CP -[19.150 6.548 19.433 7.198 19.574 7.996] CP -[19.715 8.793 19.927 9.444 20.210 9.948] CP -[20.493 10.451 20.893 10.598 21.412 10.388] CP -[21.930 10.179 22.377 9.633 22.754 8.751] CP -[23.131 7.870 23.508 7.345 23.885 7.177] CP -[24.262 7.009 24.874 7.345 25.722 8.185] CP -[26.570 9.024 27.300 9.192 27.913 8.688] CP -[28.525 8.185 29.091 7.681 29.609 7.177] CP -[30.127 6.674 30.692 5.771 31.305 4.470] CP -[31.917 3.169 32.553 2.098 33.213 1.259] CP -[33.872 0.419 34.320 0.167 34.555 0.503] CP -[34.791 0.839 35.027 1.888 35.262 3.651] CP -[35.498 5.414 35.757 7.135 36.039 8.814] CP -[36.322 10.493 36.487 11.732 36.534 12.529] CP -[36.581 13.327 36.840 14.271 37.311 15.362] CP -[37.783 16.454 38.348 16.832 39.007 16.496] CP -[39.667 16.160 40.091 15.887 40.279 15.677] CP -[40.468 15.467 40.751 14.817 41.127 13.725] CP -[41.504 12.634 41.787 11.354 41.975 9.885] CP -[42.164 8.416 42.494 6.925 42.965 5.414] CP -[43.436 3.903 43.789 3.085 44.025 2.959] CP -[44.260 2.833 44.708 3.127 45.367 3.840] CP -[46.027 4.554 46.475 5.624 46.710 7.051] CP -[46.946 8.479 47.205 9.507 47.487 10.137] CP -[47.770 10.766 48.076 11.060 48.406 11.018] CP -[48.736 10.976 49.113 10.640 49.537 10.011] CP -[49.961 9.381 50.385 8.646 50.809 7.807] CP -[51.233 6.967 51.680 6.779 52.152 7.240] CP -[52.623 7.702 52.905 8.059 53.000 8.311] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -2.897 209.463 184.403 0.000 0.000 11.404 11.811 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {3.258 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {0.500 0.500 0.500 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 -2.897 228.265 182.440 0.000 0.000 6.516 70.476 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -2.897 219.297 184.303 0.000 0.000 10.182 7.086 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -2.897 228.801 180.123 0.000 0.000 7.738 11.024 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {7.250 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {DR} def -/flipRatio 0.508 def -/rampAngle 90 def -/rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def -/PC {} def -/RF {} def -1.000 0.680 195.683 78.612 0.000 0.000 14.500 30.776 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 191.412 83.570 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 191.412 83.569 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 204.091 99.227 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 204.091 99.227 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.791 207.273 89.067 198.588 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 102.320 205.465 90.523 195.913 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.310 210.314 86.514 200.762 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0.680 226.295 99.547 0.000 0.000 4.027 51.578 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.264 243.280 143.545 240.463 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 252.000 108.000 0.000 0.000 72.000 117.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 288.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.000 288.000 72.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 288.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.000 288.000 225.000 288.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 267.500 234.500 0.000 0.000 14.000 64.781 rect -%@EndRect -gsave -266.890 274.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -32.000 3.000 S -( ) -27.101 3.000 S -(c) -24.101 3.000 S -(a) -18.775 3.000 S -(l) -13.449 3.000 S -(l) -10.115 3.000 S -( ) -6.781 3.000 S -(J) -3.781 3.000 S -(u) 0.888 3.000 S -(l) 6.888 3.000 S -(i) 10.222 3.000 S -(a) 13.556 3.000 S -(n) 18.882 3.000 S -( ) 24.882 3.000 S -(") 27.882 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 294.500 234.500 0.000 0.000 14.000 72.791 rect -%@EndRect -gsave -270.895 301.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -36.000 3.000 S -( ) -31.101 3.000 S -(d) -28.101 3.000 S -(i) -22.101 3.000 S -(a) -18.767 3.000 S -(l) -13.441 3.000 S -( ) -10.107 3.000 S -(3) -7.107 3.000 S -(3) -1.107 3.000 S -(2) 4.892 3.000 S -(6) 10.892 3.000 S -(5) 16.892 3.000 S -(4) 22.892 3.000 S -( ) 28.892 3.000 S -(") 31.892 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 295.874 43.117 0.000 0.000 17.000 53.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[53.000 8.185] CP -[52.811 5.498 52.434 3.567 51.869 2.392] CP -[51.304 1.217 50.809 0.923 50.385 1.511] CP -[49.961 2.098 49.584 3.358 49.254 5.288] CP -[48.924 7.219 48.665 8.856 48.477 10.199] CP -[48.288 11.543 48.053 12.760 47.770 13.851] CP -[47.488 14.943 47.040 15.635 46.428 15.929] CP -[45.815 16.223 45.367 15.929 45.085 15.048] CP -[44.802 14.166 44.661 13.075 44.661 11.774] CP -[44.661 10.472 44.449 9.171 44.025 7.870] CP -[43.601 6.569 43.200 5.645 42.824 5.100] CP -[42.447 4.554 42.093 4.680 41.764 5.477] CP -[41.434 6.275 41.127 7.282 40.845 8.500] CP -[40.562 9.717 40.209 10.724 39.785 11.522] CP -[39.361 12.319 38.913 12.571 38.442 12.277] CP -[37.971 11.983 37.665 11.732 37.524 11.522] CP -[37.382 11.312 37.194 10.640 36.958 9.507] CP -[36.723 8.374 36.322 7.387 35.757 6.548] CP -[35.192 5.708 34.697 5.540 34.273 6.044] CP -[33.849 6.548 33.566 7.198 33.425 7.996] CP -[33.284 8.793 33.072 9.444 32.789 9.948] CP -[32.506 10.451 32.106 10.598 31.587 10.388] CP -[31.069 10.179 30.622 9.633 30.245 8.751] CP -[29.868 7.870 29.491 7.345 29.114 7.177] CP -[28.737 7.009 28.125 7.345 27.277 8.185] CP -[26.429 9.024 25.699 9.192 25.086 8.688] CP -[24.474 8.185 23.908 7.681 23.390 7.177] CP -[22.872 6.674 22.307 5.771 21.694 4.470] CP -[21.082 3.169 20.446 2.098 19.786 1.259] CP -[19.127 0.419 18.679 0.167 18.444 0.503] CP -[18.208 0.839 17.972 1.888 17.737 3.651] CP -[17.501 5.414 17.242 7.135 16.960 8.814] CP -[16.677 10.493 16.512 11.732 16.465 12.529] CP -[16.418 13.327 16.159 14.271 15.688 15.362] CP -[15.216 16.454 14.651 16.832 13.992 16.496] CP -[13.332 16.160 12.908 15.887 12.720 15.677] CP -[12.531 15.467 12.248 14.817 11.872 13.725] CP -[11.495 12.634 11.212 11.354 11.024 9.885] CP -[10.835 8.416 10.505 6.925 10.034 5.414] CP -[9.563 3.903 9.210 3.085 8.974 2.959] CP -[8.739 2.833 8.291 3.127 7.632 3.840] CP -[6.972 4.554 6.524 5.624 6.289 7.051] CP -[6.053 8.479 5.794 9.507 5.512 10.137] CP -[5.229 10.766 4.923 11.060 4.593 11.018] CP -[4.263 10.976 3.886 10.640 3.462 10.011] CP -[3.038 9.381 2.614 8.646 2.190 7.807] CP -[1.766 6.967 1.319 6.779 0.847 7.240] CP -[0.376 7.702 0.094 8.059 0.000 8.311] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/recnetlev.eps b/HTKBook/HTKFigs/recnetlev.eps deleted file mode 100644 index 0d85ba0..0000000 --- a/HTKBook/HTKFigs/recnetlev.eps +++ /dev/null @@ -1,2197 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: recnetlev.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 10:25:29 a.m. -%%BoundingBox: 98.500 490.500 360.486 734.500 -%%QDBoundingBox: 98.500 57.500 360.486 301.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.666 72.000 99.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.666 72.000 171.000 72.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 238.000 158.000 0.000 0.000 45.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -158.000 263.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 157.999 261.666 158.000 255.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.000 153.000 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.666 288.000 180.000 288.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 238.000 212.000 0.000 0.000 45.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -212.000 263.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 211.999 261.666 212.000 255.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.000 207.000 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.666 288.000 234.000 288.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 238.000 266.000 0.000 0.000 45.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -266.000 263.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 265.999 261.666 266.000 255.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.000 261.000 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.666 288.000 288.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.666 288.000 126.000 288.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 157.000 135.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.666 171.000 171.000 171.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 157.000 207.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -279.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.666 171.000 243.000 171.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -351.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 349.666 171.000 315.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 157.000 279.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.666 171.000 99.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 58.000 126.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.666 72.000 252.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 58.000 207.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 358.666 72.000 333.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 58.000 288.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 171.000 207.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 171.000 255.000 73.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 288.000 207.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.000 288.000 243.000 171.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 320.500 0.000 0.000 31.000 31.875 rect -%@EndRect -gsave -336.437 104.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -15.000 -3.000 S -(o) -1.786 -3.000 S -(r) 5.213 -3.000 S -(d) 9.875 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -12.665 12.000 S -(e) -8.775 12.000 S -(v) -2.562 12.000 S -(e) 4.437 12.000 S -(l) 10.651 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 187.500 311.500 0.000 0.000 31.000 48.986 rect -%@EndRect -gsave -335.993 203.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.000 -3.000 S -(e) -13.889 -3.000 S -(t) -7.675 -3.000 S -(w) -3.786 -3.000 S -(o) 6.324 -3.000 S -(r) 13.324 -3.000 S -(k) 17.986 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.110 12.000 S -(e) -9.220 12.000 S -(v) -3.006 12.000 S -(e) 3.993 12.000 S -(l) 10.207 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.500 321.500 0.000 0.000 31.000 35.006 rect -%@EndRect -gsave -339.003 275.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 -3.000 S -(M) -6.889 -3.000 S -(M) 5.558 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.100 12.000 S -(e) -9.210 12.000 S -(v) -2.996 12.000 S -(e) 4.003 12.000 S -(l) 10.217 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 135.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -140.555 69.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 144.500 0.000 0.000 14.000 15.996 rect -%@EndRect -gsave -152.498 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -7.000 3.000 S -(-) -1.000 3.000 S -(1) 2.996 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 222.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -227.555 69.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 231.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -234.500 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 297.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -302.555 69.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 306.500 0.000 0.000 14.000 18.767 rect -%@EndRect -gsave -315.883 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -9.000 3.000 S -(+) -3.000 3.000 S -(1) 3.767 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 288.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -293.555 168.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 297.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -300.500 176.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.500 146.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -150.000 167.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 168.500 153.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -156.500 175.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.500 219.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -223.000 166.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.500 226.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -229.500 174.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 162.500 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -165.224 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 285.500 167.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -170.500 292.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 216.500 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -219.224 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 285.500 221.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -224.500 292.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 270.500 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -273.224 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 285.500 275.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -278.500 292.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/recsys.eps b/HTKBook/HTKFigs/recsys.eps deleted file mode 100644 index 0765ada..0000000 --- a/HTKBook/HTKFigs/recsys.eps +++ /dev/null @@ -1,1949 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: recsys.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/29/95 8:38:46 p.m. -%%BoundingBox: 29.500 126.177 416.484 557.862 -%%QDBoundingBox: 29.500 234.137 416.484 665.822 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -277.086 502.511 moveto -/Triangular 14.099 7.049 false 389.082 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 278.834 503.482 340.866 537.944 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -275.669 593.220 moveto -/Triangular 14.099 7.049 false 330.547 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.410 592.236 340.866 556.370 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 486.921 107.007 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 580.464 207.637 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 587.303 227.602 0.000 0.000 16.000 31.875 rect -%@EndRect -gsave -243.540 595.303 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.897 4.000 S -(R) -5.787 4.000 S -(e) 3.550 4.000 S -(c) 9.764 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 649.822 186.744 0.000 0.000 16.000 110.824 rect -%@EndRect -gsave -242.156 657.822 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -54.755 4.000 S -(e) -45.418 4.000 S -(c) -39.204 4.000 S -(o) -32.990 4.000 S -(g) -25.990 4.000 S -(n) -18.990 4.000 S -(i) -11.990 4.000 S -(t) -8.100 4.000 S -(i) -4.210 4.000 S -(o) -0.321 4.000 S -(n) 6.678 4.000 S -( ) 13.678 4.000 S -(O) 17.178 4.000 S -(u) 27.289 4.000 S -(t) 34.289 4.000 S -(p) 38.178 4.000 S -(u) 45.178 4.000 S -(t) 52.178 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 486.921 207.637 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 493.759 227.602 0.000 0.000 16.000 30.324 rect -%@EndRect -gsave -242.764 501.759 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.897 4.000 S -(N) -4.787 4.000 S -(e) 5.323 4.000 S -(t) 11.536 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 494.492 124.500 0.000 0.000 16.000 34.213 rect -%@EndRect -gsave -141.606 502.492 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(D) -6.889 4.000 S -(i) 3.220 4.000 S -(c) 7.110 4.000 S -(t) 13.324 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.637 502.511 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.637 502.511 176.456 502.511 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -241.653 580.464 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.653 578.464 241.653 518.102 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.070 649.913 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.070 647.913 243.070 610.228 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 530.858 338.031 0.000 0.000 29.763 72.283 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 538.283 346.535 0.000 0.000 16.000 56.396 rect -%@EndRect -gsave -374.733 546.283 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.964 4.000 S -(M) -17.854 4.000 S -(M) -5.405 4.000 S -( ) 7.042 4.000 S -(S) 10.542 4.000 S -(e) 18.328 4.000 S -(t) 24.542 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.637 594.637 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.637 594.637 70.157 594.637 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 576.759 29.500 0.000 0.000 31.000 40.427 rect -%@EndRect -gsave -49.713 592.259 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.000 -3.000 S -(p) -12.213 -3.000 S -(e) -5.213 -3.000 S -(e) 1.000 -3.000 S -(c) 7.213 -3.000 S -(h) 13.427 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -14.562 12.000 S -(n) -9.899 12.000 S -(p) -2.899 12.000 S -(u) 4.100 12.000 S -(t) 11.100 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <1F1F1F8F8F8FC7C7C7E3E3E3F1F1F1F8F8F87C7C7C3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 458.574 91.417 0.000 0.000 168.661 215.433 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 607.893 101.429 0.000 0.000 16.000 36.544 rect -%@EndRect -gsave -119.701 615.893 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.070 4.000 S -(V) -7.960 4.000 S -10.000 (_Times-Roman) fess -(I) 2.149 4.000 S -(T) 5.646 4.000 S -(E) 12.060 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 409.988 105.003 0.000 0.000 16.000 59.869 rect -%@EndRect -gsave -134.938 417.988 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.496 4.000 S -(i) -19.385 4.000 S -(c) -15.496 4.000 S -(t) -9.282 4.000 S -(i) -5.392 4.000 S -(o) -1.502 4.000 S -(n) 5.497 4.000 S -(a) 12.497 4.000 S -(r) 18.710 4.000 S -(y) 23.373 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 403.299 98.503 0.000 0.000 29.763 72.283 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 392.980 209.885 0.000 0.000 31.000 84.362 rect -%@EndRect -gsave -252.067 408.480 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -41.614 -3.000 S -(o) -28.400 -3.000 S -(r) -21.400 -3.000 S -(d) -16.738 -3.000 S -( ) -9.738 -3.000 S -(N) -6.238 -3.000 S -(e) 3.872 -3.000 S -(t) 10.086 -3.000 S -(w) 13.975 -3.000 S -(o) 24.086 -3.000 S -(r) 31.086 -3.000 S -(k) 35.748 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.157 12.000 S -(S) -11.495 12.000 S -(L) -3.708 12.000 S -(F) 4.842 12.000 S -(\)) 12.629 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 382.039 196.299 0.000 0.000 46.771 109.133 rect -%@EndRect -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -141.023 486.921 moveto -/Triangular 14.099 7.049 false 262.523 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 140.762 484.938 133.937 433.062 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 534.169 171.413 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -205.630 549.669 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -34.086 -4.000 S -(e) -24.748 -4.000 S -(c) -18.534 -4.000 S -(o) -12.320 -4.000 S -(g) -5.320 -4.000 S -(n) 1.679 -4.000 S -(i) 8.679 -4.000 S -(t) 12.568 -4.000 S -(i) 16.458 -4.000 S -(o) 20.347 -4.000 S -(n) 27.347 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.362 11.000 S -(e) -14.252 11.000 S -(t) -8.038 11.000 S -(w) -4.148 11.000 S -(o) 5.961 11.000 S -(r) 12.961 11.000 S -(k) 17.623 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -244.488 486.921 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 244.488 484.921 244.488 428.811 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 313.500 149.909 0.000 0.000 16.000 44.736 rect -%@EndRect -gsave -172.277 321.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.590 4.000 S -(P) -11.480 4.000 S -10.000 (_Times-Roman) fess -(A) -3.694 4.000 S -(R) 3.888 4.000 S -(S) 10.892 4.000 S -(E) 16.731 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 306.921 135.353 0.000 0.000 29.763 69.448 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 242.500 95.169 0.000 0.000 31.000 89.031 rect -%@EndRect -gsave -139.685 258.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -33.847 -3.000 S -(B) -25.295 -3.000 S -(N) -15.958 -3.000 S -(F) -5.847 -3.000 S -( ) 1.938 -3.000 S -(S) 5.438 -3.000 S -(t) 13.224 -3.000 S -(y) 17.114 -3.000 S -(l) 24.114 -3.000 S -(e) 28.003 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -44.330 12.000 S -(r) -34.220 12.000 S -(a) -29.558 12.000 S -(m) -23.344 12.000 S -(m) -12.454 12.000 S -(a) -1.564 12.000 S -(r) 4.648 12.000 S -( ) 9.310 12.000 S -(R) 12.810 12.000 S -(u) 22.148 12.000 S -(l) 29.148 12.000 S -(e) 33.038 12.000 S -(s) 39.252 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 234.637 80.078 0.000 0.000 46.771 120.472 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -159.448 306.921 moveto -/Triangular 14.099 7.049 false 232.142 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 158.220 305.342 139.606 281.409 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -210.472 372.118 moveto -/Triangular 14.099 7.049 false 226.235 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.088 370.674 177.874 338.102 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 314.917 311.484 0.000 0.000 16.000 44.524 rect -%@EndRect -gsave -333.746 322.917 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.015 4.000 S -(B) -11.905 4.000 S -10.000 (_Times-Roman) fess -(U) -2.567 4.000 S -(I) 5.015 4.000 S -(L) 8.511 4.000 S -(D) 14.925 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 308.338 296.928 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.917 310.602 0.000 0.000 31.000 89.031 rect -%@EndRect -gsave -355.118 259.417 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -41.952 -3.000 S -(x) -33.401 -3.000 S -(t) -26.401 -3.000 S -(e) -22.511 -3.000 S -(n) -16.297 -3.000 S -(d) -9.297 -3.000 S -(e) -2.297 -3.000 S -(d) 3.916 -3.000 S -( ) 10.916 -3.000 S -(H) 14.416 -3.000 S -(T) 24.526 -3.000 S -(K) 33.078 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -11.443 12.000 S -(L) -3.657 12.000 S -(F) 4.893 12.000 S -( ) 12.680 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 234.637 295.511 0.000 0.000 46.771 120.472 rect -%@EndRect -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -301.181 370.700 moveto -/Triangular 14.099 7.049 false 308.068 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 302.413 369.125 326.692 338.102 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -336.614 308.338 moveto -/Triangular 14.099 7.049 false 308.311 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 337.853 306.768 357.874 281.409 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/regtree1.eps b/HTKBook/HTKFigs/regtree1.eps deleted file mode 100644 index 71e53f2..0000000 --- a/HTKBook/HTKFigs/regtree1.eps +++ /dev/null @@ -1,176 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: regtree1.fig -%%Creator: fig2dev Version 3.1 Patchlevel 1 -%%CreationDate: Thu May 29 13:36:46 1997 -%%For: djk@ecrlpro1 (D.J. Kershaw) -%%Orientation: Portrait -%%BoundingBox: 0 0 254 212 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {} def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --116.0 286.0 translate -1 -1 scale - -/clp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/l {lineto} bind def -/m {moveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -15.000 slw -% Ellipse -n 4050 1607 348 348 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 2889 3000 348 348 0 360 DrawEllipse gs col-1 s gr - - [100.0] 0 setdash -% Ellipse -n 3470 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - [] 0 setdash -% Ellipse -n 2309 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 5211 3000 348 348 0 360 DrawEllipse gs col-1 s gr - - [100.0] 0 setdash -% Ellipse -n 5791 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - [] 0 setdash - [100.0] 0 setdash -% Ellipse -n 4630 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - [] 0 setdash -% Polyline -n 3818 1955 m 3121 2652 l gs col-1 s gr -7.500 slw -n 3333.13 2524.72 m 3121.00 2652.00 l 3248.28 2439.87 l 3291.21 2482.79 l 3333.13 2524.72 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline -n 4282 1955 m 4979 2652 l gs col-1 s gr -7.500 slw -n 4851.72 2439.87 m 4979.00 2652.00 l 4766.87 2524.72 l 4809.79 2482.79 l 4851.72 2439.87 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline -n 2657 3348 m 2424 3987 l gs col-1 s gr -7.500 slw -n 2562.59 3782.08 m 2424.00 3987.00 l 2449.85 3740.97 l 2506.72 3762.02 l 2562.59 3782.08 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline - [100.0] 0 setdash -n 3147 3346 m 3379 3985 l gs col-1 s gr [] 0 setdash -7.500 slw -n 3353.49 3738.93 m 3379.00 3985.00 l 3240.70 3779.88 l 3297.60 3759.91 l 3353.49 3738.93 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline - [100.0] 0 setdash -n 4979 3348 m 4747 3987 l gs col-1 s gr [] 0 setdash -7.500 slw -n 4885.30 3781.88 m 4747.00 3987.00 l 4772.51 3740.93 l 4829.40 3761.91 l 4885.30 3781.88 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline - [100.0] 0 setdash -n 5469 3346 m 5701 3985 l gs col-1 s gr [] 0 setdash -7.500 slw -n 5675.49 3738.93 m 5701.00 3985.00 l 5562.70 3779.88 l 5619.60 3759.91 l 5675.49 3738.93 l clp gs 0.00 setgray ef gr gs col-1 s gr -/Times-Roman findfont 285.00 scalefont setfont -4050 1723 m -gs 1 -1 sc (1) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -2889 3116 m -gs 1 -1 sc (2) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -5211 3116 m -gs 1 -1 sc (3) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -2309 4509 m -gs 1 -1 sc (4) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -3470 4509 m -gs 1 -1 sc (5) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -4630 4509 m -gs 1 -1 sc (6) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -5791 4509 m -gs 1 -1 sc (7) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -$F2psEnd -restore diff --git a/HTKBook/HTKFigs/restloop.eps b/HTKBook/HTKFigs/restloop.eps deleted file mode 100644 index 2e7aebf..0000000 --- a/HTKBook/HTKFigs/restloop.eps +++ /dev/null @@ -1,1516 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: restloop.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:50:33 a.m. -%%BoundingBox: 144.000 388.000 401.000 767.000 -%%QDBoundingBox: 144.000 25.000 401.000 404.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.000 172.000 0.000 0.000 39.000 138.955 rect -%@EndRect -gsave -241.477 130.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -68.500 -5.000 S -(o) -58.489 -5.000 S -(r) -49.489 -5.000 S -(w) -43.495 -5.000 S -(a) -30.496 -5.000 S -(r) -22.506 -5.000 S -(d) -16.512 -5.000 S -(/) -7.512 -5.000 S -(B) -2.511 -5.000 S -(a) 9.494 -5.000 S -(c) 17.483 -5.000 S -(k) 25.472 -5.000 S -(w) 34.472 -5.000 S -(a) 47.471 -5.000 S -(r) 55.460 -5.000 S -(d) 61.455 -5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -36.520 14.000 S -(l) -23.521 14.000 S -(g) -18.520 14.000 S -(o) -9.520 14.000 S -(r) -0.520 14.000 S -(i) 5.473 14.000 S -(t) 10.474 14.000 S -(h) 15.475 14.000 S -(m) 24.475 14.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 201.000 154.000 0.000 0.000 20.000 185.950 rect -%@EndRect -gsave -246.975 211.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -92.500 5.000 S -(p) -79.500 5.000 S -(d) -70.500 5.000 S -(a) -61.500 5.000 S -(t) -53.511 5.000 S -(e) -48.510 5.000 S -( ) -40.521 5.000 S -(H) -36.021 5.000 S -(M) -23.022 5.000 S -(M) -7.017 5.000 S -( ) 8.987 5.000 S -(P) 13.487 5.000 S -(a) 23.498 5.000 S -(r) 31.487 5.000 S -(a) 37.481 5.000 S -(m) 45.470 5.000 S -(e) 59.471 5.000 S -(t) 67.460 5.000 S -(e) 72.461 5.000 S -(r) 80.451 5.000 S -(s) 86.445 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 106.500 144.500 0.000 0.000 45.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 187.500 144.500 0.000 0.000 45.000 207.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 199.000 0.000 0.000 20.000 86.967 rect -%@EndRect -gsave -242.483 294.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -42.500 5.000 S -(o) -30.494 5.000 S -(n) -21.494 5.000 S -(v) -12.494 5.000 S -(e) -3.494 5.000 S -(r) 4.495 5.000 S -(g) 10.489 5.000 S -(e) 19.489 5.000 S -(d) 27.478 5.000 S -(?) 36.478 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 106.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 104.500 243.500 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 187.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 185.500 243.500 151.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 268.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 266.500 243.500 232.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 266.500 184.500 0.000 0.000 54.000 117.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[58.500 0.000] CP -[0.000 27.000] CP -[58.500 54.000 ] CP -[117.000 27.000 ] CP -[117.000 27.000 58.500 0.000 58.500 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 293.500 301.500 293.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 81.500 400.500 293.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 81.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.500 81.499 400.500 81.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 269.000 325.000 0.000 0.000 20.000 21.999 rect -%@EndRect -gsave -335.999 279.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -10.500 5.000 S -(o) 2.499 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 323.000 258.000 0.000 0.000 20.000 27.993 rect -%@EndRect -gsave -271.996 333.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -13.500 5.000 S -(e) -0.500 5.000 S -(s) 7.488 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.000 360.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.999 358.000 243.000 320.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 372.000 181.000 0.000 0.000 20.000 121.491 rect -%@EndRect -gsave -241.745 382.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -60.500 5.000 S -(s) -49.504 5.000 S -(t) -42.500 5.000 S -(i) -37.499 5.000 S -(m) -32.498 5.000 S -(a) -18.497 5.000 S -(t) -10.507 5.000 S -(e) -5.506 5.000 S -(d) 2.482 5.000 S -( ) 11.482 5.000 S -(H) 15.982 5.000 S -(M) 28.981 5.000 S -(M) 44.986 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 358.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.000 199.000 0.000 0.000 20.000 92.496 rect -%@EndRect -gsave -245.248 49.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -45.500 5.000 S -(n) -39.505 5.000 S -(i) -30.505 5.000 S -(t) -25.504 5.000 S -(i) -20.503 5.000 S -(a) -15.502 5.000 S -(l) -7.513 5.000 S -( ) -2.512 5.000 S -(H) 1.987 5.000 S -(M) 14.986 5.000 S -(M) 30.991 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 25.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/segstore.eps b/HTKBook/HTKFigs/segstore.eps deleted file mode 100644 index d9a4261..0000000 --- a/HTKBook/HTKFigs/segstore.eps +++ /dev/null @@ -1,606 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: segstore.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:16:48 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 429 569 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --31.0 620.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 2034 3350 m 2500 3350 l gs col-1 s gr -% Polyline -n 2091 3409 m 2441 3409 l gs col-1 s gr -% Polyline -n 2091 3466 m 2384 3466 l gs col-1 s gr -% Polyline -n 2150 3525 m 2325 3525 l gs col-1 s gr -% Polyline -n 1916 3116 m 2266 3116 l 2266 3350 l gs col-1 s gr -% Ellipse -n 5591 3491 66 66 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 5709 3725 m 6175 3725 l gs col-1 s gr -% Polyline -n 5766 3784 m 6116 3784 l gs col-1 s gr -% Polyline -n 5766 3841 m 6059 3841 l gs col-1 s gr -% Polyline -n 5825 3900 m 6000 3900 l gs col-1 s gr -% Polyline -n 5591 3491 m 5941 3491 l 5941 3725 l gs col-1 s gr -% Polyline -n 4800 1200 m 5700 1200 l 5700 2100 l 4800 2100 l cp gs col-1 s gr -% Polyline -n 4800 1500 m 5700 1500 l gs col-1 s gr -% Polyline -n 4800 1800 m 5700 1800 l gs col-1 s gr -% Polyline -n 4800 2700 m 5700 2700 l 5700 3600 l 4800 3600 l cp gs col-1 s gr -% Polyline -n 4800 3000 m 5700 3000 l gs col-1 s gr -% Polyline -n 4800 3300 m 5700 3300 l gs col-1 s gr -% Ellipse -n 3525 9300 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 3675 9600 m 4275 9600 l gs col-1 s gr -% Polyline -n 3750 9675 m 4200 9675 l gs col-1 s gr -% Polyline -n 3750 9750 m 4125 9750 l gs col-1 s gr -% Polyline -n 3825 9825 m 4050 9825 l gs col-1 s gr -% Polyline -n 3525 9300 m 3975 9300 l 3975 9600 l gs col-1 s gr -% Polyline -n 2775 5850 m 3675 5850 l 3675 6750 l 2775 6750 l cp gs col-1 s gr -% Polyline -n 2775 6150 m 3675 6150 l gs col-1 s gr -% Polyline -n 2775 6450 m 3675 6450 l gs col-1 s gr -% Polyline -n 2775 8550 m 3675 8550 l 3675 9450 l 2775 9450 l cp gs col-1 s gr -% Polyline -n 2775 8850 m 3675 8850 l gs col-1 s gr -% Polyline -n 2775 9150 m 3675 9150 l gs col-1 s gr -% Ellipse -n 2587 4837 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 2813 4836 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 3037 4837 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 1087 4875 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 1650 8100 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 1725 8400 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 3525 6300 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 3450 9000 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 3562 6600 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 4650 6375 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 900 4725 m 2400 4725 l 2400 5025 l 900 5025 l cp gs col-1 s gr -% Polyline -n 3300 4725 m 4800 4725 l 4800 5025 l 3300 5025 l cp gs col-1 s gr -% Polyline -n 1200 4725 m 1200 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 1500 4725 m 1500 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 1800 4725 m 1800 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 2100 4725 m 2100 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 3600 4725 m 3600 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 3900 4725 m 3900 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 4200 4725 m 4200 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 4500 4725 m 4500 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 4500 7725 m 5700 7725 l 5700 8325 l 4500 8325 l cp gs col-1 s gr -% Polyline -n 4500 8025 m 5700 8025 l gs col-1 s gr -% Polyline -n 4800 7725 m 4800 8325 l gs col-1 s gr -% Polyline -n 5100 7725 m 5100 8325 l gs col-1 s gr -% Polyline -n 5400 7725 m 5400 8325 l gs col-1 s gr -% Polyline -n 4500 8325 m 4800 8325 l 4800 8625 l 4500 8625 l cp gs col-1 s gr -% Polyline -n 4500 6225 m 5100 6225 l 5100 6525 l 4500 6525 l cp gs col-1 s gr -% Polyline -n 4800 6225 m 4800 6525 l gs col-1 s gr -% Polyline -n 675 6750 m 1875 6750 l 1875 8550 l 675 8550 l cp gs col-1 s gr -% Polyline -n 675 7350 m 1875 7350 l gs col-1 s gr -% Polyline -n 675 7650 m 1875 7650 l gs col-1 s gr -% Polyline -n 675 7950 m 1875 7950 l gs col-1 s gr -% Polyline -n 675 8250 m 1875 8250 l gs col-1 s gr -% Polyline -n 675 7050 m 1875 7050 l gs col-1 s gr -% Interp Spline -gs clippath -666 6600 m 668 6723 l 608 6616 l 650 6772 l 708 6757 l cp clip -n 1050 4875 m - 696.8 5305.9 565.5 5512.2 525 5700 curveto - 481.1 5903.7 518.6 6166.2 675 6750 curveto - gs col-1 s gr - gr - -% arrowhead -n 666 6600 m 668 6723 l 608 6616 l 637 6608 l 666 6600 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4516 9087 m 4559 9202 l 4467 9121 l 4559 9254 l 4608 9220 l cp clip - [66.7] 0 sd -n 3450 9000 m - 3851.7 8838.8 4039.2 8801.3 4200 8850 curveto - 4311.5 8883.8 4405.2 8977.5 4575 9225 curveto - gs col-1 s gr - gr - [] 0 sd -% arrowhead -n 4516 9087 m 4559 9202 l 4467 9121 l 4492 9104 l 4516 9087 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2855 5723 m 2784 5824 l 2799 5702 l 2742 5853 l 2798 5875 l cp clip -n 1650 8100 m - 1935.5 8208.3 2066.7 8208.3 2175 8100 curveto - 2896.9 7378.1 1453.1 6196.9 2175 5475 curveto - 2340.0 5310.0 2610.0 5310.0 2775 5475 curveto - 2852.3 5552.3 2852.3 5646.1 2775 5850 curveto - gs col-1 s gr - gr - -% arrowhead -n 2855 5723 m 2784 5824 l 2799 5702 l 2827 5712 l 2855 5723 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2666 8446 m 2752 8535 l 2635 8497 l 2772 8583 l 2804 8533 l cp clip -n 1725 8400 m - 2062.6 8324.5 2212.6 8305.8 2325 8325 curveto - 2418.5 8341.0 2531.0 8397.3 2775 8550 curveto - gs col-1 s gr - gr - -% arrowhead -n 2666 8446 m 2752 8535 l 2635 8497 l 2650 8472 l 2666 8446 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4366 6157 m 4473 6217 l 4350 6215 l 4507 6258 l 4522 6200 l cp clip -n 3525 6300 m - 3863.2 6190.2 4013.2 6152.7 4125 6150 curveto - 4194.2 6148.4 4287.9 6167.1 4500 6225 curveto - gs col-1 s gr - gr - -% arrowhead -n 4366 6157 m 4473 6217 l 4350 6215 l 4358 6186 l 4366 6157 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -3326 8439 m 3238 8526 l 3275 8408 l 3192 8547 l 3243 8578 l cp clip -n 3600 6600 m - 3732.9 7060.5 3770.4 7266.7 3750 7425 curveto - 3719.8 7659.3 3588.5 7940.6 3225 8550 curveto - gs col-1 s gr - gr - -% arrowhead -n 3326 8439 m 3238 8526 l 3275 8408 l 3300 8424 l 3326 8439 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4428 7593 m 4482 7704 l 4382 7632 l 4487 7756 l 4533 7717 l cp clip -n 4650 6375 m - 4280.7 6634.5 4149.4 6784.5 4125 6975 curveto - 4099.3 7175.3 4193.1 7362.8 4500 7725 curveto - gs col-1 s gr - gr - -% arrowhead -n 4428 7593 m 4482 7704 l 4382 7632 l 4405 7613 l 4428 7593 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -975 4650 m -gs 1 -1 sc (0) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1275 4650 m -gs 1 -1 sc (1) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1575 4650 m -gs 1 -1 sc (2) col-1 sh gr -% Ellipse -n 1916 3116 66 66 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -/Times-Roman ff 180.00 scf sf -1875 4650 m -gs 1 -1 sc (3) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4575 5850 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2175 4650 m -gs 1 -1 sc (4) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3300 4650 m -gs 1 -1 sc (95) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3600 4650 m -gs 1 -1 sc (96) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3900 4650 m -gs 1 -1 sc (97) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4200 4650 m -gs 1 -1 sc (98) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4500 4650 m -gs 1 -1 sc (99) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 6375 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 6675 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Bold ff 180.00 scf sf -825 6600 m -gs 1 -1 sc (Sequence) col-1 sh gr -/Times-Bold ff 180.00 scf sf -2925 5700 m -gs 1 -1 sc (ItemBlock) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4725 7575 m -gs 1 -1 sc (fv[SMAX]) col-1 sh gr -/Times-Bold ff 180.00 scf sf -4500 7350 m -gs 1 -1 sc (Feature Vector) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 6975 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 8175 m -gs 1 -1 sc (hd) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 8475 m -gs 1 -1 sc (tl) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 7875 m -gs 1 -1 sc (blkSize = 2) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 6075 m -gs 1 -1 sc (used = 2) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 9075 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 9375 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 8775 m -gs 1 -1 sc (used = 1) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 7275 m -gs 1 -1 sc (nItems = 3) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 7575 m -gs 1 -1 sc (nFree = 1) col-1 sh gr -% Ellipse -n 1875 2850 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 4012 2850 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 4012 3150 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 5475 3150 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 5559 1650 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 5550 1950 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 600 1200 m 2100 1200 l 2100 3300 l 600 3300 l cp gs col-1 s gr -% Polyline -n 600 1500 m 2100 1500 l gs col-1 s gr -% Polyline -n 600 1800 m 2100 1800 l gs col-1 s gr -% Polyline -n 600 2100 m 2100 2100 l gs col-1 s gr -% Polyline -n 600 2400 m 2100 2400 l gs col-1 s gr -% Polyline -n 600 2700 m 2100 2700 l gs col-1 s gr -% Polyline -n 600 3000 m 2100 3000 l gs col-1 s gr -% Polyline -n 600 3000 m 2100 3000 l gs col-1 s gr -% Polyline -n 3000 1500 m 4200 1500 l 4200 3300 l 3000 3300 l cp gs col-1 s gr -% Polyline -n 3000 2100 m 4200 2100 l gs col-1 s gr -% Polyline -n 3000 2400 m 4200 2400 l gs col-1 s gr -% Polyline -n 3000 2700 m 4200 2700 l gs col-1 s gr -% Polyline -n 3000 3000 m 4200 3000 l gs col-1 s gr -% Polyline -n 3000 1800 m 4200 1800 l gs col-1 s gr -% Interp Spline -gs clippath -6322 3752 m 6298 3873 l 6262 3755 l 6271 3917 l 6331 3913 l cp clip - [66.7] 0 sd -n 5475 3150 m - 5749.1 3022.0 5880.3 3003.2 6000 3075 curveto - 6198.1 3193.8 6273.1 3400.0 6300 3900 curveto - gs col-1 s gr - gr - [] 0 sd -% arrowhead -n 6322 3752 m 6298 3873 l 6262 3755 l 6292 3753 l 6322 3752 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -5805 2593 m 5714 2677 l 5755 2560 l 5667 2696 l 5717 2729 l cp clip -n 5475 1950 m - 5796.1 1761.6 5927.3 1724.1 6000 1800 curveto - 6126.3 1931.9 6051.3 2156.9 5700 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 5805 2593 m 5714 2677 l 5755 2560 l 5780 2577 l 5805 2593 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4905 1093 m 4814 1177 l 4854 1060 l 4767 1196 l 4817 1229 l cp clip -n 3975 2850 m - 4219.7 2939.3 4332.2 2939.3 4425 2850 curveto - 4961.4 2333.8 3963.6 1416.2 4500 900 curveto - 4603.1 800.8 4796.9 800.0 4875 900 curveto - 4923.3 961.9 4904.6 1036.9 4800 1200 curveto - gs col-1 s gr - gr - -% arrowhead -n 4905 1093 m 4814 1177 l 4854 1060 l 4880 1076 l 4905 1093 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4715 2823 m 4789 2724 l 4770 2847 l 4833 2698 l 4778 2674 l cp clip -n 4050 3150 m - 4300.4 3196.6 4412.9 3196.6 4500 3150 curveto - 4604.8 3093.9 4679.8 2981.4 4800 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 4715 2823 m 4789 2724 l 4770 2847 l 4742 2835 l 4715 2823 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2963 1355 m 2988 1475 l 2909 1381 l 2979 1527 l 3034 1500 l cp clip -n 1875 2850 m - 2173.7 2885.2 2305.0 2866.5 2400 2775 curveto - 2800.7 2389.3 2329.4 1218.6 2700 1125 curveto - 2779.6 1104.9 2854.6 1198.6 3000 1500 curveto - gs col-1 s gr - gr - -% arrowhead -n 2963 1355 m 2988 1475 l 2909 1381 l 2936 1368 l 2963 1355 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -858 4581 m 887 4701 l 805 4609 l 880 4752 l 934 4724 l cp clip -n 5550 1575 m - 6188.6 1483.2 6469.8 1520.7 6675 1725 curveto - 7204.3 2251.9 7493.6 3244.6 6975 3900 curveto - 6227.7 4844.5 4547.0 4165.7 3825 4200 curveto - 3140.5 4232.5 1533.3 3383.3 825 4200 curveto - 731.1 4308.3 749.8 4439.5 900 4725 curveto - gs col-1 s gr - gr - -% arrowhead -n 858 4581 m 887 4701 l 805 4609 l 832 4595 l 858 4581 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -750 2625 m -gs 1 -1 sc (hasVq = FALSE) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 2325 m -gs 1 -1 sc (hasfv = TRUE) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 2025 m -gs 1 -1 sc (o) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 1425 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 2925 m -gs 1 -1 sc (fvSegs) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 3225 m -gs 1 -1 sc (vqSegs) col-1 sh gr -/Times-Bold ff 180.00 scf sf -975 1050 m -gs 1 -1 sc (SegStore) col-1 sh gr -/Times-Bold ff 180.00 scf sf -3225 1350 m -gs 1 -1 sc (Sequence) col-1 sh gr -/Times-Bold ff 180.00 scf sf -4950 1050 m -gs 1 -1 sc (ItemBlock) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 1725 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2925 m -gs 1 -1 sc (hd) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 3225 m -gs 1 -1 sc (tl) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2625 m -gs 1 -1 sc (blkSize = 100) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 1425 m -gs 1 -1 sc (used = 100) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 1725 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 2025 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 3225 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 3525 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 2925 m -gs 1 -1 sc (used = 34) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2025 m -gs 1 -1 sc (nItems = 134) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2325 m -gs 1 -1 sc (nFree = 66) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 1725 m -gs 1 -1 sc (segLen = 2) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4575 6150 m -gs 1 -1 sc (0) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 6150 m -gs 1 -1 sc (1) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2475 4425 m -gs 1 -1 sc (items) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/sequence.eps b/HTKBook/HTKFigs/sequence.eps deleted file mode 100644 index 050504a..0000000 --- a/HTKBook/HTKFigs/sequence.eps +++ /dev/null @@ -1,326 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: sequence.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 17:44:46 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.00 -%%Orientation: Portrait -%%BoundingBox: 0 0 362 238 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --143.0 307.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06000 0.06000 sc -/Times-Roman ff 180.00 scf sf -2700 2925 m -gs 1 -1 sc (nItems = 11) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 2625 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 3225 m -gs 1 -1 sc (nFree = 4) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 3525 m -gs 1 -1 sc (blkSize = 5) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 3825 m -gs 1 -1 sc (hd) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 4125 m -gs 1 -1 sc (tl) col-1 sh gr -7.500 slw -% Polyline -n 6900 4200 m 8400 4200 l 8400 4500 l 6900 4500 l cp gs col-1 s gr -% Polyline -n 7200 4200 m 7200 4500 l gs col-1 s gr -% Polyline -n 7500 4200 m 7500 4500 l gs col-1 s gr -% Polyline -n 7800 4200 m 7800 4500 l gs col-1 s gr -% Polyline -n 8100 4200 m 8100 4500 l gs col-1 s gr -% Polyline -n 6900 1800 m 8400 1800 l 8400 2100 l 6900 2100 l cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7200 1800 m 7200 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7500 1800 m 7500 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7800 1800 m 7800 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 8100 1800 m 8100 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6900 3000 m 8400 3000 l 8400 3300 l 6900 3300 l cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7200 3000 m 7200 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7500 3000 m 7500 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7800 3000 m 7800 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 8100 3000 m 8100 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Ellipse -n 3750 3750 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 3781 4050 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 4381 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 3150 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 1950 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 2250 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 3450 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 4650 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 4800 1500 m 6000 1500 l 6000 2400 l 4800 2400 l cp gs col-1 s gr -% Polyline -n 5175 1500 m 5175 1500 l 5175 1500 l 5175 1500 l cp gs col-1 s gr -% Polyline -n 4800 2700 m 6000 2700 l 6000 3600 l 4800 3600 l cp gs col-1 s gr -% Polyline -n 4800 3900 m 6000 3900 l 6000 4800 l 4800 4800 l cp gs col-1 s gr -% Polyline -n 2400 2400 m 3975 2400 l 3975 4200 l 2400 4200 l cp gs col-1 s gr -% Polyline -n 4800 1800 m 6000 1800 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -5100 4125 m -gs 1 -1 sc (used = 1) col-1 sh gr -% Polyline -n 4800 2100 m 6000 2100 l gs col-1 s gr -% Polyline -n 4800 3000 m 6000 3000 l gs col-1 s gr -% Polyline -n 4800 3300 m 6000 3300 l gs col-1 s gr -% Polyline -n 4800 4200 m 6000 4200 l gs col-1 s gr -% Polyline -n 4800 4500 m 6000 4500 l gs col-1 s gr -% Polyline -n 5850 4650 m 6450 4650 l 6450 4950 l gs col-1 s gr -% Polyline -n 6225 5025 m 6675 5025 l gs col-1 s gr -% Polyline -n 6375 5100 m 6525 5100 l gs col-1 s gr -% Polyline -n 6150 4950 m 6825 4950 l gs col-1 s gr -% Polyline -gs clippath -6750 1791 m 6873 1803 l 6759 1850 l 6919 1828 l 6911 1768 l cp clip -n 5850 1950 m 6900 1800 l gs 0.75 setgray ef gr gs col-1 s gr gr - -% arrowhead -n 6750 1791 m 6873 1803 l 6759 1850 l 6754 1821 l 6750 1791 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6753 3012 m 6876 3024 l 6762 3071 l 6922 3049 l 6914 2989 l cp clip -n 5853 3171 m 6903 3021 l gs 0.75 setgray ef gr gs col-1 s gr gr - -% arrowhead -n 6753 3012 m 6876 3024 l 6762 3071 l 6757 3042 l 6753 3012 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6753 4212 m 6876 4224 l 6762 4271 l 6922 4249 l 6914 4189 l cp clip -n 5853 4371 m 6903 4221 l gs 0.75 setgray ef gr gs col-1 s gr gr - -% arrowhead -n 6753 4212 m 6876 4224 l 6762 4271 l 6757 4242 l 6753 4212 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 2400 2700 m 3975 2700 l gs col-1 s gr -% Polyline -n 2400 3000 m 3975 3000 l gs col-1 s gr -% Polyline -n 2400 3300 m 3975 3300 l gs col-1 s gr -% Polyline -n 2400 3600 m 3975 3600 l gs col-1 s gr -% Polyline -n 2400 3900 m 3975 3900 l gs col-1 s gr -% Polyline -n 6900 4200 m 7200 4200 l 7200 4500 l 6900 4500 l cp gs col7 0.75 shd ef gr gs col-1 s gr -% Interp Spline -gs clippath -4711 1379 m 4779 1481 l 4671 1423 l 4791 1532 l 4831 1488 l cp clip -n 3750 3750 m - 4094.2 3356.7 4225.5 3169.2 4275 3000 curveto - 4404.9 2555.9 3777.5 1473.4 4200 1200 curveto - 4318.0 1123.6 4468.0 1198.6 4800 1500 curveto - gs col-1 s gr - gr - -% arrowhead -n 4711 1379 m 4779 1481 l 4671 1423 l 4691 1401 l 4711 1379 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4676 3816 m 4775 3889 l 4653 3872 l 4802 3933 l 4825 3878 l cp clip -n 3750 4050 m - 3977.7 3844.0 4090.2 3769.0 4200 3750 curveto - 4325.6 3728.2 4475.6 3765.7 4800 3900 curveto - gs col-1 s gr - gr - -% arrowhead -n 4676 3816 m 4775 3889 l 4653 3872 l 4664 3844 l 4676 3816 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6137 2638 m 6021 2684 l 6101 2589 l 5970 2685 l 6005 2733 l cp clip -n 5850 2250 m - 6369.4 2056.9 6556.9 2019.4 6600 2100 curveto - 6647.9 2189.4 6497.9 2339.4 6000 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 6137 2638 m 6021 2684 l 6101 2589 l 6119 2614 l 6137 2638 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6140 3852 m 6024 3898 l 6104 3803 l 5973 3899 l 6008 3947 l cp clip -n 5853 3464 m - 6372.4 3270.9 6559.9 3233.4 6603 3314 curveto - 6650.9 3403.4 6500.9 3553.4 6003 3914 curveto - gs col-1 s gr - gr - -% arrowhead -n 6140 3852 m 6024 3898 l 6104 3803 l 6122 3828 l 6140 3852 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -5100 2025 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 2325 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 3225 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 4425 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 3525 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 4725 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 2925 m -gs 1 -1 sc (used = 5) col-1 sh gr -/Times-Roman ff 180.00 scf sf -7425 1575 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Bold ff 180.00 scf sf -2850 2250 m -gs 1 -1 sc (Sequence) col-1 sh gr -/Times-Bold ff 180.00 scf sf -5025 1350 m -gs 1 -1 sc (ItemBlock) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 1725 m -gs 1 -1 sc (used = 5) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/softarch.eps b/HTKBook/HTKFigs/softarch.eps deleted file mode 100644 index b579eb8..0000000 --- a/HTKBook/HTKFigs/softarch.eps +++ /dev/null @@ -1,481 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: softarch.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 416 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 416 0 lineto 416 353 lineto closepath clip newpath --179.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/step1.eps b/HTKBook/HTKFigs/step1.eps deleted file mode 100644 index 5e81a7f..0000000 --- a/HTKBook/HTKFigs/step1.eps +++ /dev/null @@ -1,1345 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step1.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/17/95 6:54:40 p.m. -%%BoundingBox: 45.279 632.122 118.279 750.500 -%%QDBoundingBox: 45.279 41.500 118.279 159.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 45.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.500 50.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -83.157 55.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -22.331 -3.000 S -(r) -13.665 -3.000 S -(a) -9.669 -3.000 S -(m) -4.343 -3.000 S -(m) 4.990 -3.000 S -(a) 14.324 -3.000 S -(r) 19.650 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -grestore -restore -save -gsave -83.157 55.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -10.144 10.000 S -(r) -4.743 10.000 S -(a) 0.657 10.000 S -(m) 6.058 10.000 S -grestore -restore -save -gsave -83.157 55.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.377 45.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 55.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -83.657 146.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -23.666 -3.000 S -(o) -12.340 -3.000 S -(r) -6.340 -3.000 S -(d) -2.344 -3.000 S -( ) 3.655 -3.000 S -(N) 6.655 -3.000 S -(e) 15.321 -3.000 S -(t) 20.647 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.340 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 55.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -83.657 146.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -13.344 10.000 S -(d) -7.943 10.000 S -(n) -2.542 10.000 S -(e) 2.858 10.000 S -(t) 8.259 10.000 S -grestore -restore -save -gsave -83.657 146.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.659 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.377 68.779 0.000 0.000 12.000 31.954 rect -%@EndRect -gsave -84.756 101.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(P) -8.498 3.000 S -7.000 (_Times-Roman) fess -(A) -2.937 3.000 S -(R) 2.478 3.000 S -(S) 7.481 3.000 S -(E) 11.652 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 54.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.779 86.211 81.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.779 131.211 81.779 114.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step10.eps b/HTKBook/HTKFigs/step10.eps deleted file mode 100644 index 917ca18..0000000 --- a/HTKBook/HTKFigs/step10.eps +++ /dev/null @@ -1,314 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: step10.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 284 450 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 450 moveto 0 0 lineto 284 0 lineto 284 450 lineto closepath clip newpath --65.0 578.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hypen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/Courier /Courier-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -30.000 slw -n 1230 2175 m 1125 2175 1125 2745 105 arcto 4 {pop} repeat - 1125 2850 2820 2850 105 arcto 4 {pop} repeat - 2925 2850 2925 2280 105 arcto 4 {pop} repeat - 2925 2175 1230 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 4080 2175 m 3975 2175 3975 2745 105 arcto 4 {pop} repeat - 3975 2850 5670 2850 105 arcto 4 {pop} repeat - 5775 2850 5775 2280 105 arcto 4 {pop} repeat - 5775 2175 4080 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 1350 3450 m 2700 3450 l 2700 4275 l 1350 4275 l - cp gs col-1 s gr -% Polyline -n 1335 5550 m 1200 5550 1200 6465 135 arcto 4 {pop} repeat - 1200 6600 2790 6600 135 arcto 4 {pop} repeat - 2925 6600 2925 5685 135 arcto 4 {pop} repeat - 2925 5550 1335 5550 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 1200 7275 m 2925 7275 l 2925 7950 l 1200 7950 l - cp gs col-1 s gr -% Polyline -n 1335 8550 m 1200 8550 1200 9465 135 arcto 4 {pop} repeat - 1200 9600 2790 9600 135 arcto 4 {pop} repeat - 2925 9600 2925 8685 135 arcto 4 {pop} repeat - 2925 8550 1335 8550 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 4080 4500 m 3975 4500 3975 5070 105 arcto 4 {pop} repeat - 3975 5175 5670 5175 105 arcto 4 {pop} repeat - 5775 5175 5775 4605 105 arcto 4 {pop} repeat - 5775 4500 4080 4500 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 4080 5550 m 3975 5550 3975 6120 105 arcto 4 {pop} repeat - 3975 6225 5670 6225 105 arcto 4 {pop} repeat - 5775 6225 5775 5655 105 arcto 4 {pop} repeat - 5775 5550 4080 5550 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -2910 7515 m 2910 7635 l 3197 7635 l 2957 7575 l 3197 7515 l cp -eoclip -n 4875 6225 m 4875 7575 l - 2925 7575 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3197 7515 m 2957 7575 l 3197 7635 l 3197 7515 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 7290 m 2085 7290 l 2085 7003 l 2025 7243 l 1965 7003 l cp -eoclip -n 2025 6600 m - 2025 7275 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 7003 m 2025 7243 l 2085 7003 l 1965 7003 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 5565 m 2085 5565 l 2085 5278 l 2025 5518 l 1965 5278 l cp -eoclip -n 2025 4275 m - 2025 5550 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 5278 m 2025 5518 l 2085 5278 l 1965 5278 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 8565 m 2085 8565 l 2085 8278 l 2025 8518 l 1965 8278 l cp -eoclip -n 2025 7950 m - 2025 8550 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 8278 m 2025 8518 l 2085 8278 l 1965 8278 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2685 3615 m 2685 3735 l 2972 3735 l 2732 3675 l 2972 3615 l cp -eoclip -n 4875 2850 m 4875 3675 l - 2700 3675 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2972 3615 m 2732 3675 l 2972 3735 l 2972 3615 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 3465 m 2085 3465 l 2085 3178 l 2025 3418 l 1965 3178 l cp -eoclip -n 2025 2850 m - 2025 3450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 3178 m 2025 3418 l 2085 3178 l 1965 3178 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4111 5610 m 4165 5503 l 3908 5375 l 4096 5536 l 3854 5482 l cp -eoclip -n 2475 4275 m 2475 4725 l - 4125 5550 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3854 5482 m 4096 5536 l 3908 5375 l 3854 5482 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2685 3990 m 2685 4110 l 2972 4110 l 2732 4050 l 2972 3990 l cp -eoclip -n 4875 4500 m 4875 4050 l - 2700 4050 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2972 3990 m 2732 4050 l 2972 4110 l 2972 3990 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman-iso ff 300.00 scf sf -1425 5908 m -gs 1 -1 sc (Tied-State) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 6223 m -gs 1 -1 sc (Triphones) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 7725 m -gs 1 -1 sc (HR) col-1 sh gr -/Times-Roman-iso ff 240.00 scf sf -1800 7725 m -gs 1 -1 sc (EST \(x2\)) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 8908 m -gs 1 -1 sc (Tied-State) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 9223 m -gs 1 -1 sc (Triphones) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -4275 4800 m -gs 1 -1 sc (Edit Script) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1575 3975 m -gs 1 -1 sc (HHE) col-1 sh gr -/Times-Roman-iso ff 240.00 scf sf -2175 3975 m -gs 1 -1 sc (D) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 2475 m -gs 1 -1 sc (Triphones) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -4275 2475 m -gs 1 -1 sc (State Occs) col-1 sh gr -/Courier-iso ff 240.00 scf sf -1575 9492 m -gs 1 -1 sc (\(hmm15\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -1575 6492 m -gs 1 -1 sc (\(hmm13\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -1575 2775 m -gs 1 -1 sc (\(hmm12\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -4200 6150 m -gs 1 -1 sc (\(tiedlist\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -4200 5100 m -gs 1 -1 sc (\(tree.hed\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -4350 2775 m -gs 1 -1 sc (\(stats\)) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -4200 5850 m -gs 1 -1 sc (HMM List) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/step11.eps b/HTKBook/HTKFigs/step11.eps deleted file mode 100644 index 25b2a7a..0000000 --- a/HTKBook/HTKFigs/step11.eps +++ /dev/null @@ -1,2121 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step11.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/22/95 4:24:10 p.m. -%%BoundingBox: 50.610 659.122 509.886 786.811 -%%QDBoundingBox: 50.610 5.188 509.886 132.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.544 167.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -184.446 109.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(V) -8.498 3.000 S -7.000 (_Times-Roman) fess -(I) -1.277 3.000 S -(T) 1.220 3.000 S -(E) 5.801 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 153.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 5.688 54.890 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.811 50.610 0.000 0.000 50.000 82.778 rect -%@EndRect -gsave -92.000 34.811 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -24.490 -15.000 S -(i) -17.160 -15.000 S -(e) -13.826 -15.000 S -(d) -8.500 -15.000 S -(-) -2.500 -15.000 S -(S) 1.496 -15.000 S -(t) 8.169 -15.000 S -(a) 11.503 -15.000 S -(t) 16.830 -15.000 S -(e) 20.164 -15.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -23.828 -2.000 S -(r) -16.498 -2.000 S -(i) -12.501 -2.000 S -(p) -9.167 -2.000 S -(h) -3.167 -2.000 S -(o) 2.832 -2.000 S -(n) 8.832 -2.000 S -(e) 14.832 -2.000 S -(s) 20.158 -2.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.332 11.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.811 50.610 0.000 0.000 50.000 82.778 rect -%@EndRect -gsave -92.000 34.811 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -13.002 11.000 S -(m) -7.601 11.000 S -(m) -2.200 11.000 S -(1) 3.200 11.000 S -(5) 8.601 11.000 S -grestore -restore -save -gsave -92.000 34.811 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.002 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 234.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 233.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -273.025 108.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -27.467 -9.000 S -(e) -19.463 -9.000 S -(c) -14.137 -9.000 S -(o) -8.811 -9.000 S -(g) -2.811 -9.000 S -(n) 3.188 -9.000 S -(i) 9.188 -9.000 S -(s) 12.522 -9.000 S -(e) 17.192 -9.000 S -(d) 22.519 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -15.470 4.000 S -(o) -4.144 4.000 S -(r) 1.855 4.000 S -(d) 5.852 4.000 S -(s) 11.852 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -29.808 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 233.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -273.025 108.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(r) -26.478 17.000 S -(e) -21.077 17.000 S -(c) -15.676 17.000 S -(o) -10.275 17.000 S -(u) -4.875 17.000 S -(t) 0.525 17.000 S -(.) 5.926 17.000 S -(m) 11.327 17.000 S -(l) 16.728 17.000 S -(f) 22.129 17.000 S -grestore -restore -save -gsave -273.025 108.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 27.530 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.612 109.377 126.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.612 109.377 207.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 14.688 144.890 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 140.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -182.000 37.311 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -23.324 -8.000 S -(o) -11.998 -8.000 S -(r) -5.998 -8.000 S -(d) -2.001 -8.000 S -( ) 3.998 -8.000 S -(N) 6.998 -8.000 S -(e) 15.664 -8.000 S -(t) 20.990 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.332 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 140.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -182.000 37.311 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -13.002 5.000 S -(d) -7.601 5.000 S -(n) -2.200 5.000 S -(e) 3.200 5.000 S -(t) 8.601 5.000 S -grestore -restore -save -gsave -182.000 37.311 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.002 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 14.688 225.890 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 221.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -263.000 37.311 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.158 -8.000 S -(i) -16.492 -8.000 S -(c) -13.158 -8.000 S -(t) -7.832 -8.000 S -(i) -4.498 -8.000 S -(o) -1.164 -8.000 S -(n) 4.835 -8.000 S -(a) 10.835 -8.000 S -(r) 16.162 -8.000 S -(y) 20.158 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -13.631 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 221.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -263.000 37.311 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.301 5.000 S -(i) -4.900 5.000 S -(c) 0.500 5.000 S -(t) 5.900 5.000 S -grestore -restore -save -gsave -263.000 37.311 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.301 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 54.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 53.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -93.025 108.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.973 -9.000 S -(e) -15.643 -9.000 S -(s) -10.316 -9.000 S -(t) -5.646 -9.000 S -( ) -2.312 -9.000 S -(F) 0.687 -9.000 S -(i) 7.360 -9.000 S -(l) 10.694 -9.000 S -(e) 14.028 -9.000 S -(s) 19.354 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -20.638 4.000 S -(i) -13.308 4.000 S -(s) -9.974 4.000 S -(t) -5.304 4.000 S -(e) -1.970 4.000 S -(d) 3.355 4.000 S -( ) 9.355 4.000 S -(i) 12.355 4.000 S -(n) 15.689 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -24.407 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 53.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -93.025 108.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -21.077 17.000 S -(e) -15.676 17.000 S -(s) -10.275 17.000 S -(t) -4.875 17.000 S -(.) 0.525 17.000 S -(s) 5.926 17.000 S -(c) 11.327 17.000 S -(p) 16.728 17.000 S -grestore -restore -save -gsave -93.025 108.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 22.129 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.779 69.377 90.779 51.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.779 95.211 162.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.779 95.211 180.779 51.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.779 95.211 198.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.779 69.377 90.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 69.377 198.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 69.377 261.779 51.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.544 342.779 0.000 0.000 12.000 51.333 rect -%@EndRect -gsave -368.446 109.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -24.720 3.000 S -(R) -17.498 3.000 S -7.000 (_Times-Roman) fess -(E) -10.828 3.000 S -(S) -6.247 3.000 S -(U) -2.076 3.000 S -(L) 3.339 3.000 S -(T) 7.921 3.000 S -(S) 12.502 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 333.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -414.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 413.612 109.377 387.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -333.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 332.612 109.377 306.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 324.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.500 322.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -362.025 36.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -23.787 -9.000 S -(e) -15.783 -9.000 S -(f) -10.457 -9.000 S -(e) -6.461 -9.000 S -(r) -1.135 -9.000 S -(e) 2.860 -9.000 S -(n) 8.187 -9.000 S -(c) 14.187 -9.000 S -(e) 19.513 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.797 4.000 S -(r) -24.467 4.000 S -(a) -20.471 4.000 S -(n) -15.145 4.000 S -(s) -9.145 4.000 S -(c) -4.475 4.000 S -(r) 0.851 4.000 S -(i) 4.847 4.000 S -(p) 8.181 4.000 S -(t) 14.181 4.000 S -(i) 17.515 4.000 S -(o) 20.849 4.000 S -(n) 26.849 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -32.509 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.500 322.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -362.025 36.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -29.178 17.000 S -(e) -23.778 17.000 S -(s) -18.377 17.000 S -(t) -12.976 17.000 S -(r) -7.575 17.000 S -(e) -2.174 17.000 S -(f) 3.226 17.000 S -(.) 8.627 17.000 S -(m) 14.028 17.000 S -(l) 19.428 17.000 S -(f) 24.829 17.000 S -grestore -restore -save -gsave -362.025 36.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.230 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 95.211 360.779 60.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.000 421.000 0.000 0.000 27.000 88.886 rect -%@EndRect -gsave -465.443 109.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -43.500 -4.000 S -(e) -35.496 -4.000 S -(s) -30.169 -4.000 S -(u) -25.500 -4.000 S -(l) -19.500 -4.000 S -(t) -16.166 -4.000 S -(s) -12.832 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.500 9.000 S -(u) -36.826 9.000 S -(m) -30.826 9.000 S -(m) -21.492 9.000 S -(a) -12.158 9.000 S -(r) -6.832 9.000 S -(y) -2.835 9.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step2.eps b/HTKBook/HTKFigs/step2.eps deleted file mode 100644 index f8bacef..0000000 --- a/HTKBook/HTKFigs/step2.eps +++ /dev/null @@ -1,2054 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step2.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 7:43:26 a.m. -%%BoundingBox: 63.279 569.122 367.815 750.122 -%%QDBoundingBox: 63.279 41.877 367.815 222.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 68.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -101.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -16.003 -3.000 S -(I) -8.673 -3.000 S -(M) -4.677 -3.000 S -(I) 5.992 -3.000 S -(T) 9.988 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -19.346 10.000 S -(r) -12.672 10.000 S -(o) -8.676 10.000 S -(m) -2.676 10.000 S -(p) 6.657 10.000 S -(t) 12.657 10.000 S -(s) 15.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 73.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -101.657 145.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -24.337 -3.000 S -(o) -13.011 -3.000 S -(r) -7.011 -3.000 S -(d) -3.015 -3.000 S -( ) 2.984 -3.000 S -(L) 5.984 -3.000 S -(i) 13.314 -3.000 S -(s) 16.648 -3.000 S -(t) 21.318 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.340 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 73.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -101.657 145.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -13.344 10.000 S -(l) -7.943 10.000 S -(i) -2.542 10.000 S -(s) 2.858 10.000 S -(t) 8.259 10.000 S -grestore -restore -save -gsave -101.657 145.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.659 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.377 81.835 0.000 0.000 12.000 39.780 rect -%@EndRect -gsave -101.725 101.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.664 3.000 S -(o) -15.773 3.000 S -(r) -10.773 3.000 S -(t) -7.443 3.000 S -( ) -4.664 3.000 S -(|) -2.164 3.000 S -( ) -0.162 3.000 S -(u) 2.337 3.000 S -(n) 7.337 3.000 S -(i) 12.337 3.000 S -(q) 15.115 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 72.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.779 86.211 99.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.779 131.211 99.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.377 288.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 284.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -326.157 145.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -25.173 -3.000 S -(d) -17.843 -3.000 S -(i) -11.843 -3.000 S -(t) -8.509 -3.000 S -( ) -5.175 -3.000 S -(S) -2.175 -3.000 S -(c) 4.498 -3.000 S -(r) 9.824 -3.000 S -(i) 13.820 -3.000 S -(p) 17.154 -3.000 S -(t) 23.154 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -30.342 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 284.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -326.157 145.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -26.346 10.000 S -(l) -20.945 10.000 S -(o) -15.544 10.000 S -(b) -10.144 10.000 S -(a) -4.743 10.000 S -(l) 0.657 10.000 S -(.) 6.058 10.000 S -(d) 11.459 10.000 S -(e) 16.860 10.000 S -(d) 22.261 10.000 S -grestore -restore -save -gsave -326.157 145.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 27.662 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.377 209.779 0.000 0.000 12.000 34.167 rect -%@EndRect -gsave -226.863 146.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.720 3.000 S -(D) -9.498 3.000 S -(M) -2.277 3.000 S -7.000 (_Times-Roman) fess -(A) 6.614 3.000 S -(N) 12.030 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 198.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 153.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -25.841 -3.000 S -(E) -17.837 -3.000 S -(E) -10.507 -3.000 S -(P) -3.177 -3.000 S -( ) 3.496 -3.000 S -(D) 6.496 -3.000 S -(i) 15.162 -3.000 S -(c) 18.496 -3.000 S -(t) 23.822 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -10.144 10.000 S -(e) -4.743 10.000 S -(e) 0.657 10.000 S -(p) 6.058 10.000 S -grestore -restore -save -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 234.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 239.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -272.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -27.833 -3.000 S -(a) -19.167 -3.000 S -(m) -13.841 -3.000 S -(e) -4.507 -3.000 S -(s) 0.818 -3.000 S -( ) 5.488 -3.000 S -(D) 8.488 -3.000 S -(i) 17.154 -3.000 S -(c) 20.488 -3.000 S -(t) 25.814 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.840 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 239.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -272.157 56.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -12.844 10.000 S -(a) -7.443 10.000 S -(m) -2.042 10.000 S -(e) 3.358 10.000 S -(s) 8.759 10.000 S -grestore -restore -save -gsave -272.157 56.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.159 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 132.377 moveto -/Triangular 8.224 7.049 false 254.072 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.458 131.256 189.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.779 132.377 moveto -/Triangular 8.224 7.049 false 293.219 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 244.239 131.305 270.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.779 146.377 moveto -/Triangular 8.224 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.946 146.377 288.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.612 146.377 135.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.377 189.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 194.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -227.157 209.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.000 -3.000 S -(i) -16.334 -3.000 S -(c) -13.000 -3.000 S -(t) -7.674 -3.000 S -(i) -4.340 -3.000 S -(o) -1.006 -3.000 S -(n) 4.993 -3.000 S -(a) 10.993 -3.000 S -(r) 16.319 -3.000 S -(y) 20.315 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 194.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -227.157 209.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.144 10.000 S -(i) -4.743 10.000 S -(c) 0.657 10.000 S -(t) 6.058 10.000 S -grestore -restore -save -gsave -227.157 209.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 195.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 194.211 225.779 159.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 146.377 171.779 146.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 137.377 152.779 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.500 159.500 0.000 0.000 12.000 5.639 rect -%@EndRect -gsave -162.319 145.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(+) -2.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.500 86.500 0.000 0.000 23.000 26.098 rect -%@EndRect -gsave -99.549 190.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -8.559 -2.000 S -(e) -2.450 -2.000 S -(s) 1.987 -2.000 S -(t) 5.879 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -13.000 9.000 S -(o) -5.778 9.000 S -(c) -0.778 9.000 S -(a) 3.660 9.000 S -(b) 8.098 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 160.779 189.377 135.779 189.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.779 155.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 161.779 156.544 161.779 189.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step3.eps b/HTKBook/HTKFigs/step3.eps deleted file mode 100644 index 9eb6a7f..0000000 --- a/HTKBook/HTKFigs/step3.eps +++ /dev/null @@ -1,1972 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step3.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/17/95 5:23:27 p.m. -%%BoundingBox: 26.779 479.122 235.279 750.122 -%%QDBoundingBox: 26.779 41.877 235.279 312.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 68.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -101.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -16.003 -3.000 S -(I) -8.673 -3.000 S -(M) -4.677 -3.000 S -(I) 5.992 -3.000 S -(T) 9.988 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -19.346 10.000 S -(r) -12.672 10.000 S -(o) -8.676 10.000 S -(m) -2.676 10.000 S -(p) 6.657 10.000 S -(t) 12.657 10.000 S -(s) 15.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 150.377 108.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 149.500 118.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -146.657 163.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -21.832 -3.000 S -(e) -14.502 -3.000 S -(r) -9.176 -3.000 S -(m) -5.180 -3.000 S -(i) 4.153 -3.000 S -(n) 7.487 -3.000 S -(a) 13.487 -3.000 S -(l) 18.813 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -20.505 10.000 S -(i) -9.179 10.000 S -(n) -5.845 10.000 S -(d) 0.154 10.000 S -(o) 6.154 10.000 S -(w) 12.154 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.779 150.377 moveto -/Triangular 8.224 7.049 false 251.583 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.410 149.271 99.779 69.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 104.377 173.779 0.000 0.000 12.000 30.002 rect -%@EndRect -gsave -188.780 110.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.720 3.000 S -(S) -7.498 3.000 S -(G) -1.937 3.000 S -7.000 (_Times-Roman) fess -(E) 5.284 3.000 S -(N) 9.865 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 162.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 153.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -23.166 -3.000 S -(o) -11.840 -3.000 S -(r) -5.840 -3.000 S -(d) -1.844 -3.000 S -( ) 4.155 -3.000 S -(N) 7.155 -3.000 S -(e) 15.821 -3.000 S -(t) 21.147 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.840 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -12.844 10.000 S -(d) -7.443 10.000 S -(n) -2.042 10.000 S -(e) 3.358 10.000 S -(t) 8.759 10.000 S -grestore -restore -save -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.159 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.779 95.211 189.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.779 150.377 moveto -/Triangular 8.224 7.049 false 315.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.604 149.552 189.779 123.377 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 190.672 27.279 0.000 0.000 36.246 23.945 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[5.772 36.039] CP -[6.200 32.863 6.485 30.619 6.627 29.307] CP -[6.770 27.995 6.627 26.476 6.200 24.750] CP -[5.772 23.024 5.131 21.782 4.275 21.022] CP -[3.420 20.263 2.636 19.055 1.924 17.398] CP -[1.211 15.741 0.712 14.118 0.427 12.530] CP -[0.142 10.942 0.106 9.320 0.320 7.663] CP -[0.534 6.006 1.033 4.694 1.817 3.728] CP -[2.601 2.761 3.705 2.002 5.131 1.449] CP -[6.556 0.897 8.516 0.517 11.010 0.310] CP -[13.504 0.103 15.714 0.310 17.638 0.932] CP -[19.562 1.553 20.809 2.381 21.379 3.417] CP -[21.949 4.453 22.199 5.764 22.127 7.352] CP -[22.056 8.940 22.341 10.287 22.983 11.391] CP -[23.624 12.496 23.945 13.324 23.945 13.877] CP -[23.945 14.429 23.232 14.671 21.807 14.602] CP -[20.381 14.532 20.132 15.465 21.058 17.398] CP -[21.985 19.331 21.450 20.159 19.455 19.883] CP -[17.460 19.607 16.961 19.745 17.958 20.297] CP -[18.956 20.850 19.776 21.367 20.417 21.851] CP -[21.058 22.334 21.415 23.232 21.486 24.543] CP -[21.557 25.855 20.560 26.269 18.493 25.786] CP -[16.426 25.303 14.965 25.268 14.110 25.682] CP -[13.255 26.097 12.827 27.236 12.827 29.100] CP -[12.827 30.964 12.613 32.517 12.186 33.760] CP -[11.758 35.003 11.687 35.831 11.972 36.246] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.957 34.976 0.000 0.000 7.870 4.275 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[3.848 1.242] CP -[2.280 0.414 1.247 0.517 0.748 1.553] CP -[0.249 2.589 0.071 3.486 0.213 4.245] CP -[0.356 5.005 0.997 5.799 2.137 6.627] CP -[3.278 7.456 3.919 7.421 4.062 6.524] CP -[4.204 5.626 3.777 4.901 2.779 4.349] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.957 44.383 0.000 0.000 1.864 3.848 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 206.290 50.279 0.000 0.000 11.650 5.671 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 206.128 50.279 0.000 0.000 11.650 5.671 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.105 52.169 0.000 0.000 16.081 7.876 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 203.882 52.169 0.000 0.000 16.081 7.876 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 201.132 55.965 0.000 0.000 22.112 10.053 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 200.824 55.965 0.000 0.000 22.112 10.053 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 196.985 59.316 0.000 0.000 30.521 13.963 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 196.562 59.316 0.000 0.000 30.521 13.963 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.779 168.377 54.779 195.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.779 186.377 moveto -/Triangular 8.224 7.049 false 333.458 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.823 185.856 90.779 177.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.377 110.779 0.000 0.000 12.000 29.310 rect -%@EndRect -gsave -125.434 209.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -13.720 3.000 S -(S) -6.498 3.000 S -(L) -0.937 3.000 S -7.000 (_Times-Roman) fess -(A) 5.171 3.000 S -(B) 10.587 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 195.377 99.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.779 209.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.612 209.377 81.779 209.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -171.779 209.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.612 209.377 153.779 209.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 195.377 171.779 0.000 0.000 117.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 202.500 178.500 0.000 0.000 100.000 45.268 rect -%@EndRect -gsave -201.134 252.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 -41.000 S -(r) -15.891 -41.000 S -(a) -12.561 -41.000 S -(i) -8.123 -41.000 S -(n) -5.344 -41.000 S -( ) -0.344 -41.000 S -(F) 2.155 -41.000 S -(i) 7.716 -41.000 S -(l) 10.495 -41.000 S -(e) 13.273 -41.000 S -(s) 17.711 -41.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -22.000 -30.000 S -(0) -16.438 -30.000 S -(0) -11.438 -30.000 S -(0) -6.438 -30.000 S -(1) -1.438 -30.000 S -(.) 3.561 -30.000 S -(w) 6.061 -30.000 S -(a) 13.283 -30.000 S -(v) 17.721 -30.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -22.000 -19.000 S -(0) -16.438 -19.000 S -(0) -11.438 -19.000 S -(0) -6.438 -19.000 S -(2) -1.438 -19.000 S -(.) 3.561 -19.000 S -(w) 6.061 -19.000 S -(a) 13.283 -19.000 S -(v) 17.721 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -22.000 -8.000 S -(.) -19.500 -8.000 S -(.) -17.000 -8.000 S -( ) -14.500 -8.000 S -(e) -12.000 -8.000 S -(t) -7.561 -8.000 S -(c) -4.783 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 14.000 S -(e) -15.891 14.000 S -(s) -11.453 14.000 S -(t) -7.561 14.000 S -( ) -4.783 14.000 S -(F) -2.283 14.000 S -(i) 3.278 14.000 S -(l) 6.056 14.000 S -(e) 8.834 14.000 S -(s) 13.273 14.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 25.000 S -(0) -15.891 25.000 S -(0) -10.891 25.000 S -(0) -5.891 25.000 S -(1) -0.891 25.000 S -(.) 4.108 25.000 S -(w) 6.608 25.000 S -(a) 13.830 25.000 S -(v) 18.268 25.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 36.000 S -(0) -15.891 36.000 S -(0) -10.891 36.000 S -(0) -5.891 36.000 S -(2) -0.891 36.000 S -(.) 4.108 36.000 S -(w) 6.608 36.000 S -(a) 13.830 36.000 S -(v) 18.268 36.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -22.000 47.000 S -(.) -19.500 47.000 S -(.) -17.000 47.000 S -( ) -14.500 47.000 S -(e) -12.000 47.000 S -(t) -7.561 47.000 S -(c) -4.783 47.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step4.eps b/HTKBook/HTKFigs/step4.eps deleted file mode 100644 index a1f658d..0000000 --- a/HTKBook/HTKFigs/step4.eps +++ /dev/null @@ -1,1817 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step4.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 7:51:35 a.m. -%%BoundingBox: 90.279 542.122 268.815 768.122 -%%QDBoundingBox: 90.279 23.877 268.815 249.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 24.377 99.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 24.500 104.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -137.157 38.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -16.003 -3.000 S -(I) -8.673 -3.000 S -(M) -4.677 -3.000 S -(I) 5.992 -3.000 S -(T) 9.988 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -19.346 10.000 S -(r) -12.672 10.000 S -(o) -8.676 10.000 S -(m) -2.676 10.000 S -(p) 6.657 10.000 S -(t) 12.657 10.000 S -(s) 15.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.779 78.377 135.779 51.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 96.377 90.779 0.000 0.000 27.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.500 95.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -137.157 109.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -25.173 -3.000 S -(d) -17.843 -3.000 S -(i) -11.843 -3.000 S -(t) -8.509 -3.000 S -( ) -5.175 -3.000 S -(S) -2.175 -3.000 S -(c) 4.498 -3.000 S -(r) 9.824 -3.000 S -(i) 13.820 -3.000 S -(p) 17.154 -3.000 S -(t) 23.154 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -38.444 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.500 95.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -137.157 109.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -34.447 10.000 S -(k) -29.047 10.000 S -(p) -23.646 10.000 S -(h) -18.245 10.000 S -(o) -12.844 10.000 S -(n) -7.443 10.000 S -(e) -2.042 10.000 S -(s) 3.358 10.000 S -(0) 8.759 10.000 S -(.) 14.159 10.000 S -(l) 19.560 10.000 S -(e) 24.961 10.000 S -(d) 30.362 10.000 S -grestore -restore -save -gsave -137.157 109.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 35.763 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 143.044 213.779 0.000 0.000 12.000 24.854 rect -%@EndRect -gsave -226.206 149.044 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -11.720 3.000 S -(L) -4.498 3.000 S -(E) 1.609 3.000 S -7.000 (_Times-Roman) fess -(D) 7.718 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 198.779 0.000 0.000 36.000 54.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 201.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 221.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -29.500 -10.000 S -(h) -22.826 -10.000 S -(o) -16.826 -10.000 S -(n) -10.826 -10.000 S -(e) -4.826 -10.000 S -( ) 0.499 -10.000 S -(L) 3.499 -10.000 S -(e) 10.829 -10.000 S -(v) 16.155 -10.000 S -(e) 22.155 -10.000 S -(l) 27.481 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.665 3.000 S -(r) -24.335 3.000 S -(a) -20.339 3.000 S -(n) -15.013 3.000 S -(s) -9.013 3.000 S -(c) -4.343 3.000 S -(r) 0.982 3.000 S -(i) 4.979 3.000 S -(p) 8.312 3.000 S -(t) 14.312 3.000 S -(i) 17.646 3.000 S -(o) 20.980 3.000 S -(n) 26.980 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 201.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 221.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -29.047 16.000 S -(h) -23.646 16.000 S -(o) -18.245 16.000 S -(n) -12.844 16.000 S -(e) -7.443 16.000 S -(s) -2.042 16.000 S -(0) 3.358 16.000 S -(.) 8.759 16.000 S -(m) 14.159 16.000 S -(l) 19.560 16.000 S -(f) 24.961 16.000 S -grestore -restore -save -gsave -227.157 221.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 16.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 131.211 225.779 105.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 99.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 104.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -137.157 191.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.000 -3.000 S -(i) -16.334 -3.000 S -(c) -13.000 -3.000 S -(t) -7.674 -3.000 S -(i) -4.340 -3.000 S -(o) -1.006 -3.000 S -(n) 4.993 -3.000 S -(a) 10.993 -3.000 S -(r) 16.319 -3.000 S -(y) 20.315 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 104.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -137.157 191.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.144 10.000 S -(i) -4.743 10.000 S -(c) 0.657 10.000 S -(t) 6.058 10.000 S -grestore -restore -save -gsave -137.157 191.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 195.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 194.211 225.779 168.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 155.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 155.377 135.779 155.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -28.161 -10.000 S -(o) -16.835 -10.000 S -(r) -10.835 -10.000 S -(d) -6.839 -10.000 S -( ) -0.839 -10.000 S -(L) 2.160 -10.000 S -(e) 9.490 -10.000 S -(v) 14.816 -10.000 S -(e) 20.816 -10.000 S -(l) 26.143 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.665 3.000 S -(r) -24.335 3.000 S -(a) -20.339 3.000 S -(n) -15.013 3.000 S -(s) -9.013 3.000 S -(c) -4.343 3.000 S -(r) 0.982 3.000 S -(i) 4.979 3.000 S -(p) 8.312 3.000 S -(t) 14.312 3.000 S -(i) 17.646 3.000 S -(o) 20.980 3.000 S -(n) 26.980 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -27.642 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -23.646 16.000 S -(o) -18.245 16.000 S -(r) -12.844 16.000 S -(d) -7.443 16.000 S -(s) -2.042 16.000 S -(.) 3.358 16.000 S -(m) 8.759 16.000 S -(l) 14.159 16.000 S -(f) 19.560 16.000 S -grestore -restore -save -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 24.961 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 188.612 78.377 135.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.779 177.377 135.779 156.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 141.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 141.377 135.779 141.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.779 141.377 135.779 123.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step5.eps b/HTKBook/HTKFigs/step5.eps deleted file mode 100644 index 4a81efe..0000000 --- a/HTKBook/HTKFigs/step5.eps +++ /dev/null @@ -1,1637 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step5.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/28/95 4:44:01 p.m. -%%BoundingBox: 63.279 578.122 390.202 741.122 -%%QDBoundingBox: 63.279 50.877 390.202 213.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -33.004 -10.000 S -(o) -25.000 -10.000 S -(n) -19.000 -10.000 S -(f) -13.000 -10.000 S -(i) -9.004 -10.000 S -(g) -5.670 -10.000 S -(u) 0.329 -10.000 S -(r) 6.329 -10.000 S -(a) 10.325 -10.000 S -(t) 15.651 -10.000 S -(i) 18.985 -10.000 S -(o) 22.319 -10.000 S -(n) 28.319 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -8.676 3.000 S -(i) -2.002 3.000 S -(l) 1.331 3.000 S -(e) 4.665 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -19.541 16.000 S -grestore -restore -save -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -15.544 16.000 S -(o) -10.144 16.000 S -(n) -4.743 16.000 S -(f) 0.657 16.000 S -(i) 6.058 16.000 S -(g) 11.459 16.000 S -grestore -restore -save -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 16.860 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 189.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 185.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -227.157 195.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.508 -3.000 S -(c) -17.834 -3.000 S -(r) -12.508 -3.000 S -(i) -8.512 -3.000 S -(p) -5.178 -3.000 S -(t) 0.821 -3.000 S -( ) 4.155 -3.000 S -(F) 7.155 -3.000 S -(i) 13.829 -3.000 S -(l) 17.163 -3.000 S -(e) 20.497 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -30.342 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 185.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -227.157 195.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -26.346 10.000 S -(o) -20.945 10.000 S -(d) -15.544 10.000 S -(e) -10.144 10.000 S -(t) -4.743 10.000 S -(r) 0.657 10.000 S -(.) 6.058 10.000 S -(s) 11.459 10.000 S -(c) 16.860 10.000 S -(p) 22.261 10.000 S -grestore -restore -save -gsave -227.157 195.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 27.662 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 189.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 133.500 208.500 0.000 0.000 14.000 34.674 rect -%@EndRect -gsave -225.837 140.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 3.000 S -(C) -8.333 3.000 S -9.000 (_Times-Roman) fess -(O) -0.330 3.000 S -(P) 6.169 3.000 S -(Y) 11.174 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 123.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 122.211 225.779 105.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 160.544 225.779 177.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.500 77.500 0.000 0.000 62.000 87.702 rect -%@EndRect -gsave -121.351 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -43.000 -21.000 S -(a) -31.673 -21.000 S -(v) -26.347 -21.000 S -(e) -20.347 -21.000 S -(f) -15.021 -21.000 S -(o) -11.025 -21.000 S -(r) -5.025 -21.000 S -(m) -1.029 -21.000 S -( ) 8.304 -21.000 S -(F) 11.304 -21.000 S -(i) 17.978 -21.000 S -(l) 21.312 -21.000 S -(e) 24.646 -21.000 S -(s) 29.972 -21.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.500 77.500 0.000 0.000 62.000 87.702 rect -%@EndRect -gsave -121.351 153.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 -8.000 S -(0) -37.599 -8.000 S -(0) -32.198 -8.000 S -(0) -26.797 -8.000 S -(1) -21.396 -8.000 S -(.) -15.995 -8.000 S -(w) -10.594 -8.000 S -(a) -5.193 -8.000 S -(v) 0.207 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 4.000 S -(0) -37.599 4.000 S -(0) -32.198 4.000 S -(0) -26.797 4.000 S -(2) -21.396 4.000 S -(.) -15.995 4.000 S -(w) -10.594 4.000 S -(a) -5.193 4.000 S -(v) 0.207 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 16.000 S -(0) -37.599 16.000 S -(0) -32.198 16.000 S -(0) -26.797 16.000 S -(3) -21.396 16.000 S -(.) -15.995 16.000 S -(w) -10.594 16.000 S -(a) -5.193 16.000 S -(v) 0.207 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -43.000 28.000 S -(t) -37.599 28.000 S -(c) -32.198 28.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 63.779 0.000 0.000 81.000 99.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.500 302.500 0.000 0.000 62.000 87.702 rect -%@EndRect -gsave -346.351 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -43.000 -21.000 S -(F) -32.330 -21.000 S -(C) -25.656 -21.000 S -(C) -17.652 -21.000 S -( ) -9.648 -21.000 S -(F) -6.648 -21.000 S -(i) 0.025 -21.000 S -(l) 3.359 -21.000 S -(e) 6.693 -21.000 S -(s) 12.019 -21.000 S -grestore -restore -save -gsave -346.351 153.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 -8.000 S -(0) -37.599 -8.000 S -(0) -32.198 -8.000 S -(0) -26.797 -8.000 S -(1) -21.396 -8.000 S -(.) -15.995 -8.000 S -(m) -10.594 -8.000 S -(f) -5.193 -8.000 S -(c) 0.207 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 4.000 S -(0) -37.599 4.000 S -(0) -32.198 4.000 S -(0) -26.797 4.000 S -(2) -21.396 4.000 S -(.) -15.995 4.000 S -(m) -10.594 4.000 S -(f) -5.193 4.000 S -(c) 0.207 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 16.000 S -(0) -37.599 16.000 S -(0) -32.198 16.000 S -(0) -26.797 16.000 S -(3) -21.396 16.000 S -(.) -15.995 16.000 S -(m) -10.594 16.000 S -(f) -5.193 16.000 S -(c) 0.207 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -43.000 28.000 S -(t) -37.599 28.000 S -(c) -32.198 28.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 288.779 0.000 0.000 81.000 99.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.779 141.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 188.612 141.377 162.779 141.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.779 141.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.612 141.377 261.779 141.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step6.eps b/HTKBook/HTKFigs/step6.eps deleted file mode 100644 index 70c3d4b..0000000 --- a/HTKBook/HTKFigs/step6.eps +++ /dev/null @@ -1,1986 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step6.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 8:13:41 a.m. -%%BoundingBox: 72.279 560.122 352.279 786.122 -%%QDBoundingBox: 72.279 5.877 352.279 231.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.044 207.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -224.446 146.044 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(E) -8.498 3.000 S -(R) -2.390 3.000 S -7.000 (_Times-Roman) fess -(E) 4.279 3.000 S -(S) 8.860 3.000 S -(T) 13.031 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 203.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -29.500 -10.000 S -(h) -22.826 -10.000 S -(o) -16.826 -10.000 S -(n) -10.826 -10.000 S -(e) -4.826 -10.000 S -( ) 0.499 -10.000 S -(L) 3.499 -10.000 S -(e) 10.829 -10.000 S -(v) 16.155 -10.000 S -(e) 22.155 -10.000 S -(l) 27.481 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.665 3.000 S -(r) -24.335 3.000 S -(a) -20.339 3.000 S -(n) -15.013 3.000 S -(s) -9.013 3.000 S -(c) -4.343 3.000 S -(r) 0.982 3.000 S -(i) 4.979 3.000 S -(p) 8.312 3.000 S -(t) 14.312 3.000 S -(i) 17.646 3.000 S -(o) 20.980 3.000 S -(n) 26.980 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 203.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -29.047 16.000 S -(h) -23.646 16.000 S -(o) -18.245 16.000 S -(n) -12.844 16.000 S -(e) -7.443 16.000 S -(s) -2.042 16.000 S -(0) 3.358 16.000 S -(.) 8.759 16.000 S -(m) 14.159 16.000 S -(l) 19.560 16.000 S -(f) 24.961 16.000 S -grestore -restore -save -gsave -227.157 203.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 16.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.377 171.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 167.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -209.157 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -33.171 -10.000 S -(r) -25.841 -10.000 S -(a) -21.845 -10.000 S -(i) -16.519 -10.000 S -(n) -13.185 -10.000 S -(i) -7.185 -10.000 S -(n) -3.851 -10.000 S -(g) 2.148 -10.000 S -( ) 8.148 -10.000 S -(F) 11.148 -10.000 S -(i) 17.822 -10.000 S -(l) 21.156 -10.000 S -(e) 24.490 -10.000 S -(s) 29.816 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -18.508 3.000 S -(i) -15.174 3.000 S -(s) -11.840 3.000 S -(t) -7.170 3.000 S -(e) -3.836 3.000 S -(d) 1.489 3.000 S -( ) 7.489 3.000 S -(i) 10.489 3.000 S -(n) 13.823 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -27.642 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 167.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -209.157 77.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -23.646 16.000 S -(r) -18.245 16.000 S -(a) -12.844 16.000 S -(i) -7.443 16.000 S -(n) -2.042 16.000 S -(.) 3.358 16.000 S -(s) 8.759 16.000 S -(c) 14.159 16.000 S -(p) 19.560 16.000 S -grestore -restore -save -gsave -209.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 24.961 16.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 75.500 0.000 0.000 39.000 84.391 rect -%@EndRect -gsave -117.695 29.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -39.639 -9.000 S -(r) -32.965 -9.000 S -(o) -28.969 -9.000 S -(t) -22.969 -9.000 S -(o) -19.635 -9.000 S -(t) -13.635 -9.000 S -(y) -10.301 -9.000 S -(p) -4.301 -9.000 S -(e) 1.698 -9.000 S -( ) 7.024 -9.000 S -(H) 10.024 -9.000 S -(M) 18.690 -9.000 S -(M) 29.360 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -24.466 4.000 S -(e) -15.800 4.000 S -(f) -10.474 4.000 S -(i) -6.478 4.000 S -(n) -3.144 4.000 S -(i) 2.855 4.000 S -(t) 6.189 4.000 S -(i) 9.523 4.000 S -(o) 12.857 4.000 S -(n) 18.857 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.636 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 75.500 0.000 0.000 39.000 84.391 rect -%@EndRect -gsave -117.695 29.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -13.306 17.000 S -(r) -7.905 17.000 S -(o) -2.504 17.000 S -(t) 2.896 17.000 S -(o) 8.297 17.000 S -grestore -restore -save -gsave -117.695 29.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.697 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 6.377 72.779 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 198.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.779 78.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.779 77.211 117.779 51.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 90.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 100.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -123.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(0) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 100.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -123.608 145.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.779 131.211 207.779 105.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 160.544 225.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 288.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 298.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -321.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(1) 1.667 -9.000 S -grestore -restore -save -gsave -321.608 145.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 146.377 144.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.612 146.377 252.779 146.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 86.044 99.779 0.000 0.000 12.000 37.369 rect -%@EndRect -gsave -118.464 92.044 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.720 3.000 S -(C) -10.498 3.000 S -7.000 (_Times-Roman) fess -(O) -3.828 3.000 S -(M) 1.587 3.000 S -(P) 8.256 3.000 S -10.000 (_Times-Roman) fess -(V) 12.427 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 78.377 90.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.779 123.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.779 122.211 117.779 105.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.377 261.779 0.000 0.000 36.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 54.500 265.500 0.000 0.000 26.000 82.216 rect -%@EndRect -gsave -306.608 67.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.730 -3.000 S -(M) -15.064 -3.000 S -(M) -4.394 -3.000 S -( ) 6.275 -3.000 S -(l) 9.275 -3.000 S -(i) 12.609 -3.000 S -(s) 15.943 -3.000 S -(t) 20.613 -3.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 54.500 265.500 0.000 0.000 26.000 82.216 rect -%@EndRect -gsave -306.608 67.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -34.997 10.000 S -(m) -29.596 10.000 S -(o) -24.195 10.000 S -(n) -18.794 10.000 S -(o) -13.393 10.000 S -(p) -7.992 10.000 S -(h) -2.592 10.000 S -(o) 2.808 10.000 S -(n) 8.209 10.000 S -(e) 13.610 10.000 S -(s) 19.011 10.000 S -(0) 24.412 10.000 S -(\)) 29.813 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.779 132.377 moveto -/Triangular 8.224 7.049 false -90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.779 114.377 234.779 131.211 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.779 114.377 234.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.779 114.377 297.779 87.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step7.eps b/HTKBook/HTKFigs/step7.eps deleted file mode 100644 index 1e4e3b1..0000000 --- a/HTKBook/HTKFigs/step7.eps +++ /dev/null @@ -1,1860 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step7.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/28/95 5:13:13 p.m. -%%BoundingBox: 22.500 578.122 398.716 726.122 -%%QDBoundingBox: 22.500 65.877 398.716 213.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.044 271.779 0.000 0.000 23.000 33.333 rect -%@EndRect -gsave -288.446 147.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 -3.000 S -(E) -8.498 -3.000 S -(R) -2.390 -3.000 S -7.000 (_Times-Roman) fess -(E) 4.279 -3.000 S -(S) 8.860 -3.000 S -(T) 13.031 -3.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -7.591 8.000 S -7.000 (_Times-Roman) fess -(X) -4.261 8.000 S -10.000 (_Times-Roman) fess -(2) 1.154 8.000 S -(\)) 6.154 8.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 94.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 180.500 90.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -132.157 194.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -25.173 -3.000 S -(d) -17.843 -3.000 S -(i) -11.843 -3.000 S -(t) -8.509 -3.000 S -( ) -5.175 -3.000 S -(S) -2.175 -3.000 S -(c) 4.498 -3.000 S -(r) 9.824 -3.000 S -(i) 13.820 -3.000 S -(p) 17.154 -3.000 S -(t) 23.154 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -22.241 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 180.500 90.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -132.157 194.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -18.245 10.000 S -(i) -12.844 10.000 S -(l) -7.443 10.000 S -(.) -2.042 10.000 S -(h) 3.358 10.000 S -(e) 8.759 10.000 S -(d) 14.159 10.000 S -grestore -restore -save -gsave -132.157 194.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 19.560 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.377 95.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 91.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -133.157 87.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.181 -3.000 S -(M) -14.515 -3.000 S -(M) -3.845 -3.000 S -( ) 6.824 -3.000 S -(l) 9.824 -3.000 S -(i) 13.158 -3.000 S -(s) 16.492 -3.000 S -(t) 21.162 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 91.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -133.157 87.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -29.047 10.000 S -(o) -23.646 10.000 S -(n) -18.245 10.000 S -(o) -12.844 10.000 S -(p) -7.443 10.000 S -(h) -2.042 10.000 S -(o) 3.358 10.000 S -(n) 8.759 10.000 S -(e) 14.159 10.000 S -(s) 19.560 10.000 S -(1) 24.961 10.000 S -grestore -restore -save -gsave -133.157 87.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 261.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 180.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 190.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -213.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(5) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 190.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -213.608 145.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -131.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.779 131.211 131.779 105.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 130.779 160.544 130.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 342.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 352.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -375.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(7) 1.667 -9.000 S -grestore -restore -save -gsave -375.608 145.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.612 146.377 234.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 341.612 146.377 315.779 146.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.544 118.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -135.446 145.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(H) -8.498 3.000 S -(E) -1.277 3.000 S -7.000 (_Times-Roman) fess -(D) 4.831 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 108.779 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 27.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 37.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -60.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(4) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 37.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -60.608 145.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 107.612 146.377 81.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 179.612 146.377 153.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 66.377 27.779 0.000 0.000 30.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 22.500 0.000 0.000 27.000 68.309 rect -%@EndRect -gsave -56.654 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -9.844 -3.000 S -(d) -2.514 -3.000 S -(i) 3.485 -3.000 S -(t) 6.819 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.230 10.000 S -(i) -14.561 10.000 S -(l) -11.227 10.000 S -( ) -7.893 10.000 S -(-) -4.893 10.000 S -(>) -0.896 10.000 S -( ) 5.870 10.000 S -(s) 8.870 10.000 S -(p) 13.540 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.779 123.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.779 122.211 54.779 96.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step8.eps b/HTKBook/HTKFigs/step8.eps deleted file mode 100644 index 355efb6..0000000 --- a/HTKBook/HTKFigs/step8.eps +++ /dev/null @@ -1,1869 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step8.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 10:28:17 p.m. -%%BoundingBox: 72.279 560.122 388.279 732.122 -%%QDBoundingBox: 72.279 59.877 388.279 231.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 202.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 198.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -240.157 203.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -32.828 -10.000 S -(r) -25.498 -10.000 S -(a) -21.502 -10.000 S -(i) -16.176 -10.000 S -(n) -12.842 -10.000 S -(i) -6.842 -10.000 S -(n) -3.508 -10.000 S -(g) 2.491 -10.000 S -( ) 8.491 -10.000 S -(D) 11.491 -10.000 S -(a) 20.157 -10.000 S -(t) 25.483 -10.000 S -(a) 28.817 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -20.506 3.000 S -(i) -13.176 3.000 S -(s) -9.842 3.000 S -(t) -5.172 3.000 S -(e) -1.838 3.000 S -(d) 3.487 3.000 S -( ) 9.487 3.000 S -(i) 12.487 3.000 S -(n) 15.821 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -28.344 16.000 S -grestore -restore -save -gsave -240.157 203.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -24.348 16.000 S -(r) -18.947 16.000 S -(a) -13.546 16.000 S -(i) -8.145 16.000 S -(n) -2.745 16.000 S -(.) 2.655 16.000 S -(s) 8.056 16.000 S -(c) 13.457 16.000 S -(p) 18.858 16.000 S -(\)) 24.259 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 176.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 64.500 172.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -214.157 78.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.181 -3.000 S -(M) -14.515 -3.000 S -(M) -3.845 -3.000 S -( ) 6.824 -3.000 S -(l) 9.824 -3.000 S -(i) 13.158 -3.000 S -(s) 16.492 -3.000 S -(t) 21.162 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 10.000 S -grestore -restore -save -gsave -214.157 78.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -29.047 10.000 S -(o) -23.646 10.000 S -(n) -18.245 10.000 S -(o) -12.844 10.000 S -(p) -7.443 10.000 S -(h) -2.042 10.000 S -(o) 3.358 10.000 S -(n) 8.759 10.000 S -(e) 14.159 10.000 S -(s) 19.560 10.000 S -(1) 24.961 10.000 S -grestore -restore -save -gsave -214.157 78.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 288.779 0.000 0.000 45.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 293.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -339.108 146.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -29.549 -9.000 S -(h) -22.875 -9.000 S -(o) -16.875 -9.000 S -(n) -10.875 -9.000 S -(e) -4.875 -9.000 S -( ) 0.450 -9.000 S -(L) 3.450 -9.000 S -(e) 10.780 -9.000 S -(v) 16.106 -9.000 S -(e) 22.106 -9.000 S -(l) 27.432 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 293.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -339.108 146.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -34.497 17.000 S -(a) -29.096 17.000 S -(l) -23.695 17.000 S -(i) -18.294 17.000 S -(g) -12.893 17.000 S -(n) -7.492 17.000 S -(e) -2.092 17.000 S -(d) 3.308 17.000 S -(.) 8.709 17.000 S -(m) 14.110 17.000 S -(l) 19.511 17.000 S -(f) 24.912 17.000 S -(\)) 30.313 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -230.779 132.377 moveto -/Triangular 8.224 7.049 false 243.452 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 230.257 131.334 212.779 96.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -238.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 238.779 160.544 238.779 177.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.544 226.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -243.446 145.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(V) -8.498 3.000 S -7.000 (_Times-Roman) fess -(I) -1.277 3.000 S -(T) 1.220 3.000 S -(E) 5.801 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 216.779 0.000 0.000 27.000 45.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 60.377 252.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 262.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -285.608 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(7) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 262.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -285.608 82.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.779 137.377 moveto -/Triangular 8.224 7.049 false 201.816 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.696 136.944 171.779 119.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.612 146.377 261.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 72.779 0.000 0.000 45.000 99.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.500 77.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -123.108 119.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -28.210 -9.000 S -(o) -16.884 -9.000 S -(r) -10.884 -9.000 S -(d) -6.888 -9.000 S -( ) -0.888 -9.000 S -(L) 2.111 -9.000 S -(e) 9.441 -9.000 S -(v) 14.767 -9.000 S -(e) 20.767 -9.000 S -(l) 26.093 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -grestore -restore -save -gsave -123.108 119.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -29.096 17.000 S -(w) -23.695 17.000 S -(o) -18.294 17.000 S -(r) -12.893 17.000 S -(d) -7.492 17.000 S -(s) -2.092 17.000 S -(.) 3.308 17.000 S -(m) 8.709 17.000 S -(l) 14.110 17.000 S -(f) 19.511 17.000 S -(\)) 24.912 17.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.500 90.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -132.157 176.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.000 -3.000 S -(i) -16.334 -3.000 S -(c) -13.000 -3.000 S -(t) -7.674 -3.000 S -(i) -4.340 -3.000 S -(o) -1.006 -3.000 S -(n) 4.993 -3.000 S -(a) 10.993 -3.000 S -(r) 16.319 -3.000 S -(y) 20.315 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -grestore -restore -save -gsave -132.157 176.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.144 10.000 S -(i) -4.743 10.000 S -(c) 0.657 10.000 S -(t) 6.058 10.000 S -grestore -restore -save -gsave -132.157 176.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.779 150.377 moveto -/Triangular 8.224 7.049 false 149.046 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.779 150.978 171.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 159.377 90.779 0.000 0.000 36.000 81.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.779 132.377 moveto -/Triangular 8.224 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.426 131.407 270.779 105.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step9.eps b/HTKBook/HTKFigs/step9.eps deleted file mode 100644 index d476d1d..0000000 --- a/HTKBook/HTKFigs/step9.eps +++ /dev/null @@ -1,2019 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step9.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/20/95 6:16:03 p.m. -%%BoundingBox: 221.500 501.500 406.716 768.122 -%%QDBoundingBox: 221.500 23.877 406.716 290.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 24.377 315.779 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 315.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -361.108 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -28.389 -9.000 S -(o) -17.719 -9.000 S -(n) -11.719 -9.000 S -(o) -5.719 -9.000 S -(p) 0.280 -9.000 S -(h) 6.280 -9.000 S -(o) 12.280 -9.000 S -(n) 18.280 -9.000 S -(e) 24.280 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -grestore -restore -save -gsave -361.108 47.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -34.497 17.000 S -(a) -29.096 17.000 S -(l) -23.695 17.000 S -(i) -18.294 17.000 S -(g) -12.893 17.000 S -(n) -7.492 17.000 S -(e) -2.092 17.000 S -(d) 3.308 17.000 S -(.) 8.709 17.000 S -(m) 14.110 17.000 S -(l) 19.511 17.000 S -(f) 24.912 17.000 S -(\)) 30.313 17.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.544 349.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -366.446 100.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(L) -8.498 3.000 S -(E) -2.390 3.000 S -7.000 (_Times-Roman) fess -(D) 3.718 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 333.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 86.211 360.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 315.779 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 135.500 315.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -361.108 155.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -21.384 -9.000 S -(r) -14.054 -9.000 S -(i) -10.058 -9.000 S -(p) -6.724 -9.000 S -(h) -0.724 -9.000 S -(o) 5.275 -9.000 S -(n) 11.275 -9.000 S -(e) 17.275 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 135.500 315.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -361.108 155.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -31.796 17.000 S -(w) -26.395 17.000 S -(i) -20.995 17.000 S -(n) -15.594 17.000 S -(t) -10.193 17.000 S -(r) -4.792 17.000 S -(i) 0.608 17.000 S -(.) 6.009 17.000 S -(m) 11.410 17.000 S -(l) 16.811 17.000 S -(f) 22.211 17.000 S -(\)) 27.612 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 131.211 360.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 24.377 225.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 33.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 52.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -30.943 -8.000 S -(o) -20.273 -8.000 S -(n) -14.273 -8.000 S -(o) -8.273 -8.000 S -(p) -2.273 -8.000 S -(h) 3.726 -8.000 S -(o) 9.726 -8.000 S -(n) 15.726 -8.000 S -(e) 21.726 -8.000 S -(s) 27.052 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -13.742 5.000 S -grestore -restore -save -gsave -262.889 52.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -10.412 5.000 S -(m) -5.011 5.000 S -(m) 0.389 5.000 S -(9) 5.790 5.000 S -grestore -restore -save -gsave -262.889 52.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.190 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.544 250.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -267.446 100.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(H) -8.498 3.000 S -(E) -1.277 3.000 S -7.000 (_Times-Roman) fess -(D) 4.831 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 234.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 86.211 261.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 131.211 261.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 225.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 160.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -23.938 -8.000 S -(r) -16.608 -8.000 S -(i) -12.612 -8.000 S -(p) -9.278 -8.000 S -(h) -3.278 -8.000 S -(o) 2.721 -8.000 S -(n) 8.721 -8.000 S -(e) 14.721 -8.000 S -(s) 20.047 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.443 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 160.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -13.113 5.000 S -(m) -7.712 5.000 S -(m) -2.311 5.000 S -(1) 3.089 5.000 S -(0) 8.490 5.000 S -grestore -restore -save -gsave -262.889 160.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.891 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 202.544 232.779 0.000 0.000 12.000 60.333 rect -%@EndRect -gsave -262.946 208.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.720 3.000 S -(E) -22.498 3.000 S -(R) -16.390 3.000 S -7.000 (_Times-Roman) fess -(E) -9.720 3.000 S -(S) -5.139 3.000 S -(T) -0.968 3.000 S -10.000 (_Times-Roman) fess -( ) 3.613 3.000 S -(\() 6.113 3.000 S -7.000 (_Times-Roman) fess -(X) 9.443 3.000 S -10.000 (_Times-Roman) fess -(2) 14.859 3.000 S -(\)) 19.859 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 195.377 225.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 195.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 194.211 261.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 249.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 248.211 261.779 222.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 249.377 225.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 272.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -23.938 -8.000 S -(r) -16.608 -8.000 S -(i) -12.612 -8.000 S -(p) -9.278 -8.000 S -(h) -3.278 -8.000 S -(o) 2.721 -8.000 S -(n) 8.721 -8.000 S -(e) 14.721 -8.000 S -(s) 20.047 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.443 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 272.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -13.113 5.000 S -(m) -7.712 5.000 S -(m) -2.311 5.000 S -(1) 3.089 5.000 S -(2) 8.490 5.000 S -grestore -restore -save -gsave -262.889 272.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.891 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 208.377 360.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.779 209.377 moveto -/Triangular 8.224 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.946 209.377 360.779 209.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 249.377 315.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 311.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -352.889 272.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -25.102 -8.000 S -(t) -18.428 -8.000 S -(a) -15.094 -8.000 S -(t) -9.768 -8.000 S -(e) -6.434 -8.000 S -( ) -1.107 -8.000 S -(O) 1.892 -8.000 S -(c) 10.558 -8.000 S -(c) 15.884 -8.000 S -(s) 21.210 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.443 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 311.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -352.889 272.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -13.113 5.000 S -(t) -7.712 5.000 S -(a) -2.311 5.000 S -(t) 3.089 5.000 S -(s) 8.490 5.000 S -grestore -restore -save -gsave -352.889 272.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.891 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.779 253.377 moveto -/Triangular 8.224 7.049 false 217.790 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.857 252.663 279.779 222.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/streams.eps b/HTKBook/HTKFigs/streams.eps deleted file mode 100644 index 38707cf..0000000 --- a/HTKBook/HTKFigs/streams.eps +++ /dev/null @@ -1,5105 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: streams.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/29/94 8:17:19 p.m. -%%BoundingBox: 8.500 494.500 477.500 788.250 -%%QDBoundingBox: 8.500 3.750 477.500 297.500 -%%DocumentFonts: Symbol -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 22.250 348.250 0.000 0.000 12.000 66.000 rect -%@EndRect -gsave -381.250 28.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -32.250 4.000 S -(P) -24.919 4.000 S -(C) -18.246 4.000 S -(_) -10.242 4.000 S -(E) -4.242 4.000 S -(_) 3.087 4.000 S -(D) 9.087 4.000 S -(_) 17.753 4.000 S -(A) 23.753 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 54.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 351.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 354.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -368.218 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -368.218 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 405.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 408.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -422.924 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -422.924 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 387.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 390.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -396.879 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -396.879 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 441.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 443.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -450.585 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -450.585 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 339.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -342.915 54.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 90.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 333.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 336.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -350.218 90.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -350.218 90.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 369.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 372.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -386.924 90.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -386.924 90.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 315.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.250 318.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -324.879 108.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -324.879 108.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.250 335.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -342.585 108.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -342.585 108.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 297.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.250 303.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -306.915 108.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 135.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 144.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 155.250 300.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -314.218 162.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -314.218 162.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 171.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.250 300.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -314.924 180.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -314.924 180.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 155.250 336.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -342.879 162.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -342.879 162.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 171.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.250 335.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -342.585 180.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -342.585 180.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 135.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 339.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -342.915 144.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 207.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 209.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 216.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 225.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 227.250 300.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -314.218 234.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -314.218 234.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 243.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 245.250 300.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -314.924 252.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -314.924 252.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 261.000 315.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.250 318.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -324.879 270.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -324.879 270.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 261.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.250 335.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -342.585 270.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -342.585 270.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 261.000 297.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.250 303.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -306.915 270.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 288.000 0.000 0.000 252.000 189.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 72.000 288.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 126.000 288.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 198.000 288.000 198.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.000 459.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -462.500 105.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 459.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -463.000 177.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.500 459.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -463.000 267.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.250 177.250 0.000 0.000 14.000 42.166 rect -%@EndRect -gsave -198.333 11.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -20.250 3.000 S -(P) -12.919 3.000 S -(C) -6.246 3.000 S -(_) 1.757 3.000 S -(D) 7.757 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 162.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 170.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -184.750 36.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 198.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 201.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -215.218 36.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -215.218 36.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 162.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 65.250 170.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -184.750 72.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 162.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 165.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -179.218 90.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -179.218 90.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 18.000 153.000 0.000 0.000 90.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 54.000 153.000 54.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.000 225.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -228.500 87.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.250 46.250 0.000 0.000 14.000 35.337 rect -%@EndRect -gsave -63.918 11.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -17.250 3.000 S -(P) -9.919 3.000 S -(C) -3.246 3.000 S -(_) 4.757 3.000 S -(E) 10.757 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 36.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 44.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -58.750 36.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 72.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 78.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -81.915 36.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 36.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 65.250 44.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -58.750 72.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 36.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 42.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -45.915 90.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 18.000 27.000 0.000 0.000 90.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 54.000 27.000 54.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.000 81.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -84.500 87.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 120.250 33.250 0.000 0.000 14.000 77.500 rect -%@EndRect -gsave -72.000 127.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -38.250 3.000 S -(P) -30.919 3.000 S -(C) -24.246 3.000 S -(_) -16.242 3.000 S -(E) -10.242 3.000 S -(_) -2.912 3.000 S -(D) 3.087 3.000 S -(_) 11.753 3.000 S -(N) 17.753 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 26.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -40.750 153.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 54.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 57.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -71.218 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -71.218 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 90.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 93.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -99.879 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -99.879 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 26.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -40.750 189.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 54.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 57.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -71.218 189.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -71.218 189.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 18.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 200.250 21.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -27.879 207.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -27.879 207.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 234.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 236.250 26.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -40.750 243.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 254.250 21.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -35.218 261.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -35.218 261.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 18.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 272.250 21.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -27.879 279.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -27.879 279.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 9.000 0.000 0.000 162.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 171.000 9.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 225.000 9.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 99.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -102.500 204.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.000 99.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -102.500 267.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 121.250 177.250 0.000 0.000 14.000 53.750 rect -%@EndRect -gsave -204.125 128.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -26.250 3.000 S -(P) -18.919 3.000 S -(C) -12.246 3.000 S -(_) -4.242 3.000 S -(E) 1.757 3.000 S -(_) 9.087 3.000 S -(D) 15.087 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 152.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -166.750 153.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 198.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 201.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -215.218 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -215.218 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 234.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 237.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -243.879 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -243.879 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 180.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 186.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -189.915 153.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 152.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -166.750 189.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 180.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 183.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -197.218 189.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -197.218 189.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 162.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 200.250 165.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -171.879 207.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -171.879 207.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 144.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 200.250 150.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -153.915 207.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 234.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 236.250 152.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -166.750 243.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 254.250 147.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -161.218 261.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -161.218 261.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 162.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 272.250 165.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -171.879 279.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -171.879 279.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 144.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 272.250 150.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -153.915 279.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 135.000 0.000 0.000 162.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 171.000 135.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 225.000 135.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 243.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -246.500 204.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.500 243.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -247.000 267.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/structshare.eps b/HTKBook/HTKFigs/structshare.eps deleted file mode 100644 index dd48233..0000000 --- a/HTKBook/HTKFigs/structshare.eps +++ /dev/null @@ -1,3057 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: structshare.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/21/96 11:00:20 a.m. -%%BoundingBox: 8 454 280 784 -%%QDBoundingBox: 8.500 8.500 279.500 337.500 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 45.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.000 53.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -72.000 61.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 68.000 45.500 68.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 81.000 72.000 68.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 9.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 17.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -36.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 113.000 9.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 36.000 126.000 36.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 81.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 89.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -108.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 113.000 81.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 126.000 108.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 189.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.000 197.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -216.000 61.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 68.000 189.500 68.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 81.000 216.000 68.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 153.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 161.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -180.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 113.000 153.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 126.000 180.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 225.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 233.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -252.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 113.000 225.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 126.000 252.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 9.000 117.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 23.000 117.500 23.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 36.000 144.000 23.500 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 54.000 moveto -/Triangular 14.099 7.049 false 333.458 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.788 53.105 126.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -36.000 99.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 37.109 97.335 54.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 99.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.890 97.335 90.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 99.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.109 97.335 198.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 99.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 250.890 97.335 234.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 54.000 moveto -/Triangular 14.099 7.049 false 206.580 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.211 53.105 162.000 27.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 81.000 0.000 0.000 12.000 137.000 rect -%@EndRect -gsave -149.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -68.500 3.000 S -(a) -65.169 3.000 S -(\)) -60.731 3.000 S -( ) -57.401 3.000 S -( ) -54.901 3.000 S -(A) -52.401 3.000 S -( ) -45.179 3.000 S -(H) -42.679 3.000 S -(i) -35.458 3.000 S -(e) -32.679 3.000 S -(r) -28.241 3.000 S -(a) -24.911 3.000 S -(r) -20.472 3.000 S -(c) -17.142 3.000 S -(h) -12.704 3.000 S -(i) -7.704 3.000 S -(c) -4.925 3.000 S -(a) -0.487 3.000 S -(l) 3.951 3.000 S -( ) 6.729 3.000 S -(D) 9.229 3.000 S -(a) 16.451 3.000 S -(t) 20.889 3.000 S -(a) 23.667 3.000 S -( ) 28.106 3.000 S -(S) 30.606 3.000 S -(t) 36.167 3.000 S -(r) 38.946 3.000 S -(u) 42.276 3.000 S -(c) 47.276 3.000 S -(t) 51.714 3.000 S -(u) 54.493 3.000 S -(r) 59.493 3.000 S -(e) 62.823 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 234.000 45.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 235.000 53.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -72.000 241.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 248.000 45.500 248.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 261.000 72.000 248.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 279.000 9.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 280.000 17.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -36.000 286.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 293.000 9.500 293.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 36.000 306.000 36.000 293.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 234.000 189.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 235.000 197.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -216.000 241.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 248.000 189.500 248.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 261.000 216.000 248.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 279.000 117.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 280.000 125.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -144.000 286.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(2) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 293.000 117.500 293.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 306.000 144.000 293.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 279.000 225.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 280.000 233.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -252.000 286.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 293.000 225.500 293.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 306.000 252.000 293.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 189.000 117.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 203.000 117.500 203.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 216.000 144.000 203.500 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 234.000 moveto -/Triangular 14.099 7.049 false 333.458 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.788 233.105 126.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -36.000 279.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 37.109 277.335 54.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 279.000 moveto -/Triangular 14.099 7.049 false 216.885 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.399 277.800 90.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.000 279.000 moveto -/Triangular 14.099 7.049 false 323.152 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.599 277.799 198.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 279.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 250.890 277.335 234.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 234.000 moveto -/Triangular 14.099 7.049 false 206.580 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.211 233.105 162.000 207.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 325.500 90.000 0.000 0.000 12.000 111.000 rect -%@EndRect -gsave -145.500 331.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -55.500 3.000 S -(b) -52.169 3.000 S -(\)) -47.169 3.000 S -( ) -43.839 3.000 S -( ) -41.339 3.000 S -(W) -38.839 3.000 S -(i) -29.401 3.000 S -(t) -26.623 3.000 S -(h) -23.844 3.000 S -( ) -18.844 3.000 S -(S) -16.344 3.000 S -(t) -10.783 3.000 S -(r) -8.004 3.000 S -(u) -4.674 3.000 S -(c) 0.325 3.000 S -(t) 4.763 3.000 S -(u) 7.541 3.000 S -(r) 12.541 3.000 S -(e) 15.872 3.000 S -( ) 20.310 3.000 S -(S) 22.810 3.000 S -(h) 28.372 3.000 S -(a) 33.372 3.000 S -(r) 37.810 3.000 S -(i) 41.140 3.000 S -(n) 43.918 3.000 S -(g) 48.918 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/subsmixrep.eps b/HTKBook/HTKFigs/subsmixrep.eps deleted file mode 100644 index 6d1ba59..0000000 --- a/HTKBook/HTKFigs/subsmixrep.eps +++ /dev/null @@ -1,2008 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: subsmixrep.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:11/15/95 9:00:54 p.m. -%%BoundingBox: 95.500 566.500 387.705 784.500 -%%QDBoundingBox: 95.500 7.500 387.705 225.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 294.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -294.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 292.000 108.000 231.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -366.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 364.000 108.000 330.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 294.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.000 294.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -296.000 198.000 moveto -/Triangular 14.099 7.049 false 234.284 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 294.831 196.376 231.250 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -294.000 63.000 moveto -/Triangular 14.099 7.049 false 144.473 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 292.372 64.162 231.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.205 108.000 330.000 66.459 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -368.821 94.643 moveto -/Triangular 14.099 7.049 false 215.377 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 367.190 93.486 353.321 83.643 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.205 108.000 330.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -359.896 150.287 moveto -/Triangular 14.099 7.049 false 122.079 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 358.834 151.982 330.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 109.000 329.000 199.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.000 238.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -243.000 68.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 248.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -252.000 74.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -3.500 4.000 S -(j) -0.166 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.000 255.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -260.000 68.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 262.000 0.000 0.000 12.000 5.000 rect -%@EndRect -gsave -264.500 74.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.808 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 265.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -269.000 74.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 247.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -252.500 115.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 115.000 257.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -261.500 121.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.000 4.000 S -(j) -0.666 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 264.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -269.500 115.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 115.000 272.500 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -278.000 121.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -4.308 4.000 S -(2) -0.974 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.500 233.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -238.500 165.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.500 243.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -247.500 171.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.000 4.000 S -(j) -0.666 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.500 250.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -255.500 165.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.500 257.500 0.000 0.000 12.000 5.000 rect -%@EndRect -gsave -260.000 171.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.308 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.500 260.500 0.000 0.000 12.000 12.000 rect -%@EndRect -gsave -266.500 171.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -6.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 135.500 302.000 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -311.500 147.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.500 7.000 S -(.) -3.500 7.000 S -(.) 2.500 7.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 7.500 273.000 0.000 0.000 31.000 86.000 rect -%@EndRect -gsave -316.000 23.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.389 -3.000 S -(i) -9.603 -3.000 S -(n) -5.713 -3.000 S -(g) 1.286 -3.000 S -(l) 8.286 -3.000 S -(e) 12.175 -3.000 S -( ) 18.389 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -27.886 12.000 S -(a) -17.775 12.000 S -(u) -11.562 12.000 S -(s) -4.562 12.000 S -(s) 0.886 12.000 S -(i) 6.334 12.000 S -(a) 10.224 12.000 S -(n) 16.437 12.000 S -(s) 23.437 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 132.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 130.000 108.000 96.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.000 108.000 168.000 108.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 147.000 0.000 0.000 15.000 5.000 rect -%@EndRect -gsave -149.500 107.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.693 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.500 96.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -101.000 94.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.500 106.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -110.000 100.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -3.500 4.000 S -(j) -0.166 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.000 110.000 0.000 0.000 46.000 88.000 rect -%@EndRect -gsave -154.000 66.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -39.158 -11.000 S -(-) -26.710 -11.000 S -(c) -22.048 -11.000 S -(o) -15.834 -11.000 S -(m) -8.834 -11.000 S -(p) 2.055 -11.000 S -(o) 9.055 -11.000 S -(n) 16.055 -11.000 S -(e) 23.055 -11.000 S -(n) 29.269 -11.000 S -(t) 36.269 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -25.162 4.000 S -(a) -15.051 4.000 S -(u) -8.837 4.000 S -(s) -1.837 4.000 S -(s) 3.610 4.000 S -(i) 9.058 4.000 S -(a) 12.948 4.000 S -(n) 19.162 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -21.272 19.000 S -(i) -10.382 19.000 S -(x) -6.493 19.000 S -(t) 0.506 19.000 S -(u) 4.396 19.000 S -(r) 11.396 19.000 S -(e) 16.058 19.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 222.331 102.500 205.331 102.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 222.331 108.000 205.331 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 222.331 113.000 205.331 113.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.500 307.500 0.000 0.000 16.000 4.696 rect -%@EndRect -gsave -309.848 59.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 312.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -315.500 68.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.500 307.500 0.000 0.000 16.000 4.696 rect -%@EndRect -gsave -309.848 105.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 107.500 312.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -315.500 114.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.500 305.500 0.000 0.000 16.000 4.696 rect -%@EndRect -gsave -307.848 204.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 206.500 310.500 0.000 0.000 14.000 10.669 rect -%@EndRect -gsave -315.834 213.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -5.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/subword.eps b/HTKBook/HTKFigs/subword.eps deleted file mode 100644 index 301e0af..0000000 --- a/HTKBook/HTKFigs/subword.eps +++ /dev/null @@ -1,4497 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: subword.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/4/95 9:49:31 p.m. -%%BoundingBox: 71.500 348.500 414.500 784.000 -%%QDBoundingBox: 71.500 8.000 414.500 443.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 210.000 351.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 216.500 356.500 0.000 0.000 16.000 54.448 rect -%@EndRect -gsave -383.724 224.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.000 4.000 S -(C) -16.889 4.000 S -(o) -7.551 4.000 S -(m) -0.551 4.000 S -(p) 10.337 4.000 S -(V) 17.337 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 288.000 225.000 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 294.500 241.500 0.000 0.000 16.000 43.551 rect -%@EndRect -gsave -263.275 302.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.000 4.000 S -(E) -10.889 4.000 S -(R) -2.337 4.000 S -(e) 7.000 4.000 S -(s) 13.213 4.000 S -(t) 18.662 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 333.000 171.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 180.500 0.000 0.000 16.000 35.772 rect -%@EndRect -gsave -198.386 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(H) -6.889 4.000 S -(E) 3.220 4.000 S -(d) 11.772 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 83.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 94.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 108.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 125.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 137.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 150.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.750 83.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -134.448 45.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 157.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 144.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 125.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 114.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 101.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 83.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.250 83.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -125.886 75.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 72.000 0.000 0.000 63.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.500 79.500 0.000 0.000 14.000 96.281 rect -%@EndRect -gsave -127.640 25.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -48.000 3.000 S -(a) -40.669 3.000 S -(b) -35.343 3.000 S -(e) -29.343 3.000 S -(l) -24.017 3.000 S -(l) -20.683 3.000 S -(e) -17.349 3.000 S -(d) -12.023 3.000 S -( ) -6.023 3.000 S -(U) -3.023 3.000 S -(t) 5.642 3.000 S -(t) 8.976 3.000 S -(e) 12.310 3.000 S -(r) 17.636 3.000 S -(a) 21.632 3.000 S -(n) 26.958 3.000 S -(c) 32.958 3.000 S -(e) 38.285 3.000 S -(s) 43.611 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 135.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 133.000 126.000 99.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 189.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 108.500 0.000 0.000 16.000 35.000 rect -%@EndRect -gsave -126.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(R) -6.889 4.000 S -(e) 2.448 4.000 S -(s) 8.662 4.000 S -(t) 14.110 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 110.500 0.000 0.000 16.000 29.551 rect -%@EndRect -gsave -125.275 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 4.000 S -(I) -3.889 4.000 S -(n) 0.772 4.000 S -(i) 7.772 4.000 S -(t) 11.662 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 187.000 126.000 162.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 405.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 401.000 261.000 315.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 306.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.000 306.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 333.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 378.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 227.000 377.999 261.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 360.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 378.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 342.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 306.000 315.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -297.000 306.000 moveto -/Triangular 16.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 301.000 305.999 315.000 306.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 412.500 230.500 0.000 0.000 31.000 58.324 rect -%@EndRect -gsave -259.662 428.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -29.000 -3.000 S -(u) -21.213 -3.000 S -(b) -14.213 -3.000 S -(-) -7.213 -3.000 S -(W) -2.551 -3.000 S -(o) 10.662 -3.000 S -(r) 17.662 -3.000 S -(d) 22.324 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -20.065 12.000 S -(M) -9.955 12.000 S -(M) 2.493 12.000 S -(s) 14.941 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 210.000 moveto -/Triangular 14.099 7.049 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.585 208.585 324.000 156.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 216.000 0.000 0.000 108.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.500 215.500 0.000 0.000 14.000 106.951 rect -%@EndRect -gsave -268.975 91.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -53.000 3.000 S -(n) -44.333 3.000 S -(l) -38.333 3.000 S -(a) -35.000 3.000 S -(b) -29.673 3.000 S -(e) -23.673 3.000 S -(l) -18.347 3.000 S -(l) -15.013 3.000 S -(e) -11.679 3.000 S -(d) -6.353 3.000 S -( ) -0.353 3.000 S -(U) 2.646 3.000 S -(t) 11.312 3.000 S -(t) 14.646 3.000 S -(e) 17.980 3.000 S -(r) 23.306 3.000 S -(a) 27.302 3.000 S -(n) 32.628 3.000 S -(c) 38.628 3.000 S -(e) 43.955 3.000 S -(s) 49.281 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 17.500 234.500 0.000 0.000 14.000 69.316 rect -%@EndRect -gsave -269.158 24.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.000 3.000 S -(r) -26.669 3.000 S -(a) -22.673 3.000 S -(n) -17.347 3.000 S -(s) -11.347 3.000 S -(c) -6.677 3.000 S -(r) -1.351 3.000 S -(i) 2.644 3.000 S -(p) 5.978 3.000 S -(t) 11.978 3.000 S -(i) 15.312 3.000 S -(o) 18.646 3.000 S -(n) 24.646 3.000 S -(s) 30.646 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.750 224.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -275.448 47.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.250 224.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -266.886 64.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 35.000 216.000 0.000 0.000 42.000 107.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -2.000 0 9.000 207.000 0.000 0.000 216.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 288.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 284.000 261.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 288.000 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.335 286.890 126.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 288.000 moveto -/Triangular 14.099 7.049 false 331.541 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.757 287.046 382.000 237.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/sysoview.eps b/HTKBook/HTKFigs/sysoview.eps deleted file mode 100644 index 867a974..0000000 --- a/HTKBook/HTKFigs/sysoview.eps +++ /dev/null @@ -1,437 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: sysoview.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 509 419 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 419 moveto 0 0 lineto 509 0 lineto 509 419 lineto closepath clip newpath --34.0 466.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -/Times-Roman ff 300.00 scf sf -900 7200 m -gs 1 -1 sc (HP) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1275 7200 m -gs 1 -1 sc (ARSE) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3600 5700 m -gs 1 -1 sc (HV) col-1 sh gr -/Times-Roman ff 240.00 scf sf -4050 5700 m -gs 1 -1 sc (ITE) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2025 3450 m -gs 1 -1 sc (HC) col-1 sh gr -/Times-Roman ff 240.00 scf sf -2475 3450 m -gs 1 -1 sc (OMP) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3000 3450 m -gs 1 -1 sc (V, H) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3600 3450 m -gs 1 -1 sc (INIT) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4125 3450 m -gs 1 -1 sc (, HR) col-1 sh gr -/Times-Roman ff 240.00 scf sf -4650 3450 m -gs 1 -1 sc (EST) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5100 3450 m -gs 1 -1 sc (, HER) col-1 sh gr -/Times-Roman ff 240.00 scf sf -5850 3450 m -gs 1 -1 sc (EST) col-1 sh gr -% Polyline -30.000 slw -n 830 6600 m 1950 6600 l 1950 7275 l 830 7275 l - cp gs col-1 s gr -% Polyline -n 705 5850 m 600 5850 600 6120 105 arcto 4 {pop} repeat - 600 6225 1995 6225 105 arcto 4 {pop} repeat - 2100 6225 2100 5955 105 arcto 4 {pop} repeat - 2100 5850 705 5850 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 705 5025 m 600 5025 600 5295 105 arcto 4 {pop} repeat - 600 5400 1995 5400 105 arcto 4 {pop} repeat - 2100 5400 2100 5130 105 arcto 4 {pop} repeat - 2100 5025 705 5025 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 750 4275 m 2025 4275 l 2025 4650 l 750 4650 l - cp gs col-1 s gr -% Polyline -n 1950 3075 m 6375 3075 l 6375 3900 l 1950 3900 l - cp gs col-1 s gr -% Polyline -n 3630 4275 m 3525 4275 3525 4545 105 arcto 4 {pop} repeat - 3525 4650 4545 4650 105 arcto 4 {pop} repeat - 4650 4650 4650 4380 105 arcto 4 {pop} repeat - 4650 4275 3630 4275 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 3300 5250 m 4800 5250 l 4800 5925 l 3300 5925 l - cp gs col-1 s gr -% Polyline -n 3255 6450 m 3150 6450 3150 6720 105 arcto 4 {pop} repeat - 3150 6825 4920 6825 105 arcto 4 {pop} repeat - 5025 6825 5025 6555 105 arcto 4 {pop} repeat - 5025 6450 3255 6450 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 3375 7200 m 4800 7200 l 4800 7575 l 3375 7575 l - cp gs col-1 s gr -% Polyline -n 4530 2175 m 4425 2175 4425 2445 105 arcto 4 {pop} repeat - 4425 2550 5520 2550 105 arcto 4 {pop} repeat - 5625 2550 5625 2280 105 arcto 4 {pop} repeat - 5625 2175 4530 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 2430 2175 m 2325 2175 2325 2445 105 arcto 4 {pop} repeat - 2325 2550 4095 2550 105 arcto 4 {pop} repeat - 4200 2550 4200 2280 105 arcto 4 {pop} repeat - 4200 2175 2430 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 1275 975 m 2550 975 l 2550 1800 l 1275 1800 l - cp gs col-1 s gr -% Polyline -n 6000 900 m 7275 900 l 7275 2175 l 6000 2175 l - cp gs col-1 s gr -% Polyline - [60] 0 sd -n 7500 825 m 7800 825 l 7800 2400 l - 7500 2400 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7500 2550 m 7800 2550 l 7800 4125 l - 7500 4125 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7500 4275 m 7800 4275 l 7800 6675 l - 7500 6675 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7500 6825 m 7800 6825 l 7800 7725 l - 7500 7725 l gs col-1 s gr [] 0 sd -% Polyline -gs clippath -4995 2190 m 5055 2190 l 5055 2023 l 5025 2143 l 4995 2023 l cp -eoclip -n 6000 1575 m 5025 1575 l - 5025 2175 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4995 2023 m 5025 2143 l 5055 2023 l 4995 2023 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4616 3069 m 4665 3104 l 4763 2968 l 4669 3049 l 4714 2933 l cp -eoclip -n 5025 2550 m - 4650 3075 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4714 2933 m 4669 3049 l 4763 2968 l 4714 2933 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3270 2190 m 3330 2190 l 3330 2023 l 3300 2143 l 3270 2023 l cp -eoclip -n 2550 1350 m 3300 1350 l - 3300 2175 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3270 2023 m 3300 2143 l 3330 2023 l 3270 2023 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3659 3104 m 3708 3069 l 3610 2933 l 3656 3049 l 3561 2968 l cp -eoclip -n 3300 2550 m - 3675 3075 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3561 2968 m 3656 3049 l 3610 2933 l 3561 2968 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1320 5040 m 1380 5040 l 1380 4873 l 1350 4993 l 1320 4873 l cp -eoclip -n 1350 4650 m - 1350 5025 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1320 4873 m 1350 4993 l 1380 4873 l 1320 4873 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1380 6210 m 1320 6210 l 1320 6377 l 1350 6257 l 1380 6377 l cp -eoclip -n 1350 6225 m - 1350 6600 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1380 6377 m 1350 6257 l 1320 6377 l 1380 6377 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3311 5431 m 3318 5372 l 3152 5351 l 3268 5396 l 3145 5410 l cp -eoclip -n 2100 5250 m - 3300 5400 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3145 5410 m 3268 5396 l 3152 5351 l 3145 5410 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3321 5800 m 3307 5742 l 3145 5783 l 3269 5783 l 3159 5841 l cp -eoclip -n 2100 6075 m - 3300 5775 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3159 5841 m 3269 5783 l 3145 5783 l 3159 5841 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4020 4290 m 4080 4290 l 4080 4123 l 4050 4243 l 4020 4123 l cp -eoclip -n 4050 3900 m - 4050 4275 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4020 4123 m 4050 4243 l 4080 4123 l 4020 4123 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4020 5265 m 4080 5265 l 4080 5098 l 4050 5218 l 4020 5098 l cp -eoclip -n 4050 4650 m - 4050 5250 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4020 5098 m 4050 5218 l 4080 5098 l 4020 5098 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4020 6465 m 4080 6465 l 4080 6298 l 4050 6418 l 4020 6298 l cp -eoclip -n 4050 5925 m - 4050 6450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4020 6298 m 4050 6418 l 4080 6298 l 4020 6298 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4080 6810 m 4020 6810 l 4020 6977 l 4050 6857 l 4080 6977 l cp -eoclip -n 4050 6825 m - 4050 7200 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4080 6977 m 4050 6857 l 4020 6977 l 4080 6977 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 300.00 scf sf -7875 1500 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 1770 m -gs 1 -1 sc (Prep) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 3375 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 5550 m -gs 1 -1 sc (Testing) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 7350 m -gs 1 -1 sc (Analysis) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3675 4575 m -gs 1 -1 sc (HMMs) col-1 sh gr -/Times-Roman ff 300.00 scf sf -750 6150 m -gs 1 -1 sc (Networks) col-1 sh gr -/Times-Roman ff 300.00 scf sf -675 5325 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 300.00 scf sf -1350 1275 m -gs 1 -1 sc (HLE) col-1 sh gr -/Times-Roman ff 300.00 scf sf -900 4575 m -gs 1 -1 sc (HDM) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1575 4575 m -gs 1 -1 sc (AN) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 2100 m -gs 1 -1 sc (HQ) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 1200 m -gs 1 -1 sc (HSL) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6600 1200 m -gs 1 -1 sc (AB) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 1500 m -gs 1 -1 sc (HC) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 1800 m -gs 1 -1 sc (HL) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4650 2475 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1950 1275 m -gs 1 -1 sc (D) col-1 sh gr -/Times-Roman ff 300.00 scf sf -1350 1650 m -gs 1 -1 sc (HLS) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6525 2100 m -gs 1 -1 sc (UANT) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6450 1800 m -gs 1 -1 sc (IST) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6525 1500 m -gs 1 -1 sc (OPY) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1875 1650 m -gs 1 -1 sc (TATS) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3450 7500 m -gs 1 -1 sc (HR) col-1 sh gr -/Times-Roman ff 300.00 scf sf -900 6900 m -gs 1 -1 sc (HB) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1275 6900 m -gs 1 -1 sc (UILD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3825 7500 m -gs 1 -1 sc (ESULTS) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2325 3825 m -gs 1 -1 sc (HS) col-1 sh gr -/Times-Roman ff 240.00 scf sf -2700 3825 m -gs 1 -1 sc (MOOTH) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3600 3825 m -gs 1 -1 sc (, HHE) col-1 sh gr -/Times-Roman ff 240.00 scf sf -4350 3825 m -gs 1 -1 sc (D) col-1 sh gr -/Times-Roman ff 240.00 scf sf -5325 3825 m -gs 1 -1 sc (DAPT) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4575 3825 m -gs 1 -1 sc (, HEA) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3225 6750 m -gs 1 -1 sc (Transcriptions) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2400 2475 m -gs 1 -1 sc (Transcriptions) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/tcover.eps b/HTKBook/HTKFigs/tcover.eps deleted file mode 100644 index 2a21772..0000000 --- a/HTKBook/HTKFigs/tcover.eps +++ /dev/null @@ -1,2068 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: tcover.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/21/96 12:01:01 a.m. -%%BoundingBox: 10 238 374 773 -%%QDBoundingBox: 10.500 19.500 373.222 553.500 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginText -save -%%IncludeFont: NewCenturySchlbk-Roman -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 19.500 10.500 0.000 0.000 53.000 152.335 rect -%@EndRect -gsave -86.667 46.000 T translate -0.0 rotate -1 1 scale -48.000 (NewCenturySchlbk-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(I) -76.000 17.000 S -(n) -56.453 17.000 S -(s) -27.132 17.000 S -(i) -4.914 17.000 S -(d) 10.203 17.000 S -(e) 37.765 17.000 S -( ) 61.765 17.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Helvetica-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica-Bold /Helvetica-Bold EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 146.500 79.500 0.000 0.000 128.000 93.328 rect -%@EndRect -gsave -126.164 210.500 T translate -0.0 rotate -1 1 scale -128.000 (_Helvetica-Bold) plain F -0.000 0.000 0.000 setrgbcolor -(H) -46.000 36.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 146.500 224.500 0.000 0.000 128.000 93.328 rect -%@EndRect -gsave -271.164 210.500 T translate -0.0 rotate -1 1 scale -128.000 (_Helvetica-Bold) fess -0.000 0.000 0.000 setrgbcolor -(K) -46.000 36.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 114.500 144.500 0.000 0.000 170.000 104.187 rect -%@EndRect -gsave -196.593 199.500 T translate -0.0 rotate -1 1 scale -170.000 (_Helvetica-Bold) fess -0.000 0.000 0.000 setrgbcolor -(T) -52.000 47.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: NewCenturySchlbk-Roman -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 330.500 202.500 0.000 0.000 120.000 170.722 rect -%@EndRect -gsave -287.861 390.500 T translate -0.0 rotate -1 1 scale -24.000 (NewCenturySchlbk-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(J) -51.199 -40.000 S -(o) -37.851 -40.000 S -(o) -25.851 -40.000 S -(p) -13.851 -40.000 S -( ) -0.070 -40.000 S -(J) 6.597 -40.000 S -(a) 19.945 -40.000 S -(n) 33.292 -40.000 S -(s) 47.953 -40.000 S -(e) 59.062 -40.000 S -(n) 71.062 -40.000 S -0.000 0.000 0.000 setrgbcolor -(J) -51.644 -16.000 S -(u) -38.296 -16.000 S -(l) -23.636 -16.000 S -(i) -16.078 -16.000 S -(a) -8.519 -16.000 S -(n) 4.828 -16.000 S -( ) 19.488 -16.000 S -(O) 26.156 -16.000 S -(d) 44.824 -16.000 S -(e) 58.605 -16.000 S -(l) 70.605 -16.000 S -(l) 78.164 -16.000 S -0.000 0.000 0.000 setrgbcolor -(D) -62.753 8.000 S -(a) -44.085 8.000 S -(v) -30.738 8.000 S -(e) -17.847 8.000 S -( ) -5.847 8.000 S -(O) 0.820 8.000 S -(l) 19.488 8.000 S -(l) 27.046 8.000 S -(a) 34.605 8.000 S -(s) 47.953 8.000 S -(o) 59.062 8.000 S -(n) 71.062 8.000 S -0.000 0.000 0.000 setrgbcolor -(P) -77.402 32.000 S -(h) -61.394 32.000 S -(i) -46.734 32.000 S -(l) -39.175 32.000 S -( ) -31.617 32.000 S -(W) -24.949 32.000 S -(o) -1.406 32.000 S -(o) 10.593 32.000 S -(d) 22.593 32.000 S -(l) 36.375 32.000 S -(a) 43.933 32.000 S -(n) 57.281 32.000 S -(d) 71.941 32.000 S -0.000 0.000 0.000 setrgbcolor -(S) -53.402 56.000 S -(t) -38.285 56.000 S -(e) -28.945 56.000 S -(v) -16.945 56.000 S -(e) -4.054 56.000 S -( ) 7.945 56.000 S -(Y) 14.613 56.000 S -(o) 31.511 56.000 S -(u) 43.511 56.000 S -(n) 58.171 56.000 S -(g) 72.832 56.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: ArialMT-CondensedLight -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_ArialMT-CondensedLight /ArialMT-CondensedLight EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 412.500 18.500 0.000 0.000 26.000 119.000 rect -%@EndRect -gsave -78.000 425.500 T translate -0.0 rotate -1 1 scale -24.000 (_ArialMT-CondensedLight) plain F -0.000 0.000 0.000 setrgbcolor -(V) -59.000 9.000 S -(e) -45.001 9.000 S -(r) -33.757 9.000 S -(s) -25.009 9.000 S -(i) -13.765 9.000 S -(o) -6.517 9.000 S -(n) 6.226 9.000 S -( ) 18.970 9.000 S -(2) 26.968 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -3.000 122.000 410.000 14.000 410.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -3.000 122.000 443.000 14.000 443.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: NewCenturySchlbk-Roman -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 537.500 34.500 0.000 0.000 16.000 320.000 rect -%@EndRect -gsave -194.500 545.500 T translate -0.0 rotate -1 1 scale -14.000 (NewCenturySchlbk-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(©) -159.917 5.000 S -( ) -149.602 5.000 S -(E) -145.712 5.000 S -(n) -135.602 5.000 S -(t) -127.050 5.000 S -(r) -121.602 5.000 S -(o) -115.388 5.000 S -(p) -108.388 5.000 S -(i) -100.349 5.000 S -(c) -95.940 5.000 S -( ) -89.726 5.000 S -(C) -85.836 5.000 S -(a) -75.726 5.000 S -(m) -67.940 5.000 S -(b) -55.492 5.000 S -(r) -47.706 5.000 S -(i) -41.492 5.000 S -(d) -37.083 5.000 S -(g) -29.043 5.000 S -(e) -21.524 5.000 S -( ) -14.524 5.000 S -(R) -10.634 5.000 S -(e) -0.524 5.000 S -(s) 6.475 5.000 S -(e) 12.956 5.000 S -(a) 19.956 5.000 S -(r) 27.742 5.000 S -(c) 33.956 5.000 S -(h) 40.169 5.000 S -( ) 48.721 5.000 S -(L) 52.611 5.000 S -(a) 61.949 5.000 S -(b) 69.735 5.000 S -(o) 77.521 5.000 S -(r) 84.521 5.000 S -(a) 90.735 5.000 S -(t) 98.521 5.000 S -(o) 103.969 5.000 S -(r) 110.969 5.000 S -(y) 117.183 5.000 S -( ) 124.703 5.000 S -(1) 128.592 5.000 S -(9) 136.378 5.000 S -(9) 144.165 5.000 S -(6) 151.951 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/tiedstate.eps b/HTKBook/HTKFigs/tiedstate.eps deleted file mode 100644 index 95aee47..0000000 --- a/HTKBook/HTKFigs/tiedstate.eps +++ /dev/null @@ -1,6154 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: tiedstate.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 8:10:59 p.m. -%%BoundingBox: 121.135 427.750 440.135 706.250 -%%QDBoundingBox: 121.135 85.750 440.135 364.250 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 155.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.266 120.638 155.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.445 132.388 164.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.945 132.388 126.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 121.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 191.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 153.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 136.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 136.516 120.638 136.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 135.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.695 132.388 145.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 174.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -174.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 174.016 120.638 174.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 172.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -191.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 190.195 132.388 183.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 236.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -236.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.266 120.638 236.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -253.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.445 132.388 245.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.945 132.388 207.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 202.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 272.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 234.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 217.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.516 120.638 217.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 216.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.695 132.388 226.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 255.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -255.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 255.016 120.638 255.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 253.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -272.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.195 132.388 264.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 317.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -317.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 317.266 120.638 317.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -334.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.445 132.388 326.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.945 132.388 288.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 283.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 353.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 315.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 298.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.516 120.638 298.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 297.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 314.695 132.388 307.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 336.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -336.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 336.016 120.638 336.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 334.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -353.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.195 132.388 345.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 398.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -398.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 398.266 120.638 398.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.445 132.388 407.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.945 132.388 369.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 364.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 434.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 396.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 379.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.516 120.638 379.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 378.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 395.695 132.388 388.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 417.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -417.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 417.016 120.638 417.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 415.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -434.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 433.195 132.388 426.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 139.135 0.000 0.000 16.000 34.336 rect -%@EndRect -gsave -156.304 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -16.364 4.000 S -(-) -12.474 4.000 S -(i) -7.812 4.000 S -(h) -3.922 4.000 S -(+) 3.077 4.000 S -(n) 10.972 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 220.135 0.000 0.000 16.000 41.336 rect -%@EndRect -gsave -240.804 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -20.364 4.000 S -(-) -16.474 4.000 S -(i) -11.812 4.000 S -(h) -7.922 4.000 S -(+) -0.922 4.000 S -(n) 6.972 4.000 S -(g) 13.972 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 305.135 0.000 0.000 16.000 31.999 rect -%@EndRect -gsave -321.135 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -15.364 4.000 S -(-) -10.702 4.000 S -(i) -6.039 4.000 S -(h) -2.150 4.000 S -(+) 4.849 4.000 S -(l) 12.745 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 386.135 0.000 0.000 16.000 32.785 rect -%@EndRect -gsave -402.528 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -16.364 4.000 S -(-) -10.915 4.000 S -(i) -6.253 4.000 S -(h) -2.364 4.000 S -(+) 4.635 4.000 S -(l) 12.531 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 130.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 136.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 136.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 141.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 130.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 150.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 156.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 156.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 161.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 150.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 170.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 176.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 176.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 181.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 170.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 139.901 161.763 139.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 158.733 161.763 158.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.564 161.763 177.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 211.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 217.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 217.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 222.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 211.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 231.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 237.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 237.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 242.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 231.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 251.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 257.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 257.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 262.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 251.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 220.901 161.763 220.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 239.733 161.763 239.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 258.564 161.763 258.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 292.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 298.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 298.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 303.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 292.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 312.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 318.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 318.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 323.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 312.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 332.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 338.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 338.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 343.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 332.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 301.901 161.763 301.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 320.733 161.763 320.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 339.564 161.763 339.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 373.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 379.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 379.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 384.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 373.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 393.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 399.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 399.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 404.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 393.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 413.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 419.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 419.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 424.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 413.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 382.901 161.763 382.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 401.733 161.763 401.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 420.564 161.763 420.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 155.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.266 295.638 155.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.445 307.388 164.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.945 307.388 126.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 121.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 191.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 153.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 136.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 136.516 295.638 136.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 135.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.695 307.388 145.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 174.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -174.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 174.016 295.638 174.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 172.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -191.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 190.195 307.388 183.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 236.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -236.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.266 295.638 236.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -253.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.445 307.388 245.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.945 307.388 207.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 202.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 272.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 234.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 217.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.516 295.638 217.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 216.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.695 307.388 226.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 255.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -255.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 255.016 295.638 255.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 253.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -272.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.195 307.388 264.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 317.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -317.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 317.266 295.638 317.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -334.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.445 307.388 326.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.945 307.388 288.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 283.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 353.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 315.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 298.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.516 295.638 298.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 297.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 314.695 307.388 307.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 336.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -336.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 336.016 295.638 336.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 334.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -353.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.195 307.388 345.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 398.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -398.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 398.266 295.638 398.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.445 307.388 407.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.945 307.388 369.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 364.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 434.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 396.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 379.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.516 295.638 379.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 378.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 395.695 307.388 388.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 417.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -417.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 417.016 295.638 417.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 415.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -434.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 433.195 307.388 426.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 136.327 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 143.167 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 143.167 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 147.487 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 136.687 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 195.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 201.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 201.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 206.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 195.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 233.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 239.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 239.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 244.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 233.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 142.997 335.989 139.901 314.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 200.637 335.989 158.733 314.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.564 336.763 177.564 314.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 247.135 336.750 258.457 315.654 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.306 335.632 239.135 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 208.950 335.632 321.176 315.509 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 147.806 336.406 222.108 314.735 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 305.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 311.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 311.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 316.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 305.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 341.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 347.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 347.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 352.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 341.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 395.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 401.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 401.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 406.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 395.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 308.018 336.406 301.827 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.080 336.406 383.094 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 345.169 335.632 339.751 315.509 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.457 336.406 421.018 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 404.765 337.180 402.443 314.735 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 140.771 0.000 0.000 16.000 34.336 rect -%@EndRect -gsave -157.940 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -16.728 4.000 S -(-) -12.838 4.000 S -(i) -8.176 4.000 S -(h) -4.286 4.000 S -(+) 2.713 4.000 S -(n) 10.608 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 221.771 0.000 0.000 16.000 41.336 rect -%@EndRect -gsave -242.440 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -19.728 4.000 S -(-) -15.838 4.000 S -(i) -11.176 4.000 S -(h) -7.286 4.000 S -(+) -0.286 4.000 S -(n) 7.608 4.000 S -(g) 14.608 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 306.771 0.000 0.000 16.000 31.999 rect -%@EndRect -gsave -322.771 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -15.728 4.000 S -(-) -11.066 4.000 S -(i) -6.404 4.000 S -(h) -2.514 4.000 S -(+) 4.485 4.000 S -(l) 12.380 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 387.771 0.000 0.000 16.000 32.785 rect -%@EndRect -gsave -404.164 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -15.728 4.000 S -(-) -10.280 4.000 S -(i) -5.618 4.000 S -(h) -1.728 4.000 S -(+) 5.271 4.000 S -(l) 13.167 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -277.664 263.750 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 277.664 259.750 277.664 200.750 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 216.500 288.500 0.000 0.000 16.000 83.671 rect -%@EndRect -gsave -330.335 224.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -39.024 4.000 S -(C) -30.472 4.000 S -( ) -21.134 4.000 S -(C) -17.634 4.000 S -(o) -8.296 4.000 S -(m) -1.296 4.000 S -(m) 9.592 4.000 S -(a) 20.482 4.000 S -(n) 26.696 4.000 S -(d) 33.696 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/tmixeg.eps b/HTKBook/HTKFigs/tmixeg.eps deleted file mode 100644 index 5a2107e..0000000 --- a/HTKBook/HTKFigs/tmixeg.eps +++ /dev/null @@ -1,2564 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: tmixeg.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:4/7/95 9:48:23 p.m. -%%BoundingBox: 17.500 496.500 432.500 765.500 -%%QDBoundingBox: 17.500 26.500 432.500 295.500 -%%DocumentFonts: Helvetica -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 214.656 238.500 0.000 0.000 19.343 36.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 19.343] CP -[2.160 18.287 3.579 18.017 5.538 16.637] CP -[6.777 15.764 7.414 15.142 8.307 13.931] CP -[9.719 12.017 9.996 10.631 11.076 8.520] CP -[12.156 6.410 12.434 5.023 13.846 3.109] CP -[14.739 1.898 15.204 0.974 16.615 0.403] CP -[17.613 0.000 18.386 0.000 19.384 0.403] CP -[20.795 0.974 21.260 1.898 22.153 3.109] CP -[23.565 5.023 23.843 6.410 24.923 8.520] CP -[26.003 10.631 26.280 12.017 27.692 13.931] CP -[28.585 15.142 29.222 15.764 30.461 16.637] CP -[32.420 18.017 33.839 18.287 36.000 19.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 205.656 184.500 0.000 0.000 28.343 36.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 28.343] CP -[2.160 26.796 3.579 26.400 5.538 24.378] CP -[6.777 23.100 7.414 22.187 8.307 20.414] CP -[9.719 17.609 9.996 15.577 11.076 12.485] CP -[12.156 9.392 12.434 7.360 13.846 4.556] CP -[14.739 2.782 15.204 1.428 16.615 0.591] CP -[17.613 0.000 18.386 0.000 19.384 0.591] CP -[20.795 1.428 21.260 2.782 22.153 4.556] CP -[23.565 7.360 23.843 9.392 24.923 12.485] CP -[26.003 15.577 26.280 17.609 27.692 20.414] CP -[28.585 22.187 29.222 23.100 30.461 24.378] CP -[32.420 26.400 33.839 26.796 36.000 28.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 196.656 391.500 0.000 0.000 37.343 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 37.343] CP -[1.080 35.305 1.789 34.783 2.769 32.119] CP -[3.388 30.435 3.707 29.233 4.153 26.896] CP -[4.859 23.201 4.998 20.523 5.538 16.449] CP -[6.078 12.375 6.217 9.698 6.923 6.002] CP -[7.369 3.665 7.602 1.882 8.307 0.779] CP -[8.806 0.000 9.193 0.000 9.692 0.779] CP -[10.397 1.882 10.630 3.665 11.076 6.002] CP -[11.782 9.698 11.921 12.375 12.461 16.449] CP -[13.001 20.523 13.140 23.201 13.846 26.896] CP -[14.292 29.233 14.611 30.435 15.230 32.119] CP -[16.210 34.783 16.919 35.305 18.000 37.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 214.656 90.000 0.000 0.000 19.343 45.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 19.343] CP -[2.700 18.287 4.474 18.017 6.923 16.637] CP -[8.471 15.764 9.268 15.142 10.384 13.931] CP -[12.149 12.017 12.496 10.631 13.846 8.520] CP -[15.196 6.410 15.542 5.023 17.307 3.109] CP -[18.424 1.898 19.005 0.974 20.769 0.403] CP -[22.016 0.000 22.983 0.000 24.230 0.403] CP -[25.994 0.974 26.575 1.898 27.692 3.109] CP -[29.457 5.023 29.803 6.410 31.153 8.520] CP -[32.503 10.631 32.850 12.017 34.615 13.931] CP -[35.731 15.142 36.528 15.764 38.076 16.637] CP -[40.525 18.017 42.300 18.287 45.000 19.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 205.656 40.500 0.000 0.000 28.343 36.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 28.343] CP -[2.160 26.796 3.579 26.400 5.538 24.378] CP -[6.777 23.100 7.414 22.187 8.307 20.414] CP -[9.719 17.609 9.996 15.577 11.076 12.485] CP -[12.156 9.392 12.434 7.360 13.846 4.556] CP -[14.739 2.782 15.204 1.428 16.615 0.591] CP -[17.613 0.000 18.386 0.000 19.384 0.591] CP -[20.795 1.428 21.260 2.782 22.153 4.556] CP -[23.565 7.360 23.843 9.392 24.923 12.485] CP -[26.003 15.577 26.280 17.609 27.692 20.414] CP -[28.585 22.187 29.222 23.100 30.461 24.378] CP -[32.420 26.400 33.839 26.796 36.000 28.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 196.656 144.000 0.000 0.000 37.343 27.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 37.343] CP -[1.620 35.305 2.684 34.783 4.153 32.119] CP -[5.083 30.435 5.560 29.233 6.230 26.896] CP -[7.289 23.201 7.497 20.523 8.307 16.449] CP -[9.117 12.375 9.325 9.698 10.384 6.002] CP -[11.054 3.665 11.403 1.882 12.461 0.779] CP -[13.209 0.000 13.790 0.000 14.538 0.779] CP -[15.596 1.882 15.945 3.665 16.615 6.002] CP -[17.674 9.698 17.882 12.375 18.692 16.449] CP -[19.502 20.523 19.710 23.201 20.769 26.896] CP -[21.439 29.233 21.916 30.435 22.846 32.119] CP -[24.315 34.783 25.380 35.305 27.000 37.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginText -save -%%IncludeFont: Helvetica -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica /Helvetica EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 54.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -57.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 108.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -111.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 153.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -156.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 198.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -201.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 252.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -255.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 396.500 0.000 0.000 14.000 9.996 rect -%@EndRect -gsave -401.498 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.000 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 189.000 27.000 0.000 0.000 81.000 396.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.000 27.000 0.000 0.000 32.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 70.000 36.000 0.000 0.000 20.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 45.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 71.000 54.000 0.000 0.000 19.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 63.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 72.000 0.000 0.000 9.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 84.000 81.000 0.000 0.000 6.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 90.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 99.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 108.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.000 117.000 0.000 0.000 33.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 66.000 126.000 0.000 0.000 24.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 171.000 0.000 0.000 17.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 180.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 59.000 189.000 0.000 0.000 31.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 83.000 198.000 0.000 0.000 7.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 71.000 207.000 0.000 0.000 19.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 78.000 216.000 0.000 0.000 12.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 225.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.000 234.000 0.000 0.000 33.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 78.000 243.000 0.000 0.000 12.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 56.000 252.000 0.000 0.000 34.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 80.000 261.000 0.000 0.000 10.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.000 270.000 0.000 0.000 30.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.000 315.000 0.000 0.000 39.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 78.000 324.000 0.000 0.000 12.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 333.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 83.000 342.000 0.000 0.000 7.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.000 351.000 0.000 0.000 11.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.000 360.000 0.000 0.000 30.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 369.000 0.000 0.000 17.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 378.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 53.000 387.000 0.000 0.000 37.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 396.000 0.000 0.000 9.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.000 405.000 0.000 0.000 21.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.000 414.000 0.000 0.000 33.000 9.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 62.500 0.000 0.000 16.000 35.382 rect -%@EndRect -gsave -80.191 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.000 4.000 S -(t) -9.213 4.000 S -(a) -5.324 4.000 S -(t) 0.889 4.000 S -(e) 4.779 4.000 S -( ) 10.993 4.000 S -(i) 14.493 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 206.500 0.000 0.000 16.000 35.382 rect -%@EndRect -gsave -224.191 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.000 4.000 S -(t) -9.213 4.000 S -(a) -5.324 4.000 S -(t) 0.889 4.000 S -(e) 4.779 4.000 S -( ) 10.993 4.000 S -(j) 14.493 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 350.500 0.000 0.000 16.000 38.493 rect -%@EndRect -gsave -369.746 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -19.000 4.000 S -(t) -11.213 4.000 S -(a) -7.324 4.000 S -(t) -1.110 4.000 S -(e) 2.779 4.000 S -( ) 8.993 4.000 S -(k) 12.493 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Helvetica -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica /Helvetica EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.000 27.000 0.000 0.000 14.000 110.050 rect -%@EndRect -gsave -82.025 106.000 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -54.500 3.000 S -( ) -47.826 3.000 S -(2) -44.492 3.000 S -( ) -37.818 3.000 S -(3) -34.484 3.000 S -( ) -27.810 3.000 S -(4) -24.476 3.000 S -( ) -17.802 3.000 S -(5) -14.468 3.000 S -( ) -7.794 3.000 S -(6) -4.460 3.000 S -( ) 2.212 3.000 S -( ) 5.546 3.000 S -( ) 8.880 3.000 S -( ) 12.214 3.000 S -(.) 15.548 3.000 S -(.) 18.882 3.000 S -(.) 22.216 3.000 S -( ) 25.550 3.000 S -( ) 28.884 3.000 S -( ) 32.218 3.000 S -( ) 35.552 3.000 S -( ) 38.886 3.000 S -( ) 42.220 3.000 S -(M) 45.554 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.000 171.000 0.000 0.000 14.000 110.050 rect -%@EndRect -gsave -226.025 106.000 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -54.500 3.000 S -( ) -47.826 3.000 S -(2) -44.492 3.000 S -( ) -37.818 3.000 S -(3) -34.484 3.000 S -( ) -27.810 3.000 S -(4) -24.476 3.000 S -( ) -17.802 3.000 S -(5) -14.468 3.000 S -( ) -7.794 3.000 S -(6) -4.460 3.000 S -( ) 2.212 3.000 S -( ) 5.546 3.000 S -( ) 8.880 3.000 S -( ) 12.214 3.000 S -(.) 15.548 3.000 S -(.) 18.882 3.000 S -(.) 22.216 3.000 S -( ) 25.550 3.000 S -( ) 28.884 3.000 S -( ) 32.218 3.000 S -( ) 35.552 3.000 S -( ) 38.886 3.000 S -( ) 42.220 3.000 S -(M) 45.554 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.000 315.000 0.000 0.000 14.000 110.050 rect -%@EndRect -gsave -370.025 106.000 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -54.500 3.000 S -( ) -47.826 3.000 S -(2) -44.492 3.000 S -( ) -37.818 3.000 S -(3) -34.484 3.000 S -( ) -27.810 3.000 S -(4) -24.476 3.000 S -( ) -17.802 3.000 S -(5) -14.468 3.000 S -( ) -7.794 3.000 S -(6) -4.460 3.000 S -( ) 2.212 3.000 S -( ) 5.546 3.000 S -( ) 8.880 3.000 S -( ) 12.214 3.000 S -(.) 15.548 3.000 S -(.) 18.882 3.000 S -(.) 22.216 3.000 S -( ) 25.550 3.000 S -( ) 28.884 3.000 S -( ) 32.218 3.000 S -( ) 35.552 3.000 S -( ) 38.886 3.000 S -( ) 42.220 3.000 S -(M) 45.554 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -90.000 180.000 moveto -/Triangular 16.799 8.399 false 261.889 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 89.434 176.040 81.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -225.000 180.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 224.999 176.000 225.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -360.000 180.000 moveto -/Triangular 16.799 8.399 false 278.149 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 360.565 176.040 369.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 18.000 0.000 0.000 90.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 162.000 0.000 0.000 90.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 306.000 0.000 0.000 90.000 126.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 279.500 153.500 0.000 0.000 16.000 136.472 rect -%@EndRect -gsave -221.736 287.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -68.000 4.000 S -(i) -59.448 4.000 S -(e) -55.558 4.000 S -(d) -49.344 4.000 S -(-) -42.344 4.000 S -(M) -37.682 4.000 S -(i) -25.234 4.000 S -(x) -21.344 4.000 S -(t) -14.344 4.000 S -(u) -10.455 4.000 S -(r) -3.455 4.000 S -(e) 1.207 4.000 S -( ) 7.420 4.000 S -(C) 10.920 4.000 S -(o) 20.258 4.000 S -(d) 27.258 4.000 S -(e) 34.258 4.000 S -(b) 40.472 4.000 S -(o) 47.472 4.000 S -(o) 54.472 4.000 S -(k) 61.472 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 225.500 324.500 0.000 0.000 26.000 18.000 rect -%@EndRect -gsave -333.500 238.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 6.000 S -(.) -3.000 6.000 S -(.) 3.000 6.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/toolkit.eps b/HTKBook/HTKFigs/toolkit.eps deleted file mode 100644 index ea48c47..0000000 --- a/HTKBook/HTKFigs/toolkit.eps +++ /dev/null @@ -1,3256 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: toolkit.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/14/95 11:32:12 a.m. -%%BoundingBox: 44.382 404.625 297.617 618.515 -%%QDBoundingBox: 44.382 173.484 297.617 387.374 -%%DocumentFonts: Times-Bold -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 87.117 0.000 0.000 72.000 0.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.117 305.874 87.117 269.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.117 386.874 87.117 341.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.117 386.874 159.117 305.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 293.374 159.117 305.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 368.874 159.117 386.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 368.874 285.117 294.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 293.374 212.617 258.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.117 291.874 212.617 260.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 160.617 302.374 277.117 291.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 97.117 271.874 160.617 302.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 212.617 296.874 212.617 260.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.617 307.874 213.617 309.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 213.117 318.874 213.117 309.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.117 316.624 235.117 308.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 213.117 319.374 234.617 316.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.017 313.329 222.476 0.000 0.000 12.500 5.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 -0.139 361.222 198.996 0.000 0.000 14.000 45.333 rect -%@EndRect -gsave -221.663 368.222 T translate -8.000 rotate -1 1 scale -12.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -22.503 3.000 S -(n) -14.499 3.000 S -(t) -7.825 3.000 S -(r) -3.829 3.000 S -(o) 1.496 3.000 S -(p) 7.496 3.000 S -(i) 14.170 3.000 S -(c) 17.504 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 213.117 258.874 87.117 269.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 212.617 261.374 97.617 271.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 61.617 196.624 87.117 269.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.617 190.374 212.117 257.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 62.117 196.374 180.617 189.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 59.617 208.374 61.117 197.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.117 267.374 59.117 208.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 86.617 269.374 79.617 267.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 123.117 265.874 102.617 267.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.117 259.374 177.617 261.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.617 192.374 65.117 198.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.117 255.874 179.117 191.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.617 266.374 208.617 255.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.617 265.874 65.117 198.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.617 200.874 178.617 192.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 68.117 207.374 177.617 200.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 203.117 255.374 177.617 200.374 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 231.353 49.769 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -51.000 245.439 moveto -/Triangular 4.699 7.049 false 243.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 50.698 244.845 49.437 242.370 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 219.568 72.898 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -74.130 233.654 moveto -/Triangular 4.699 7.049 false 243.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.827 233.060 72.566 230.585 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 207.783 96.027 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -97.259 221.869 moveto -/Triangular 4.699 7.049 false 243.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 96.956 221.275 95.695 218.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 247.167 53.986 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 235.382 77.115 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 223.597 100.244 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.794 257.423 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.200 257.725 44.882 262.473 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -77.923 245.638 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 77.329 245.941 68.011 250.689 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -101.052 233.853 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 100.458 234.156 91.140 238.904 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -124.182 222.068 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 123.587 222.371 114.269 227.119 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 197.874 177.302 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -177.302 209.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.302 208.918 177.302 206.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 197.874 203.261 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -203.261 209.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 203.261 208.918 203.261 206.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 197.874 229.219 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -229.219 209.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 229.219 208.918 229.219 206.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 215.096 175.242 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 215.096 201.200 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 215.096 227.159 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -175.242 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 174.575 221.985 164.117 221.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -201.200 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 200.534 221.985 190.075 221.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -227.159 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 226.492 221.985 216.034 221.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -253.117 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.450 221.985 241.992 221.985 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 258.874 192.117 0.000 0.000 29.000 104.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 260.874 199.117 0.000 0.000 26.000 89.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.518] CP -[0.316 8.409 0.949 5.456 1.898 3.659] CP -[2.848 1.861 3.678 1.412 4.390 2.311] CP -[5.102 3.209 5.735 5.135 6.289 8.088] CP -[6.843 11.041 7.278 13.545 7.594 15.600] CP -[7.911 17.654 8.306 19.516 8.781 21.185] CP -[9.255 22.854 10.007 23.913 11.035 24.362] CP -[12.064 24.812 12.815 24.362 13.290 23.014] CP -[13.765 21.666 14.002 19.997 14.002 18.007] CP -[14.002 16.017 14.358 14.027 15.070 12.037] CP -[15.782 10.046 16.455 8.634 17.087 7.800] CP -[17.720 6.965 18.314 7.158 18.867 8.377] CP -[19.421 9.597 19.936 11.138 20.410 13.000] CP -[20.885 14.861 21.478 16.402 22.190 17.622] CP -[22.902 18.841 23.654 19.227 24.445 18.777] CP -[25.236 18.328 25.750 17.943 25.988 17.622] CP -[26.225 17.301 26.541 16.274 26.937 14.540] CP -[27.332 12.807 28.005 11.298 28.954 10.014] CP -[29.903 8.730 30.734 8.474 31.446 9.244] CP -[32.158 10.014 32.633 11.009 32.870 12.229] CP -[33.107 13.449 33.463 14.444 33.938 15.214] CP -[34.413 15.985 35.085 16.209 35.956 15.888] CP -[36.826 15.567 37.577 14.733 38.210 13.385] CP -[38.843 12.037 39.476 11.234 40.109 10.977] CP -[40.742 10.720 41.770 11.234 43.194 12.518] CP -[44.618 13.802 45.844 14.059 46.873 13.288] CP -[47.901 12.518 48.851 11.748 49.721 10.977] CP -[50.591 10.207 51.540 8.827 52.569 6.837] CP -[53.597 4.846 54.665 3.209 55.773 1.925] CP -[56.880 0.641 57.632 0.256 58.027 0.770] CP -[58.423 1.283 58.819 2.888 59.214 5.585] CP -[59.610 8.281 60.045 10.913 60.519 13.481] CP -[60.994 16.049 61.271 17.943 61.350 19.162] CP -[61.429 20.382 61.864 21.827 62.656 23.496] CP -[63.447 25.165 64.396 25.743 65.503 25.229] CP -[66.611 24.716 67.323 24.298 67.639 23.977] CP -[67.956 23.656 68.431 22.661 69.063 20.992] CP -[69.696 19.323 70.171 17.365 70.487 15.118] CP -[70.804 12.871 71.358 10.592 72.149 8.281] CP -[72.940 5.970 73.533 4.718 73.929 4.525] CP -[74.324 4.333 75.076 4.782 76.183 5.874] CP -[77.291 6.965 78.043 8.602 78.438 10.785] CP -[78.834 12.967 79.269 14.540 79.743 15.503] CP -[80.218 16.466 80.732 16.916 81.286 16.851] CP -[81.840 16.787 82.473 16.274 83.185 15.311] CP -[83.897 14.348 84.609 13.224 85.321 11.940] CP -[86.033 10.656 86.784 10.367 87.576 11.074] CP -[88.367 11.780 88.841 12.325 89.000 12.711] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.617 288.374 194.117 288.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.117 288.374 297.117 260.624 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {0.900 0.900 0.900 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 235.874 156.117 0.000 0.000 39.999 40.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.624 172.867 0.000 0.000 6.500 6.500 rect -%@EndOval -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 244.124 160.867 0.000 0.000 6.000 30.000 rect -%@EndRect -gsave -175.867 247.124 T translate -0.0 rotate -1 1 scale -5.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.632 3.000 S -(a) -11.128 3.000 S -(r) -8.362 3.000 S -(p) -6.431 3.000 S -(a) -3.421 3.000 S -( ) -0.655 3.000 S -(T) 1.012 3.000 S -(I) 4.212 3.000 S -(M) 5.423 3.000 S -(I) 9.364 3.000 S -(T) 10.575 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.124 170.617 0.000 0.000 6.000 12.000 rect -%@EndRect -gsave -176.617 266.124 T translate -0.0 rotate -1 1 scale -5.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -5.882 3.000 S -(I) -2.339 3.000 S -(S) -1.128 3.000 S -(T) 1.900 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.221 181.404 165.069 0.000 0.000 11.404 11.811 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {3.258 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {0.500 0.500 0.500 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 -1.221 209.357 116.608 0.000 0.000 6.516 70.476 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.221 178.602 158.517 0.000 0.000 10.182 7.086 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.221 176.759 148.543 0.000 0.000 7.738 11.024 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 -0.226 291.325 60.783 0.000 0.000 31.585 58.861 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[4.347 31.406] CP -[12.956 27.277 17.985 23.314 19.433 19.517] CP -[20.880 15.720 22.543 12.566 24.420 10.055] CP -[26.297 7.543 28.655 6.968 31.492 8.327] CP -[34.330 9.687 37.130 11.748 39.892 14.510] CP -[42.655 17.272 46.476 18.720 51.354 18.853] CP -[56.233 18.986 58.721 18.978 58.820 18.829] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -55.309 295.721 moveto -/Triangular 4.699 7.049 false 77.005 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 62.057 324.952 55.459 296.371 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.366 310.105 moveto -/Triangular 4.699 7.049 false 167.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.716 310.255 62.057 324.952 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[3.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 92.038 317.004 88.018 299.594 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -1.000 87.000 318.000 87.000 301.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {7.250 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {DR} def -/flipRatio 0.508 def -/rampAngle 90 def -/rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def -/PC {} def -/RF {} def -1.000 0.349 252.825 93.466 0.000 0.000 14.500 30.776 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 251.296 96.832 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 251.296 96.832 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 258.186 115.764 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 258.186 115.764 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.743 262.293 102.776 257.574 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.545 259.761 103.282 254.570 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.333 265.651 101.070 260.460 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0.349 271.852 120.956 0.000 0.000 4.027 51.578 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 166.679 282.836 167.919 279.430 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/tracc.eps b/HTKBook/HTKFigs/tracc.eps deleted file mode 100644 index af0f702..0000000 --- a/HTKBook/HTKFigs/tracc.eps +++ /dev/null @@ -1,181 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: tracc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:17:35 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 192 138 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 171.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Ellipse -n 1950 1350 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 2700 900 m 3900 900 l 3900 2100 l 2700 2100 l cp gs col-1 s gr -% Polyline -n 2700 2400 m 3900 2400 l 3900 2700 l 2700 2700 l cp gs col-1 s gr -% Polyline -n 900 900 m 2100 900 l 2100 1800 l 900 1800 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 900 1500 m 2100 1500 l gs col-1 s gr -% Polyline -n 3000 900 m 3000 2100 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 2100 l gs col-1 s gr -% Polyline -n 3600 900 m 3600 2100 l gs col-1 s gr -% Polyline -n 2700 1200 m 3900 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 2700 1500 m 3900 1500 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -3075 675 m -gs 1 -1 sc ([1..N]) col-1 sh gr -% Polyline -n 2700 1800 m 3900 1800 l gs col-1 s gr -% Polyline -n 3000 2400 m 3000 2700 l gs col-1 s gr -% Polyline -n 3300 2400 m 3300 2700 l gs col-1 s gr -% Polyline -n 3600 2400 m 3600 2700 l gs col-1 s gr -% Interp Spline -gs clippath -2650 758 m 2686 876 l 2599 789 l 2682 928 l 2733 897 l cp clip -n 1950 1050 m - 2062.9 729.5 2156.7 617.0 2325 600 curveto - 2463.0 586.1 2556.7 661.1 2700 900 curveto - gs col-1 s gr - gr - -% arrowhead -n 2650 758 m 2686 876 l 2599 789 l 2625 774 l 2650 758 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2553 2368 m 2673 2399 l 2553 2428 l 2715 2430 l 2715 2370 l cp clip -n 1950 1350 m - 1915.0 1865.2 1952.5 2090.2 2100 2250 curveto - 2200.0 2358.3 2350.0 2395.8 2700 2400 curveto - gs col-1 s gr - gr - -% arrowhead -n 2553 2368 m 2673 2399 l 2553 2428 l 2553 2398 l 2553 2368 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (tran) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1725 m -gs 1 -1 sc (minDur) col-1 sh gr -/Times-Bold ff 180.00 scf sf -1275 750 m -gs 1 -1 sc (TrAcc) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/tsubword.eps b/HTKBook/HTKFigs/tsubword.eps deleted file mode 100644 index 301e0af..0000000 --- a/HTKBook/HTKFigs/tsubword.eps +++ /dev/null @@ -1,4497 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: subword.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/4/95 9:49:31 p.m. -%%BoundingBox: 71.500 348.500 414.500 784.000 -%%QDBoundingBox: 71.500 8.000 414.500 443.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 210.000 351.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 216.500 356.500 0.000 0.000 16.000 54.448 rect -%@EndRect -gsave -383.724 224.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.000 4.000 S -(C) -16.889 4.000 S -(o) -7.551 4.000 S -(m) -0.551 4.000 S -(p) 10.337 4.000 S -(V) 17.337 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 288.000 225.000 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 294.500 241.500 0.000 0.000 16.000 43.551 rect -%@EndRect -gsave -263.275 302.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.000 4.000 S -(E) -10.889 4.000 S -(R) -2.337 4.000 S -(e) 7.000 4.000 S -(s) 13.213 4.000 S -(t) 18.662 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 333.000 171.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 180.500 0.000 0.000 16.000 35.772 rect -%@EndRect -gsave -198.386 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(H) -6.889 4.000 S -(E) 3.220 4.000 S -(d) 11.772 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 83.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 94.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 108.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 125.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 137.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 150.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.750 83.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -134.448 45.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 157.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 144.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 125.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 114.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 101.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 83.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.250 83.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -125.886 75.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 72.000 0.000 0.000 63.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.500 79.500 0.000 0.000 14.000 96.281 rect -%@EndRect -gsave -127.640 25.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -48.000 3.000 S -(a) -40.669 3.000 S -(b) -35.343 3.000 S -(e) -29.343 3.000 S -(l) -24.017 3.000 S -(l) -20.683 3.000 S -(e) -17.349 3.000 S -(d) -12.023 3.000 S -( ) -6.023 3.000 S -(U) -3.023 3.000 S -(t) 5.642 3.000 S -(t) 8.976 3.000 S -(e) 12.310 3.000 S -(r) 17.636 3.000 S -(a) 21.632 3.000 S -(n) 26.958 3.000 S -(c) 32.958 3.000 S -(e) 38.285 3.000 S -(s) 43.611 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 135.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 133.000 126.000 99.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 189.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 108.500 0.000 0.000 16.000 35.000 rect -%@EndRect -gsave -126.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(R) -6.889 4.000 S -(e) 2.448 4.000 S -(s) 8.662 4.000 S -(t) 14.110 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 110.500 0.000 0.000 16.000 29.551 rect -%@EndRect -gsave -125.275 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 4.000 S -(I) -3.889 4.000 S -(n) 0.772 4.000 S -(i) 7.772 4.000 S -(t) 11.662 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 187.000 126.000 162.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 405.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 401.000 261.000 315.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 306.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.000 306.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 333.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 378.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 227.000 377.999 261.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 360.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 378.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 342.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 306.000 315.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -297.000 306.000 moveto -/Triangular 16.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 301.000 305.999 315.000 306.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 412.500 230.500 0.000 0.000 31.000 58.324 rect -%@EndRect -gsave -259.662 428.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -29.000 -3.000 S -(u) -21.213 -3.000 S -(b) -14.213 -3.000 S -(-) -7.213 -3.000 S -(W) -2.551 -3.000 S -(o) 10.662 -3.000 S -(r) 17.662 -3.000 S -(d) 22.324 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -20.065 12.000 S -(M) -9.955 12.000 S -(M) 2.493 12.000 S -(s) 14.941 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 210.000 moveto -/Triangular 14.099 7.049 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.585 208.585 324.000 156.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 216.000 0.000 0.000 108.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.500 215.500 0.000 0.000 14.000 106.951 rect -%@EndRect -gsave -268.975 91.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -53.000 3.000 S -(n) -44.333 3.000 S -(l) -38.333 3.000 S -(a) -35.000 3.000 S -(b) -29.673 3.000 S -(e) -23.673 3.000 S -(l) -18.347 3.000 S -(l) -15.013 3.000 S -(e) -11.679 3.000 S -(d) -6.353 3.000 S -( ) -0.353 3.000 S -(U) 2.646 3.000 S -(t) 11.312 3.000 S -(t) 14.646 3.000 S -(e) 17.980 3.000 S -(r) 23.306 3.000 S -(a) 27.302 3.000 S -(n) 32.628 3.000 S -(c) 38.628 3.000 S -(e) 43.955 3.000 S -(s) 49.281 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 17.500 234.500 0.000 0.000 14.000 69.316 rect -%@EndRect -gsave -269.158 24.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.000 3.000 S -(r) -26.669 3.000 S -(a) -22.673 3.000 S -(n) -17.347 3.000 S -(s) -11.347 3.000 S -(c) -6.677 3.000 S -(r) -1.351 3.000 S -(i) 2.644 3.000 S -(p) 5.978 3.000 S -(t) 11.978 3.000 S -(i) 15.312 3.000 S -(o) 18.646 3.000 S -(n) 24.646 3.000 S -(s) 30.646 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.750 224.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -275.448 47.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.250 224.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -266.886 64.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 35.000 216.000 0.000 0.000 42.000 107.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -2.000 0 9.000 207.000 0.000 0.000 216.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 288.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 284.000 261.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 288.000 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.335 286.890 126.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 288.000 moveto -/Triangular 14.099 7.049 false 331.541 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.757 287.046 382.000 237.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/useforiso.eps b/HTKBook/HTKFigs/useforiso.eps deleted file mode 100644 index d9e4fec..0000000 --- a/HTKBook/HTKFigs/useforiso.eps +++ /dev/null @@ -1,3287 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: useforiso.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:20:48 p.m. -%%BoundingBox: 8.750 273.500 423.750 788.500 -%%QDBoundingBox: 8.750 3.500 423.750 518.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 155.250 0.000 0.000 19.000 12.000 rect -%@EndRect -gsave -161.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -5.250 6.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 166.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -169.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 283.750 0.000 0.000 19.000 12.000 rect -%@EndRect -gsave -289.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -5.750 6.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 294.750 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -298.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -2.750 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 35.250 0.000 0.000 19.000 12.000 rect -%@EndRect -gsave -41.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -5.250 6.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 46.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -49.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 9.250 0.000 0.000 19.000 88.000 rect -%@EndRect -gsave -53.250 13.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -43.250 5.000 S -(a) -37.255 5.000 S -(\)) -29.266 5.000 S -( ) -23.272 5.000 S -(T) -18.772 5.000 S -(r) -7.777 5.000 S -(a) -1.783 5.000 S -(i) 6.206 5.000 S -(n) 11.207 5.000 S -(i) 20.207 5.000 S -(n) 25.208 5.000 S -(g) 34.208 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 81.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 99.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 117.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 135.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 153.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 171.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 81.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 99.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 117.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 135.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 81.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 99.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 117.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 135.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 153.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 216.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 234.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 252.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 270.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 288.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 216.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 234.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 252.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 270.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 216.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 234.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 252.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 270.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 288.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 324.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 342.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 360.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 378.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 396.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 324.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 342.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 360.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 378.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 324.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 342.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 360.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 378.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 396.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 414.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 396.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.250 207.000 198.250 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.250 207.000 315.250 90.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 117.250 0.000 0.000 19.000 27.000 rect -%@EndRect -gsave -130.750 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.250 5.000 S -(n) -4.250 5.000 S -(e) 4.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 234.250 0.000 0.000 19.000 28.000 rect -%@EndRect -gsave -248.250 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.250 5.000 S -(w) -8.249 5.000 S -(o) 4.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 351.250 0.000 0.000 19.000 37.000 rect -%@EndRect -gsave -369.750 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -18.250 5.000 S -(h) -13.249 5.000 S -(r) -4.249 5.000 S -(e) 1.745 5.000 S -(e) 9.734 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.000 180.250 0.000 0.000 19.000 139.000 rect -%@EndRect -gsave -249.750 40.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -69.250 5.000 S -(r) -58.254 5.000 S -(a) -52.260 5.000 S -(i) -44.271 5.000 S -(n) -39.270 5.000 S -(i) -30.270 5.000 S -(n) -25.269 5.000 S -(g) -16.269 5.000 S -( ) -7.269 5.000 S -(E) -2.769 5.000 S -(x) 8.225 5.000 S -(a) 17.225 5.000 S -(m) 25.214 5.000 S -(p) 39.215 5.000 S -(l) 48.215 5.000 S -(e) 53.216 5.000 S -(s) 61.206 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -126.250 270.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 126.249 266.000 126.250 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -252.250 270.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 252.249 266.000 252.250 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -369.250 270.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 369.249 266.000 369.250 216.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 113.750 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -122.750 284.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 130.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -134.750 290.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.750 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 239.250 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -248.250 284.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.250 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 257.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -261.250 290.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.250 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 356.750 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -365.750 284.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 373.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -377.750 290.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.750 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 229.000 18.250 0.000 0.000 39.000 64.000 rect -%@EndRect -gsave -50.250 248.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -31.250 -5.000 S -(s) -20.254 -5.000 S -(t) -13.250 -5.000 S -(i) -8.249 -5.000 S -(m) -3.248 -5.000 S -(a) 10.752 -5.000 S -(t) 18.742 -5.000 S -(e) 23.743 -5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -31.250 14.000 S -(o) -15.245 14.000 S -(d) -6.245 14.000 S -(e) 2.754 14.000 S -(l) 10.744 14.000 S -(s) 15.745 14.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 41.250 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -48.750 109.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -7.250 5.000 S -(.) 1.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.000 41.250 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -48.750 145.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -7.250 5.000 S -(.) 1.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 41.250 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -48.750 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -7.250 5.000 S -(.) 1.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 323.000 10.250 0.000 0.000 19.000 115.000 rect -%@EndRect -gsave -67.750 332.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -57.250 5.000 S -(b) -51.255 5.000 S -(\)) -42.255 5.000 S -( ) -36.261 5.000 S -(R) -31.761 5.000 S -(e) -19.755 5.000 S -(c) -11.766 5.000 S -(o) -3.777 5.000 S -(g) 5.222 5.000 S -(n) 14.222 5.000 S -(i) 23.222 5.000 S -(t) 28.223 5.000 S -(i) 33.224 5.000 S -(o) 38.225 5.000 S -(n) 47.225 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 382.000 12.000 0.000 0.000 19.000 106.000 rect -%@EndRect -gsave -65.000 391.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -52.500 5.000 S -(n) -39.500 5.000 S -(k) -30.500 5.000 S -(n) -21.500 5.000 S -(o) -12.500 5.000 S -(w) -3.500 5.000 S -(n) 9.498 5.000 S -( ) 18.498 5.000 S -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1.000 0 382.000 12.000 0.000 0.000 19.000 106.000 rect -%@EndRect -gsave -65.000 391.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) 22.998 5.000 S -grestore -restore -save -gsave -65.000 391.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) 36.999 5.000 S -(=) 41.499 5.000 S -( ) 51.650 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 127.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 145.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 163.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 181.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 199.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 217.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 460.000 53.000 0.000 0.000 19.000 16.000 rect -%@EndRect -gsave -61.000 469.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -7.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 67.250 0.000 0.000 19.000 5.000 rect -%@EndRect -gsave -69.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -2.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 72.250 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -81.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 468.500 88.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -92.250 474.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.250 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 96.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -99.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 460.000 173.000 0.000 0.000 19.000 16.000 rect -%@EndRect -gsave -181.000 469.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -7.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 187.250 0.000 0.000 19.000 5.000 rect -%@EndRect -gsave -189.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -2.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 192.250 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -201.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 468.500 209.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -213.250 474.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.250 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 218.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -221.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 460.000 302.000 0.000 0.000 19.000 16.000 rect -%@EndRect -gsave -310.000 469.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -7.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 315.750 0.000 0.000 19.000 5.000 rect -%@EndRect -gsave -318.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -1.750 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 320.750 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -329.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.750 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 468.500 337.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -341.750 474.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.750 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 345.750 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -349.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -2.750 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.250 454.000 moveto -/Triangular 14.099 7.049 false 326.748 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 74.922 452.902 137.250 412.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -177.250 450.000 moveto -/Triangular 14.099 7.049 false 268.428 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.194 448.000 176.250 414.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.250 448.000 moveto -/Triangular 14.099 7.049 false 205.360 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.442 447.143 211.250 412.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 18.250 486.000 18.250 459.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.250 486.000 18.250 486.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.250 486.000 369.250 459.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 499.000 135.250 0.000 0.000 19.000 93.000 rect -%@EndRect -gsave -181.750 508.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -46.250 5.000 S -(h) -34.244 5.000 S -(o) -25.244 5.000 S -(o) -16.244 5.000 S -(s) -7.244 5.000 S -(e) -0.239 5.000 S -( ) 7.750 5.000 S -(M) 12.250 5.000 S -(a) 28.254 5.000 S -(x) 36.244 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vaacc.eps b/HTKBook/HTKFigs/vaacc.eps deleted file mode 100644 index 6202cd0..0000000 --- a/HTKBook/HTKFigs/vaacc.eps +++ /dev/null @@ -1,152 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: vaacc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:17:59 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 249 58 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 96.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 900 900 m 2100 900 l 2100 1500 l 900 1500 l cp gs col-1 s gr -% Polyline -n 2700 900 m 4800 900 l 4800 1200 l 2700 1200 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 3000 900 m 3000 1200 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 1200 l gs col-1 s gr -% Polyline -n 3600 900 m 3600 1125 l gs col-1 s gr -% Polyline -n 3600 975 m 3600 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 3900 900 m 3900 1200 l gs col-1 s gr -/Times-Bold ff 180.00 scf sf -1275 750 m -gs 1 -1 sc (VaAcc) col-1 sh gr -% Polyline -n 4200 900 m 4200 1200 l gs col-1 s gr -% Polyline -n 4500 900 m 4500 1200 l gs col-1 s gr -% Polyline -gs clippath -2553 1020 m 2673 1050 l 2553 1080 l 2715 1080 l 2715 1020 l cp clip -n 1950 1050 m 2700 1050 l gs col-1 s gr gr - -% arrowhead -n 2553 1020 m 2673 1050 l 2553 1080 l 2553 1050 l 2553 1020 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (cov) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ = 2.7) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3300 750 m -gs 1 -1 sc ([1 .. sWidth]) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/vitloop.eps b/HTKBook/HTKFigs/vitloop.eps deleted file mode 100644 index 80af921..0000000 --- a/HTKBook/HTKFigs/vitloop.eps +++ /dev/null @@ -1,1674 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vitloop.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 10:17:23 a.m. -%%BoundingBox: 144.000 253.000 401.000 767.000 -%%QDBoundingBox: 144.000 25.000 401.000 539.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 268.000 172.000 0.000 0.000 20.000 154.467 rect -%@EndRect -gsave -249.233 278.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -76.500 5.000 S -(i) -63.500 5.000 S -(t) -58.500 5.000 S -(e) -53.499 5.000 S -(r) -45.509 5.000 S -(b) -39.515 5.000 S -(i) -30.515 5.000 S -( ) -25.514 5.000 S -(S) -21.014 5.000 S -(e) -11.003 5.000 S -(g) -3.014 5.000 S -(m) 5.985 5.000 S -(e) 19.986 5.000 S -(n) 27.975 5.000 S -(t) 36.975 5.000 S -(a) 41.976 5.000 S -(t) 49.965 5.000 S -(i) 54.966 5.000 S -(o) 59.967 5.000 S -(n) 68.967 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 340.000 154.000 0.000 0.000 20.000 185.950 rect -%@EndRect -gsave -246.975 350.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -92.500 5.000 S -(p) -79.500 5.000 S -(d) -70.500 5.000 S -(a) -61.500 5.000 S -(t) -53.511 5.000 S -(e) -48.510 5.000 S -( ) -40.521 5.000 S -(H) -36.021 5.000 S -(M) -23.022 5.000 S -(M) -7.017 5.000 S -( ) 8.987 5.000 S -(P) 13.487 5.000 S -(a) 23.498 5.000 S -(r) 31.487 5.000 S -(a) 37.481 5.000 S -(m) 45.470 5.000 S -(e) 59.471 5.000 S -(t) 67.460 5.000 S -(e) 72.461 5.000 S -(r) 80.451 5.000 S -(s) 86.445 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 259.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 331.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.000 181.000 0.000 0.000 20.000 119.504 rect -%@EndRect -gsave -240.752 49.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -59.500 5.000 S -(r) -49.489 5.000 S -(o) -43.495 5.000 S -(t) -34.495 5.000 S -(o) -29.494 5.000 S -(t) -20.494 5.000 S -(y) -15.493 5.000 S -(p) -6.493 5.000 S -(e) 2.506 5.000 S -( ) 10.496 5.000 S -(H) 14.996 5.000 S -(M) 27.995 5.000 S -(M) 44.000 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 25.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 421.000 199.000 0.000 0.000 20.000 86.967 rect -%@EndRect -gsave -242.483 431.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -42.500 5.000 S -(o) -30.494 5.000 S -(n) -21.494 5.000 S -(v) -12.494 5.000 S -(e) -3.494 5.000 S -(r) 4.495 5.000 S -(g) 10.489 5.000 S -(e) 19.489 5.000 S -(d) 27.478 5.000 S -(?) 36.478 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 106.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 104.500 243.500 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 331.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 329.500 243.500 295.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 403.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 401.500 243.500 367.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 401.500 184.500 0.000 0.000 54.000 117.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[58.500 0.000] CP -[0.000 27.000] CP -[58.500 54.000 ] CP -[117.000 27.000 ] CP -[117.000 27.000 58.500 0.000 58.500 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 428.500 301.500 428.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 235.500 400.500 427.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 235.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.500 235.499 400.500 235.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 404.000 325.000 0.000 0.000 20.000 21.999 rect -%@EndRect -gsave -335.999 414.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -10.500 5.000 S -(o) 2.499 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 458.000 258.000 0.000 0.000 20.000 27.993 rect -%@EndRect -gsave -271.996 468.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -13.500 5.000 S -(e) -0.500 5.000 S -(s) 7.488 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.000 495.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.999 493.000 243.000 455.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 507.000 181.000 0.000 0.000 20.000 121.491 rect -%@EndRect -gsave -241.745 517.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -60.500 5.000 S -(n) -54.505 5.000 S -(i) -45.505 5.000 S -(t) -40.504 5.000 S -(i) -35.503 5.000 S -(a) -30.502 5.000 S -(l) -22.513 5.000 S -(i) -17.512 5.000 S -(s) -12.511 5.000 S -(e) -5.506 5.000 S -(d) 2.482 5.000 S -( ) 11.482 5.000 S -(H) 15.982 5.000 S -(M) 28.981 5.000 S -(M) 44.986 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 493.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 116.000 171.000 0.000 0.000 20.000 165.471 rect -%@EndRect -gsave -253.735 126.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -82.500 5.000 S -(n) -69.500 5.000 S -(i) -60.500 5.000 S -(f) -55.500 5.000 S -(o) -49.505 5.000 S -(r) -40.505 5.000 S -(m) -34.511 5.000 S -( ) -20.510 5.000 S -(S) -16.010 5.000 S -(e) -6.000 5.000 S -(g) 1.989 5.000 S -(m) 10.989 5.000 S -(e) 24.990 5.000 S -(n) 32.979 5.000 S -(t) 41.979 5.000 S -(a) 46.980 5.000 S -(t) 54.969 5.000 S -(i) 59.970 5.000 S -(o) 64.971 5.000 S -(n) 73.971 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 189.000 173.000 0.000 0.000 20.000 151.945 rect -%@EndRect -gsave -248.972 199.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -75.500 5.000 S -(n) -69.505 5.000 S -(i) -60.505 5.000 S -(t) -55.504 5.000 S -(i) -50.503 5.000 S -(a) -45.502 5.000 S -(l) -37.513 5.000 S -(i) -32.512 5.000 S -(s) -27.511 5.000 S -(e) -20.506 5.000 S -( ) -12.517 5.000 S -( ) -8.017 5.000 S -(P) -3.517 5.000 S -(a) 6.493 5.000 S -(r) 14.482 5.000 S -(a) 20.476 5.000 S -(m) 28.465 5.000 S -(e) 42.466 5.000 S -(t) 50.456 5.000 S -(e) 55.457 5.000 S -(r) 63.446 5.000 S -(s) 69.440 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 106.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 178.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 178.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 176.500 243.500 142.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 259.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 257.500 243.500 214.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vmatrep.eps b/HTKBook/HTKFigs/vmatrep.eps deleted file mode 100644 index d9bae7c..0000000 --- a/HTKBook/HTKFigs/vmatrep.eps +++ /dev/null @@ -1,4815 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vmatrep.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/22/96 8:33:38 p.m. -%%BoundingBox: 17 538 531 765 -%%QDBoundingBox: 17.500 27.500 530.500 254.000 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 239.000 39.000 0.000 0.000 15.000 79.000 rect -%@EndRect -gsave -78.500 246.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(\() -39.500 5.000 S -(S) -34.837 5.000 S -(\)) -27.051 5.000 S -0.000 0.000 0.000 setrgbcolor -(V) -22.389 5.000 S -(e) -12.279 5.000 S -(c) -6.065 5.000 S -(t) 0.148 5.000 S -(o) 4.038 5.000 S -(r) 11.038 5.000 S -( ) 15.700 5.000 S -(\() 19.200 5.000 S -(N) 23.862 5.000 S -(\)) 33.972 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 54.000 0.000 0.000 162.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 90.000 54.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 108.000 54.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 126.000 54.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 144.000 54.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 162.000 54.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 180.000 54.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 198.000 54.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 216.000 54.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.000 81.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 18.000 81.000 52.833 81.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 92.000 34.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -37.500 98.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 110.000 34.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -37.500 116.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 221.000 31.671 0.000 0.000 12.000 11.328 rect -%@EndRect -gsave -37.335 227.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.828 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 137.000 34.000 0.000 0.000 48.000 4.000 rect -%@EndRect -gsave -36.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -14.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -2.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 62.000 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -66.500 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 54.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 59.000 63.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -66.500 65.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 36.000 54.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 41.000 63.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -66.500 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 39.000 23.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -35.500 45.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -12.500 4.000 S -(o) -6.500 4.000 S -(o) -0.500 4.000 S -(k) 5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 23.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -35.500 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -12.500 4.000 S -(U) -6.500 4.000 S -(s) 2.166 4.000 S -(e) 6.835 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 28.000 19.000 0.000 0.000 48.000 72.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 153.000 0.000 0.000 162.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 90.000 153.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 108.000 153.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 126.000 153.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 144.000 153.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 162.000 153.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 180.000 153.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 198.000 153.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 216.000 153.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 81.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 81.000 151.833 81.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 92.000 133.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -136.500 98.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 110.000 133.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -136.500 116.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 221.000 130.671 0.000 0.000 12.000 11.328 rect -%@EndRect -gsave -136.335 227.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.828 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 137.000 133.000 0.000 0.000 48.000 4.000 rect -%@EndRect -gsave -135.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -14.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -2.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 161.000 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -165.500 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 153.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 59.000 162.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -165.500 65.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 36.000 153.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 41.000 162.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -165.500 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 39.000 122.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -134.500 45.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -12.500 4.000 S -(o) -6.500 4.000 S -(o) -0.500 4.000 S -(k) 5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 122.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -134.500 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -12.500 4.000 S -(U) -6.500 4.000 S -(s) 2.166 4.000 S -(e) 6.835 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 28.000 118.000 0.000 0.000 48.000 72.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 239.000 171.000 0.000 0.000 15.000 105.000 rect -%@EndRect -gsave -223.500 246.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -52.500 5.000 S -(S) -47.837 5.000 S -(\)) -40.051 5.000 S -(M) -35.389 5.000 S -(a) -22.941 5.000 S -(t) -16.727 5.000 S -(r) -12.837 5.000 S -(i) -8.175 5.000 S -(x) -4.286 5.000 S -( ) 2.713 5.000 S -(\() 6.213 5.000 S -(N) 10.875 5.000 S -( ) 20.986 5.000 S -(x) 24.486 5.000 S -( ) 31.486 5.000 S -(M) 34.986 5.000 S -(\)) 47.434 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 92.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 106.000 225.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 106.000 243.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 106.000 261.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 106.000 279.000 92.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 94.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 100.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 99.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 99.000 205.833 99.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 76.000 229.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -232.500 82.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 76.000 247.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -250.500 82.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 76.000 283.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -288.500 82.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 73.000 264.000 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -270.500 79.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -6.500 4.000 S -(.) -3.500 4.000 S -(.) -0.500 4.000 S -(.) 2.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 110.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 124.000 225.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 124.000 243.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 124.000 261.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 124.000 279.000 110.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 112.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 118.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 117.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 117.000 205.833 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 128.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 142.000 225.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 142.000 243.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 142.000 261.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 142.000 279.000 128.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 130.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 136.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 135.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 135.000 205.833 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 146.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 160.000 225.000 146.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 160.000 243.000 146.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 160.000 261.000 146.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 160.000 279.000 146.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 148.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 154.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 153.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 153.000 205.833 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 164.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 178.000 225.000 164.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 178.000 243.000 164.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 178.000 261.000 164.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 178.000 279.000 164.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 166.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 172.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 171.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 171.000 205.833 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 182.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 196.000 225.000 182.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 196.000 243.000 182.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 196.000 261.000 182.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 196.000 279.000 182.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 184.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 190.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 189.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 189.000 205.833 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 200.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 214.000 225.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 214.000 243.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 214.000 261.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 214.000 279.000 200.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 202.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 208.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 207.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 207.000 205.833 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 218.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 232.000 225.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 232.000 243.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 232.000 261.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 232.000 279.000 218.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 220.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 226.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 225.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 225.000 205.833 225.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 351.000 0.000 0.000 162.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 90.000 351.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 108.000 351.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 126.000 351.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 144.000 351.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 162.000 351.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 180.000 351.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 198.000 351.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 216.000 351.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -351.000 81.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.000 81.000 349.833 81.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 92.000 331.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -334.500 98.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 110.000 331.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -334.500 116.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 221.000 328.671 0.000 0.000 12.000 11.328 rect -%@EndRect -gsave -334.335 227.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.828 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 137.000 331.000 0.000 0.000 48.000 4.000 rect -%@EndRect -gsave -333.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -14.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -2.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 359.000 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -363.500 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 351.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 59.000 360.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -363.500 65.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 36.000 351.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 41.000 360.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -363.500 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 39.000 320.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -332.500 45.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -12.500 4.000 S -(o) -6.500 4.000 S -(o) -0.500 4.000 S -(k) 5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 320.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -332.500 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -12.500 4.000 S -(U) -6.500 4.000 S -(s) 2.166 4.000 S -(e) 6.835 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 28.000 316.000 0.000 0.000 48.000 72.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 239.000 387.000 0.000 0.000 15.000 104.000 rect -%@EndRect -gsave -439.000 246.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -51.500 5.000 S -(S) -46.837 5.000 S -(\)) -39.051 5.000 S -(T) -34.389 5.000 S -(r) -25.837 5.000 S -(i) -21.175 5.000 S -(M) -17.286 5.000 S -(a) -4.837 5.000 S -(t) 1.375 5.000 S -( ) 5.265 5.000 S -(\() 8.765 5.000 S -(N) 13.427 5.000 S -( ) 23.538 5.000 S -(x) 27.038 5.000 S -( ) 34.038 5.000 S -(N) 37.538 5.000 S -(\)) 47.648 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 92.000 406.000 0.000 0.000 14.000 34.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 106.000 423.000 92.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 93.000 411.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -416.500 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 99.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 99.000 403.833 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 110.000 406.000 0.000 0.000 14.000 52.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 124.000 423.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 124.000 441.000 110.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 111.000 411.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -416.500 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 117.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 117.000 403.833 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 128.000 406.000 0.000 0.000 14.000 70.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 142.000 423.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 142.000 441.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 459.000 142.000 459.000 128.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 129.000 411.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -416.500 135.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(3) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 135.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 135.000 403.833 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 153.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 153.000 403.833 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 171.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 171.000 403.833 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 189.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 189.000 403.833 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 200.000 406.000 0.000 0.000 14.000 106.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 214.000 423.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 214.000 441.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 459.000 214.000 459.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 214.000 477.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 495.000 214.000 495.000 200.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 202.000 407.000 0.000 0.000 12.000 32.000 rect -%@EndRect -gsave -423.000 208.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -15.500 3.000 S -(-) -8.278 3.000 S -(1) -4.948 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 207.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 207.000 403.833 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 218.000 406.000 0.000 0.000 14.000 124.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 232.000 423.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 232.000 441.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 459.000 232.000 459.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 232.000 477.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 495.000 232.000 495.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 513.000 232.000 513.000 218.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 220.000 409.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -414.500 226.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 225.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 225.000 403.833 225.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vqtohmm.eps b/HTKBook/HTKFigs/vqtohmm.eps deleted file mode 100644 index 553d782..0000000 --- a/HTKBook/HTKFigs/vqtohmm.eps +++ /dev/null @@ -1,1536 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vqtohmm.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/29/95 10:44:44 p.m. -%%BoundingBox: 65.500 556.122 215.279 764.500 -%%QDBoundingBox: 65.500 27.500 215.279 235.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 65.500 0.000 0.000 26.000 74.970 rect -%@EndRect -gsave -102.985 40.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -37.000 -3.000 S -(p) -30.326 -3.000 S -(e) -24.326 -3.000 S -(e) -19.000 -3.000 S -(c) -13.673 -3.000 S -(h) -8.347 -3.000 S -( ) -2.347 -3.000 S -(V) 0.652 -3.000 S -(e) 9.318 -3.000 S -(c) 14.644 -3.000 S -(t) 19.970 -3.000 S -(o) 23.304 -3.000 S -(r) 29.304 -3.000 S -(s) 33.300 -3.000 S -grestore -restore -save -gsave -102.985 40.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(X) -10.316 10.000 S -(X) -4.915 10.000 S -(X) 0.485 10.000 S -(X) 5.886 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 55.377 79.779 0.000 0.000 81.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 64.377 79.779 64.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 73.377 79.779 73.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 82.377 79.779 82.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 91.377 79.779 91.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 100.377 79.779 100.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 109.377 79.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 118.377 79.779 118.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 127.377 79.779 127.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.500 154.500 0.000 0.000 27.000 59.662 rect -%@EndRect -gsave -184.331 127.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -7.834 -3.000 S -(Q) 0.831 -3.000 S -( ) 9.497 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -23.833 10.000 S -(o) -15.830 10.000 S -(d) -9.830 10.000 S -(e) -3.830 10.000 S -(b) 1.496 10.000 S -(o) 7.496 10.000 S -(o) 13.496 10.000 S -(k) 19.496 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 109.377 151.779 0.000 0.000 36.000 63.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -151.779 132.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 150.612 132.377 124.779 132.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 172.377 106.779 0.000 0.000 9.000 99.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.779 181.377 178.779 172.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -192.779 172.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.779 171.211 192.779 145.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -133.779 172.377 moveto -/Triangular 8.224 7.049 false 233.146 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.079 171.444 106.779 136.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 208.377 124.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 134.500 0.000 0.000 27.000 39.978 rect -%@EndRect -gsave -154.489 222.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -19.000 -3.000 S -(i) -10.333 -3.000 S -(s) -7.000 -3.000 S -(c) -2.330 -3.000 S -(r) 2.996 -3.000 S -(e) 6.992 -3.000 S -(t) 12.318 -3.000 S -(e) 15.652 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.013 10.000 S -(M) -5.347 10.000 S -(M) 5.322 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -151.779 208.377 moveto -/Triangular 8.224 7.049 false 329.059 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.779 207.777 196.779 181.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 77.500 0.000 0.000 26.000 58.652 rect -%@EndRect -gsave -106.826 196.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -29.000 -3.000 S -(b) -20.333 -3.000 S -(s) -14.333 -3.000 S -(e) -9.664 -3.000 S -(r) -4.337 -3.000 S -(v) -0.341 -3.000 S -(a) 5.658 -3.000 S -(t) 10.984 -3.000 S -(i) 14.318 -3.000 S -(o) 17.652 -3.000 S -(n) 23.652 -3.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 77.500 0.000 0.000 26.000 58.652 rect -%@EndRect -gsave -106.826 196.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(X) -15.876 10.000 S -(X) -10.475 10.000 S -(X) -5.074 10.000 S -(X) 0.326 10.000 S -(_) 5.727 10.000 S -(V) 11.127 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vtlnpiecewise.eps b/HTKBook/HTKFigs/vtlnpiecewise.eps deleted file mode 100644 index 94f1929..0000000 --- a/HTKBook/HTKFigs/vtlnpiecewise.eps +++ /dev/null @@ -1,195 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: vtlnpiecewise.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Tue Apr 24 14:02:24 2001 -%%For: ge204@watch (G. Evermann, (RS - Woodland)) -%%BoundingBox: 0 0 154 146 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 146 moveto 0 0 lineto 154 0 lineto 154 146 lineto closepath clip newpath --13.0 157.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06299 0.06299 sc -% -% Fig objects follow -% -/Times-Roman ff 120.00 scf sf -2440 2440 m -gs 1 -1 sc (orig) col-1 sh gr -/Times-Roman ff 150.00 scf sf -2395 2395 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 120.00 scf sf -825 2420 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 90.00 scf sf -845 2465 m -gs 1 -1 sc (L) col-1 sh gr -/Times-Roman ff 120.00 scf sf -1835 2430 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 90.00 scf sf -1865 2470 m -gs 1 -1 sc (U) col-1 sh gr -/Symbol ff 120.00 scf sf -675 1315 m -gs 1 -1 sc (a) col-1 sh gr -/Times-Roman ff 90.00 scf sf -755 1355 m -gs 1 -1 sc (min) col-1 sh gr -/Symbol ff 120.00 scf sf -1300 1865 m -gs 1 -1 sc (a) col-1 sh gr -/Times-Roman ff 90.00 scf sf -1390 1900 m -gs 1 -1 sc (max) col-1 sh gr -% Polyline -7.500 slw -gs clippath -480 210 m 420 210 l 420 362 l 450 242 l 480 362 l cp -eoclip -n 450 225 m - 450 2475 l gs col-1 s gr gr - -% arrowhead -n 480 362 m 450 242 l 420 362 l col-1 s -% Polyline -gs clippath -2490 2280 m 2490 2220 l 2338 2220 l 2458 2250 l 2338 2280 l cp -eoclip -n 225 2250 m - 2475 2250 l gs col-1 s gr gr - -% arrowhead -n 2338 2280 m 2458 2250 l 2338 2220 l col-1 s -% Polyline - [60] 0 sd -n 225 450 m - 2475 450 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 2250 225 m - 2250 2475 l gs col-1 s gr [] 0 sd -% Polyline -n 1575 675 m - 2250 450 l gs col-1 s gr -% Polyline - [15 45] 45 sd -n 450 2250 m - 2250 450 l gs col-1 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 1575 675 m - 2025 1125 l gs col-1 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 900 2025 m - 675 1800 l gs col-1 s gr [] 0 sd -% Polyline -n 450 2250 m - 675 1800 l gs col-1 s gr -% Polyline -n 450 2250 m - 900 2025 l gs col-1 s gr -% Polyline -n 900 2025 m - 2025 1125 l gs col-1 s gr -% Polyline -n 2025 1125 m 2250 450 l - 2250 495 l gs col-1 s gr -% Polyline -n 675 1800 m - 1575 675 l gs col-1 s gr -% Polyline - [60] 0 sd -n 785 1925 m - 785 2405 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 1800 900 m - 1800 2380 l gs col-1 s gr [] 0 sd -/Times-Roman ff 150.00 scf sf -515 285 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 120.00 scf sf -560 345 m -gs 1 -1 sc (scaled) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/vtrellis.eps b/HTKBook/HTKFigs/vtrellis.eps deleted file mode 100644 index 94f6582..0000000 --- a/HTKBook/HTKFigs/vtrellis.eps +++ /dev/null @@ -1,3133 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vtrellis.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:26:12 p.m. -%%BoundingBox: 2.000 526.000 387.500 789.000 -%%QDBoundingBox: 2.000 3.000 387.500 266.000 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 189.582 5.775 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 192.926 20.482 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -28.527 207.329 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 28.527 208.745 28.527 229.402 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -16.973 205.285 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 15.556 205.285 11.837 205.285 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 151.976 6.203 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 155.320 20.909 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -28.955 169.723 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 28.955 171.139 28.955 191.796 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -17.401 167.679 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 15.984 167.679 12.265 167.679 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 81.446 6.631 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 84.790 21.337 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -29.382 99.192 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 29.382 100.609 29.382 121.265 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -17.828 97.148 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 16.412 97.148 12.693 97.148 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 28.955 61.995 28.955 84.477 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 -1.570 229.815 23.387 0.000 0.000 9.392 10.279 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 -1.570 52.189 23.815 0.000 0.000 9.392 10.279 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 114.370 6.631 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 117.714 21.337 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -29.382 132.116 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 29.382 133.533 29.382 154.190 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -17.828 130.073 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 16.412 130.073 12.693 130.073 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 230.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 237.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 194.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 201.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 163.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 125.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 91.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 56.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.817 24.500 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.817 25.916 73.817 240.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 3.500 55.817 0.000 0.000 15.000 29.000 rect -%@EndRect -gsave -70.317 11.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.682 5.000 S -(t) -5.896 5.000 S -(a) -2.006 5.000 S -(t) 4.207 5.000 S -(e) 8.096 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -334.817 240.500 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.401 240.500 73.817 240.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 219.500 343.817 0.000 0.000 46.000 42.000 rect -%@EndRect -gsave -364.817 242.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.682 -11.000 S -(p) -12.896 -11.000 S -(e) -5.896 -11.000 S -(e) 0.317 -11.000 S -(c) 6.531 -11.000 S -(h) 12.745 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -20.682 4.000 S -(r) -12.896 4.000 S -(a) -8.234 4.000 S -(m) -2.020 4.000 S -(e) 8.869 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -20.682 19.000 S -(T) -16.020 19.000 S -(i) -7.468 19.000 S -(m) -3.578 19.000 S -(e) 7.310 19.000 S -(\)) 13.524 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 204.500 73.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 168.500 73.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 132.500 73.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 96.500 73.817 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 60.500 73.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 109.817 240.500 109.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 240.500 145.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 240.500 181.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 240.500 217.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 240.500 253.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 105.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 141.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 141.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 105.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -109.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 141.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -145.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 177.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -181.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 213.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -217.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 249.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -253.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 285.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -289.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.182 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 240.500 289.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 249.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 141.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 249.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 249.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 285.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 109.817 204.500 73.817 240.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 204.500 109.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 204.500 145.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 204.500 181.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 168.500 217.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 96.500 253.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 96.500 253.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 96.500 181.817 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 132.500 109.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 168.500 109.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 168.500 145.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 132.500 145.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 168.500 145.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 132.500 145.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 96.500 145.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 132.500 145.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 96.500 145.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 181.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 96.500 181.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 132.500 181.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 96.500 181.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 132.500 181.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 96.500 217.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 217.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 217.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 96.500 217.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 217.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 168.500 181.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 240.500 325.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 60.500 289.817 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 123.500 28.817 0.000 0.000 77.000 16.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 123.500 28.817 0.000 0.000 77.000 16.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 88.500 28.817 0.000 0.000 74.000 16.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 88.500 28.817 0.000 0.000 74.000 16.000 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 123.000 334.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -339.500 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 344.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -348.000 138.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 123.000 359.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -364.500 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 370.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -374.000 138.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 125.000 353.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -357.000 134.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 125.000 379.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -383.000 134.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -258.500 166.000 moveto -/Triangular 14.099 7.049 false -13.680 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 353.000 143.000 260.443 165.527 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -242.500 121.000 moveto -/Triangular 14.099 7.049 false -13.419 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 341.000 97.500 244.445 120.535 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.000 342.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -347.000 93.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 93.000 351.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -358.000 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.500 4.000 S -(5) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wdnet.eps b/HTKBook/HTKFigs/wdnet.eps deleted file mode 100644 index 528692b..0000000 --- a/HTKBook/HTKFigs/wdnet.eps +++ /dev/null @@ -1,1691 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wdnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 4:16:48 p.m. -%%BoundingBox: 73.500 641.562 344.500 755.437 -%%QDBoundingBox: 73.500 36.562 344.500 150.437 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 230.599 100.250 187.399 86.750 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -187.944 86.961 moveto -/Triangular 9.399 5.874 false 377.795 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.468 87.449 201.188 91.205 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 230.599 86.750 187.399 100.250 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -187.944 100.038 moveto -/Triangular 9.399 5.874 false 342.255 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.468 99.550 201.188 95.794 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 120.500 173.000 0.000 0.000 27.000 72.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -200.000 147.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 201.600 147.499 218.000 147.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.000 66.500 moveto -/Triangular 9.399 5.874 false 155.219 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.547 67.170 127.405 91.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.000 120.500 moveto -/Triangular 9.399 5.874 false 204.806 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.547 119.829 127.405 95.283 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -291.188 91.716 moveto -/Triangular 9.399 5.874 false 204.571 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.733 91.051 236.000 66.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -290.594 94.688 moveto -/Triangular 9.399 5.874 false 154.707 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.147 95.372 236.000 120.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.500 173.000 0.000 0.000 27.000 72.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 84.500 74.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 86.000 88.500 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -101.720 94.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.000 4.000 S -(t) -5.213 4.000 S -(a) -1.324 4.000 S -(r) 4.889 4.000 S -(t) 9.551 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 84.500 290.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 86.000 304.500 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -315.775 94.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(n) -2.448 4.000 S -(d) 4.551 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 111.500 182.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 113.000 200.500 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -209.444 121.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.000 4.000 S -(u) -1.000 4.000 S -(t) 6.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.500 182.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 59.000 200.500 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -207.889 67.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.000 4.000 S -(i) 0.000 4.000 S -(t) 3.889 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -200.000 39.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 201.600 39.499 218.000 39.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wdnet0.eps b/HTKBook/HTKFigs/wdnet0.eps deleted file mode 100644 index ec92a51..0000000 --- a/HTKBook/HTKFigs/wdnet0.eps +++ /dev/null @@ -1,1705 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wdnet0.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/31/95 10:53:31 a.m. -%%BoundingBox: 72.500 635.475 333.030 750.525 -%%QDBoundingBox: 72.500 41.474 333.030 156.524 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 72.000 270.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 162.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 45.000 180.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 90.000 162.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 45.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 218.000 44.999 225.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 63.000 279.000 54.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 126.000 270.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 162.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 153.000 180.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 108.000 162.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 153.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 218.000 152.999 225.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 126.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 135.000 279.000 144.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 73.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 87.500 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -100.720 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.000 4.000 S -(t) -5.213 4.000 S -(a) -1.324 4.000 S -(r) 4.889 4.000 S -(t) 9.551 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 278.530 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 293.030 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -304.306 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.469 4.000 S -(n) -1.917 4.000 S -(d) 5.082 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 118.000 217.500 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -226.444 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.000 4.000 S -(u) -1.000 4.000 S -(t) 6.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 64.000 217.500 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -224.889 72.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.000 4.000 S -(i) 0.000 4.000 S -(t) 3.889 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 153.000 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 99.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.000 99.000 126.979 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.469 74.550 moveto -/Triangular 14.099 7.049 false 144.321 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.845 75.717 171.000 95.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.489 122.979 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.825 121.870 170.020 104.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -279.489 95.489 moveto -/Triangular 14.099 7.049 false 215.997 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.871 94.314 252.000 75.530 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.510 104.020 moveto -/Triangular 14.099 7.049 false 147.772 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 278.818 105.087 252.000 122.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wdnet1.eps b/HTKBook/HTKFigs/wdnet1.eps deleted file mode 100644 index 39c1208..0000000 --- a/HTKBook/HTKFigs/wdnet1.eps +++ /dev/null @@ -1,1547 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wdnet1.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/1/95 11:51:19 a.m. -%%BoundingBox: 72.500 657.000 378.030 750.525 -%%QDBoundingBox: 72.500 41.474 378.030 135.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 162.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 45.000 180.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 90.000 162.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 45.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 218.000 44.999 225.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 90.000 288.000 63.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 73.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 87.500 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -100.720 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.000 4.000 S -(t) -5.213 4.000 S -(a) -1.324 4.000 S -(r) 4.889 4.000 S -(t) 9.551 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 323.530 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 338.030 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -349.306 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.469 4.000 S -(n) -1.917 4.000 S -(d) 5.082 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 118.000 217.500 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -226.444 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.000 4.000 S -(u) -1.000 4.000 S -(t) 6.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 64.000 217.500 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -224.889 72.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.000 4.000 S -(i) 0.000 4.000 S -(t) 3.889 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 153.000 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 99.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.000 99.000 126.979 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.469 74.550 moveto -/Triangular 14.099 7.049 false 144.321 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.845 75.717 171.000 95.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.489 122.979 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.825 121.870 170.020 104.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -279.489 95.489 moveto -/Triangular 14.099 7.049 false 215.997 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.871 94.314 252.000 75.530 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.510 104.020 moveto -/Triangular 14.099 7.049 false 147.772 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 278.818 105.087 252.000 122.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 279.000 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -324.000 99.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 322.000 99.000 297.979 99.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wintnet.eps b/HTKBook/HTKFigs/wintnet.eps deleted file mode 100644 index b46c1d5..0000000 --- a/HTKBook/HTKFigs/wintnet.eps +++ /dev/null @@ -1,2247 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wintnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 3:58:46 p.m. -%%BoundingBox: 0.500 637.031 469.500 777.906 -%%QDBoundingBox: 0.500 14.093 469.500 154.968 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 145.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 89.031 307.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.000 89.031 181.000 89.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -244.000 89.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.600 89.031 271.000 89.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 80.031 145.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 44.031 307.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.000 80.031 181.000 80.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -244.000 80.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.600 80.031 271.000 80.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.031 1.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.531 13.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -20.113 85.531 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.031 379.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.531 391.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -398.113 85.531 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.031 433.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.590 439.841 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -451.117 86.590 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.658 4.000 S -(n) -2.106 4.000 S -(d) 4.893 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.141 55.278 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.700 61.378 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -74.599 86.700 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.121 4.000 S -(t) -5.334 4.000 S -(a) -1.445 4.000 S -(r) 4.768 4.000 S -(t) 9.430 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -55.000 85.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.399 85.327 37.000 85.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -433.000 85.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 431.399 85.327 415.000 85.327 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 35.031 136.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.889 148.249 0.000 0.000 16.000 18.785 rect -%@EndRect -gsave -157.642 48.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -9.250 4.000 S -(+) -2.250 4.000 S -(i) 5.645 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 35.031 199.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.889 208.286 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -221.954 48.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -13.213 4.000 S -(-) -6.213 4.000 S -(i) -1.551 4.000 S -(+) 2.337 4.000 S -(t) 10.233 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 35.031 262.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.889 277.212 0.000 0.000 16.000 12.441 rect -%@EndRect -gsave -283.433 48.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.287 4.000 S -(-) -1.397 4.000 S -(t) 3.264 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.000 49.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.399 49.327 181.000 49.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.000 49.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.399 49.327 244.000 49.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 35.031 325.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -325.000 49.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 323.399 49.327 307.000 49.327 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.069 329.784 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -337.174 50.069 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.715 4.000 S -(i) 0.284 4.000 S -(t) 4.174 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.031 136.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.889 148.249 0.000 0.000 16.000 21.895 rect -%@EndRect -gsave -159.197 120.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -10.250 4.000 S -(+) -3.250 4.000 S -(u) 4.645 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.031 199.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 112.889 208.286 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -223.509 120.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.213 4.000 S -(-) -8.213 4.000 S -(u) -3.551 4.000 S -(+) 3.448 4.000 S -(t) 11.343 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.031 262.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.889 277.212 0.000 0.000 16.000 15.551 rect -%@EndRect -gsave -284.988 120.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -7.287 4.000 S -(-) -0.287 4.000 S -(t) 4.375 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.000 121.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.399 121.327 181.000 121.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.000 121.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.399 121.327 244.000 121.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 107.031 325.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -325.000 121.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 323.399 121.327 307.000 121.327 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 114.069 329.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -338.729 122.069 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.000 53.031 moveto -/Triangular 9.399 5.874 false 149.046 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.628 53.854 91.000 80.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.000 116.031 moveto -/Triangular 9.399 5.874 false 210.979 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.627 115.208 91.000 89.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.000 80.031 moveto -/Triangular 9.399 5.874 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 377.868 78.899 352.000 53.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.000 89.031 moveto -/Triangular 9.399 5.874 false 135.009 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 377.868 90.162 352.000 116.031 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.000 17.031 136.000 17.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 17.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.600 17.031 262.000 17.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.000 152.031 136.000 152.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 152.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.600 152.031 262.000 152.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wlroper.eps b/HTKBook/HTKFigs/wlroper.eps deleted file mode 100644 index 238b24c..0000000 --- a/HTKBook/HTKFigs/wlroper.eps +++ /dev/null @@ -1,3121 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wlroper.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/25/95 11:58:18 p.m. -%%BoundingBox: 11.000 485.000 457.375 753.000 -%%QDBoundingBox: 11.000 39.000 457.375 307.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 81.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 236.500 81.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 254.500 81.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 272.500 81.000 272.500 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 87.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -100.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 162.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 236.500 162.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 254.500 162.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 272.500 162.000 272.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 168.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -181.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 243.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 236.500 243.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 254.500 243.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 272.500 243.000 272.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 249.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -262.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 324.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 236.500 324.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 254.500 324.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 272.500 324.000 272.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 330.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -343.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 91.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -99.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -8.500 5.000 S -(-) -4.610 5.000 S -(3) 0.051 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 172.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -180.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -8.500 5.000 S -(-) -4.610 5.000 S -(2) 0.051 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 252.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -260.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -8.500 5.000 S -(-) -4.610 5.000 S -(1) 0.051 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 339.000 0.000 0.000 15.000 5.000 rect -%@EndRect -gsave -341.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -2.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 90.000 0.000 0.000 16.000 21.000 rect -%@EndRect -gsave -100.500 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 170.000 0.000 0.000 16.000 21.000 rect -%@EndRect -gsave -180.500 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 252.000 0.000 0.000 16.000 20.213 rect -%@EndRect -gsave -262.106 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -9.500 4.000 S -(n) -2.500 4.000 S -(e) 4.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 332.000 0.000 0.000 16.000 20.213 rect -%@EndRect -gsave -342.106 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -9.500 4.000 S -(n) -2.500 4.000 S -(e) 4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -49.000 247.500 moveto -/Triangular 9.987 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 50.416 247.499 98.000 247.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -55.000 300.500 moveto -/Triangular 9.987 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 56.416 300.499 117.000 300.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 273.500 moveto -/Triangular 9.987 7.049 false 387.581 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 118.256 274.155 163.000 297.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -118.000 283.500 moveto -/Triangular 9.987 7.049 false 387.099 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 119.261 284.144 163.000 306.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 245.500 117.000 300.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 179.000 245.000 153.000 245.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 210.000 297.000 162.500 297.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.000 246.000 210.000 296.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.500 245.500 235.000 245.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 290.500 306.500 162.500 306.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.500 245.500 290.500 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 345.500 245.500 315.500 245.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 110.500 81.000 0.000 0.000 36.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 128.500 81.000 128.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 110.500 135.000 0.000 0.000 36.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 128.500 135.000 128.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.000 218.500 moveto -/Triangular 9.987 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.999 217.083 99.000 137.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 182.500 153.000 137.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -324.000 218.500 moveto -/Triangular 9.987 7.049 false 191.902 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 322.613 218.208 153.000 182.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 69.500 57.000 0.000 0.000 16.000 119.000 rect -%@EndRect -gsave -116.500 77.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -58.515 4.000 S -(e) -49.177 4.000 S -(c) -42.963 4.000 S -(o) -36.750 4.000 S -(r) -29.750 4.000 S -(d) -25.087 4.000 S -(i) -18.087 4.000 S -(n) -14.198 4.000 S -(g) -7.198 4.000 S -( ) -0.198 4.000 S -(D) 3.301 4.000 S -(e) 13.412 4.000 S -(c) 19.625 4.000 S -(i) 25.839 4.000 S -(s) 29.729 4.000 S -(i) 35.177 4.000 S -(o) 39.067 4.000 S -(n) 46.067 4.000 S -(s) 53.067 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.000 155.500 54.000 65.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 155.500 54.000 155.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 65.500 54.000 65.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 65.500 moveto -/Triangular 9.987 7.049 false 170.550 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.602 65.732 183.000 72.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.500 86.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -99.500 121.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 140.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -153.500 120.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 236.000 394.000 0.000 0.000 46.000 63.375 rect -%@EndRect -gsave -425.687 259.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -20.025 -11.000 S -(e) -10.687 -11.000 S -(c) -4.474 -11.000 S -(o) 1.739 -11.000 S -(r) 8.739 -11.000 S -(d) 13.401 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -31.500 19.000 S -(o) -18.286 19.000 S -(r) -11.286 19.000 S -(d) -6.624 19.000 S -( ) 0.375 19.000 S -(E) 3.875 19.000 S -(n) 12.427 19.000 S -(d) 19.427 19.000 S -(s) 26.427 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -374.000 255.500 moveto -/Triangular 9.987 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 375.416 255.499 447.000 255.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.500 84.500 243.500 84.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 226.500 0.000 0.000 7.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.500 48.500 243.500 48.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 226.500 0.000 0.000 7.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.500 120.500 243.500 120.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.000 226.500 0.000 0.000 7.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.500 219.000 0.000 0.000 90.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 453.000 156.500 453.000 48.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 199.000 84.500 217.000 84.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 199.000 156.500 199.000 84.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 156.500 199.000 156.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 155.500 189.000 65.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.000 11.000 0.000 0.000 66.000 37.000 rect -%@EndRect -gsave -29.500 104.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -10.666 -23.000 S -(e) -2.663 -23.000 S -(s) 2.663 -23.000 S -(t) 7.333 -23.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -15.328 -10.000 S -(o) -7.998 -10.000 S -(k) -1.998 -10.000 S -(e) 4.001 -10.000 S -(n) 9.328 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -12.656 3.000 S -(a) -7.330 3.000 S -(m) -2.003 3.000 S -(e) 7.330 3.000 S -( ) 12.656 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -11.663 16.000 S -(r) -7.666 16.000 S -(o) -3.670 16.000 S -(m) 2.329 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -13.561 29.000 S -(o) -8.663 29.000 S -(n) -2.663 29.000 S -(e) 3.336 29.000 S -(") 8.663 29.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 245.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 299.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 353.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 76.000 245.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 76.000 299.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 245.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 299.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 353.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 299.000 49.000 281.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 353.000 49.000 335.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 407.000 49.000 389.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 299.000 85.000 281.000 85.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 407.000 85.000 335.000 85.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 299.000 121.000 281.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 353.000 121.000 335.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 407.000 121.000 389.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 407.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 76.000 407.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 407.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 49.000 443.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 85.000 443.000 85.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 121.000 443.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 156.557 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 156.557 371.000 156.557 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.500 257.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -262.555 49.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.500 310.500 0.000 0.000 16.000 14.000 rect -%@EndRect -gsave -317.500 48.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -7.000 4.000 S -(h) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.500 367.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -371.000 48.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.500 261.500 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -263.444 85.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 308.500 0.000 0.000 16.000 17.110 rect -%@EndRect -gsave -317.055 84.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -8.000 4.000 S -(w) -1.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 258.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -263.944 120.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -5.000 4.000 S -(h) -1.110 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 314.500 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -316.831 120.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(r) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 366.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -371.944 120.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.000 4.000 S -(y) -1.110 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.500 411.500 0.000 0.000 16.000 20.213 rect -%@EndRect -gsave -421.606 49.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.000 4.000 S -(n) -3.000 4.000 S -(e) 4.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.500 410.500 0.000 0.000 16.000 27.979 rect -%@EndRect -gsave -424.489 121.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.000 4.000 S -(h) -9.110 4.000 S -(r) -2.110 4.000 S -(e) 2.551 4.000 S -(e) 8.765 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.500 412.500 0.000 0.000 16.000 30.000 rect -%@EndRect -gsave -427.500 85.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -15.000 4.000 S -(w) -11.110 4.000 S -(o) -1.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 65.500 0.000 0.000 16.000 119.000 rect -%@EndRect -gsave -125.000 102.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -43.813 4.000 S -(e) -34.476 4.000 S -(f) -28.262 4.000 S -(o) -23.600 4.000 S -(r) -16.600 4.000 S -(e) -11.937 4.000 S -( ) -5.724 4.000 S -( ) -2.224 4.000 S -( ) 1.275 4.000 S -( ) 4.775 4.000 S -( ) 8.275 4.000 S -( ) 11.775 4.000 S -(A) 15.275 4.000 S -(f) 25.386 4.000 S -(t) 30.048 4.000 S -(e) 33.937 4.000 S -(r) 40.151 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wtacc.eps b/HTKBook/HTKFigs/wtacc.eps deleted file mode 100644 index 41d6d81..0000000 --- a/HTKBook/HTKFigs/wtacc.eps +++ /dev/null @@ -1,169 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: wtacc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 17:30:57 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 249 96 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 134.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 900 900 m 2100 900 l 2100 2100 l 900 2100 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 900 1500 m 2100 1500 l gs col-1 s gr -% Polyline -n 900 1800 m 2100 1800 l gs col-1 s gr -% Polyline -n 2700 900 m 4800 900 l 4800 1200 l 2700 1200 l cp gs col-1 s gr -% Polyline -n 3000 900 m 3000 1200 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 1200 l gs col-1 s gr -% Polyline -n 3600 900 m 3600 1200 l gs col-1 s gr -% Polyline -n 3900 900 m 3900 1200 l gs col-1 s gr -% Polyline -n 4200 900 m 4200 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 4500 900 m 4500 1200 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1500 1425 m -gs 1 -1 sc (= 4.6) col-1 sh gr -% Polyline -gs clippath -2553 1020 m 2673 1050 l 2553 1080 l 2715 1080 l 2715 1020 l cp clip -n 1950 1050 m 2700 1050 l gs col7 0.00 shd ef gr gs col-1 s gr gr - -% arrowhead -n 2553 1020 m 2673 1050 l 2553 1080 l 2553 1050 l 2553 1020 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 750 m -gs 1 -1 sc (WtAcc) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (c) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1725 m -gs 1 -1 sc (prob) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2025 m -gs 1 -1 sc (time) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3450 750 m -gs 1 -1 sc ([1 .. M]) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1575 2025 m -gs 1 -1 sc (= 15) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1575 1725 m -gs 1 -1 sc (= -0.2) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/xwrdnet.eps b/HTKBook/HTKFigs/xwrdnet.eps deleted file mode 100644 index 15c77c6..0000000 --- a/HTKBook/HTKFigs/xwrdnet.eps +++ /dev/null @@ -1,2813 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: xwrdnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/1/95 11:53:19 a.m. -%%BoundingBox: 17.500 546.062 486.500 740.937 -%%QDBoundingBox: 17.500 51.062 486.500 245.937 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 18.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 30.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -37.113 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 396.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 408.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -415.113 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 450.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 142.559 456.841 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -468.117 150.559 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.658 4.000 S -(n) -2.106 4.000 S -(d) 4.893 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.109 72.278 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 142.669 78.378 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -91.599 150.669 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.121 4.000 S -(t) -5.334 4.000 S -(a) -1.445 4.000 S -(r) 4.768 4.000 S -(t) 9.430 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 149.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 70.399 149.295 54.000 149.295 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -450.000 149.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 448.399 149.295 432.000 149.295 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.858 163.249 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -176.918 85.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.250 4.000 S -(-) -9.360 4.000 S -(b) -4.698 4.000 S -(+) 2.301 4.000 S -(i) 10.196 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 216.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 104.858 225.286 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -238.954 112.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -13.213 4.000 S -(-) -6.213 4.000 S -(i) -1.551 4.000 S -(+) 2.337 4.000 S -(t) 10.233 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.858 288.212 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -301.881 85.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -13.287 4.000 S -(-) -9.397 4.000 S -(t) -4.735 4.000 S -(+) -0.845 4.000 S -(b) 7.049 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 113.295 moveto -/Triangular 9.399 5.874 false 156.048 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.537 113.945 198.000 121.295 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -278.000 120.295 moveto -/Triangular 9.399 5.874 false 202.394 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 276.520 119.686 261.000 113.295 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 122.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 122.295 324.000 122.295 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 114.038 346.784 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -354.174 122.038 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.715 4.000 S -(i) 0.284 4.000 S -(t) 4.174 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 123.000 moveto -/Triangular 9.399 5.874 false 154.994 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.550 123.676 108.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.000 144.000 moveto -/Triangular 9.399 5.874 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 394.868 142.868 369.000 117.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 54.000 153.000 54.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 54.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 53.999 279.000 54.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.858 158.249 0.000 0.000 16.000 36.674 rect -%@EndRect -gsave -176.586 121.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -18.250 4.000 S -(i) -12.802 4.000 S -(l) -8.912 4.000 S -(-) -5.022 4.000 S -(b) -0.360 4.000 S -(+) 6.639 4.000 S -(i) 14.534 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.000 107.000 moveto -/Triangular 9.399 5.874 false 222.002 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.810 105.929 197.000 89.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.858 285.212 0.000 0.000 16.000 33.564 rect -%@EndRect -gsave -301.995 121.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -16.287 4.000 S -(-) -12.397 4.000 S -(t) -7.735 4.000 S -(+) -3.845 4.000 S -(s) 4.049 4.000 S -(i) 9.498 4.000 S -(l) 13.387 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -282.000 92.000 moveto -/Triangular 9.399 5.874 false 141.018 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 280.756 93.006 261.000 109.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 86.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 86.295 324.000 86.295 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.038 346.784 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -354.174 87.038 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.715 4.000 S -(i) 0.284 4.000 S -(t) 4.174 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.141 162.249 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -177.473 211.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -14.250 4.000 S -(-) -10.360 4.000 S -(b) -5.698 4.000 S -(+) 1.301 4.000 S -(u) 9.196 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 171.000 216.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.141 224.286 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -239.509 185.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.213 4.000 S -(-) -8.213 4.000 S -(u) -3.551 4.000 S -(+) 3.448 4.000 S -(t) 11.343 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.141 288.212 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -303.436 211.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -14.287 4.000 S -(-) -7.287 4.000 S -(t) -2.624 4.000 S -(+) 1.264 4.000 S -(b) 9.160 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 183.704 moveto -/Triangular 9.399 5.874 false 203.977 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.537 183.054 198.000 175.704 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -278.000 176.704 moveto -/Triangular 9.399 5.874 false 157.630 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 276.520 177.313 261.000 183.704 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 174.704 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 174.704 324.000 174.704 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 166.961 346.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -355.729 174.961 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 174.000 moveto -/Triangular 9.399 5.874 false 205.030 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.550 173.323 108.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.000 153.000 moveto -/Triangular 9.399 5.874 false 135.009 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 394.868 154.131 369.000 180.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 243.000 153.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 243.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 242.999 279.000 243.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 162.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 168.141 156.249 0.000 0.000 16.000 39.785 rect -%@EndRect -gsave -176.142 176.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.250 4.000 S -(i) -13.802 4.000 S -(l) -9.912 4.000 S -(-) -6.022 4.000 S -(b) -1.360 4.000 S -(+) 5.639 4.000 S -(u) 13.534 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.000 190.000 moveto -/Triangular 9.399 5.874 false 138.023 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.810 191.070 197.000 208.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 162.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 168.141 283.212 0.000 0.000 16.000 36.674 rect -%@EndRect -gsave -301.550 176.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -18.287 4.000 S -(-) -11.287 4.000 S -(t) -6.624 4.000 S -(+) -2.735 4.000 S -(s) 5.160 4.000 S -(i) 10.608 4.000 S -(l) 14.498 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -282.000 205.000 moveto -/Triangular 9.399 5.874 false 219.007 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 280.756 203.993 261.000 188.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 210.704 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 210.704 324.000 210.704 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 202.961 346.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -355.729 210.961 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 135.000 378.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 126.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 144.000 369.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 144.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 198.000 126.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 207.000 135.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 144.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 143.999 261.000 144.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 162.000 378.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 153.000 369.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 99.000 126.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 90.000 135.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 153.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 152.999 261.000 153.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKRef/Cluster.aux b/HTKBook/HTKRef/Cluster.aux deleted file mode 100644 index 71ea54b..0000000 --- a/HTKBook/HTKRef/Cluster.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.1}Cluster}{251}{section.17.1}} -\newlabel{s:Cluster}{{17.1}{251}{Cluster\relax }{section.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.1.1}Function}{251}{subsection.17.1.1}} -\newlabel{s:Cluster-Function}{{17.1.1}{251}{Function\relax }{subsection.17.1.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.1.2}Use}{252}{subsection.17.1.2}} -\newlabel{s:Cluster-Use}{{17.1.2}{252}{Use\relax }{subsection.17.1.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.1.3}Tracing}{253}{subsection.17.1.3}} -\newlabel{s:Cluster-Tracing}{{17.1.3}{253}{Tracing\relax }{subsection.17.1.3}{}} -\@setckpt{HTKRef/Cluster}{ -\setcounter{page}{254} -\setcounter{equation}{0} -\setcounter{enumi}{3} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{1} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{114} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/Cluster.tex b/HTKBook/HTKRef/Cluster.tex deleted file mode 100644 index 73c0529..0000000 --- a/HTKBook/HTKRef/Cluster.tex +++ /dev/null @@ -1,195 +0,0 @@ -% -% Cluster - Gareth Moore 23/01/02 (updated 27/03/02) -% - -\newpage -\mysect{Cluster}{Cluster} - -\mysubsect{Function}{Cluster-Function} - -\index{cluster@\htool{Cluster}|(} -This program is used to statistically cluster words into deterministic -classes. The main purpose of \htool{Cluster} is to optimise a class -map on the basis of the training text likelihood, although it can also -import an existing class map and generate one of the files necessary -for creating a class-based language model from the \HTK\ language -modelling tools. - -Class-based language models use a reduced number of classes relative -to the number of words, with each class containing one or more words, -to allow a language model to be able to generalise to unseen training -contexts. Class-based models also typically require less training -text to produce a well-trained model than a similar complexity word -model, and are often more compact due to the much reduced number of -possible distinct history contexts that can be encountered in the -training data. - -\htool{Cluster} takes as input a set of one or more training text gram -files, which may optionally be weighted on input, and their associated -word map. It then clusters the words in the word map into classes -using a bigram likelihood measure. Due to the computational -complexity of this task a sub-optimal greedy algorithm is used, but -multiple iterations of this algorithm may be performed in order to -further refine the class map, although at some point a local maximum -will be reached where the class map will not change -further.\footnote{On a 65,000 word vocabulary test set with 170 million -words of training text this was found to occur after around 45 -iterations} In practice as few as two iterations may be perfectly -adequate, even with large training data sets. - -The algorithm works by considering each word in the vocabulary in turn -and calculating the change in bigram training text likelihood if the -word was moved from its default class (see below) to each other class -in turn. The word is then moved to the class which increases the -likelihood the most, or it is left in its current class if no such -increase is found. Each iteration of the algorithm considers each -word exactly once. Because this can be a slow process, with typical -execution times measured in terms of a few hours, not a few minutes, -the \htool{Cluster} tool also allows \textit{recovery} files to be written -at regular intervals, which contain the current class map part-way -through an iteration along with associated files detailing at what -point in the iteration the class map was exported. These files are -not essential for operation, but might be desirable if there is a risk -of a long-running process being killed via some external influence. -During the execution of an iteration the tool claims no new -memory,\footnote{other than a few small local variables taken from the -stack as functions are called} so it cannot crash -in the middle of an iteration due to a lack of memory (it can, -however, fail to start an iteration in the first place). - -Before beginning an iteration, \htool{Cluster} places each word either -into a default class or one specified via the \texttt{-l}, import -classmap, or \texttt{-x}, use recovery, options. The default -distribution, given $m$ classes, is to place the most frequent $(m-1)$ -words into singleton classes and then the remainder into the remaining -class. \htool{Cluster} allows words to be considered in either -decreasing frequency of occurrence order, or the order they are -encountered in the word map. The popular choice is to use the former -method, although in experiments it was found that the more random -second approach typically gave better class maps after fewer -iterations in practice.\footnote{Note that these schemes are -approximately similar, since the most frequent words are most likely -to be encountered sooner in the training text and thus occur higher up -in the word map} The \texttt{-w} option specifies this choice. - -During execution \htool{Cluster} will always write a logfile -describing the changes it makes to the classmap, unless you explicitly -disable this using the \texttt{-n} option. If the \texttt{-v} switch -is used then this logfile is written in explicit English, allowing you -to easily trace the execution of the clusterer; without \texttt{-v} -then similar information is exported in a more compact format. - -Two or three special classes are also defined. The sentence start and -sentence end word tokens are always kept in singleton classes, and -optionally the unknown word token can be kept in a singleton class too --- pass the \texttt{-k} option.\footnote{The author always uses this -option but has not empirically tested its efficaciousness} These -tokens are placed in these classes on initialisation and no moves to -or from these classes are ever considered. - -Language model files are built using either the \texttt{-p} or -\texttt{-q} options, which are effectively equivalent if using -the \HTK\ language modelling tools as black boxes. The former creates -a word-given-class probabilities file, whilst the latter stores word -counts and lets the language model code itself calculate the same -probabilities. - -\mysubsect{Use}{Cluster-Use} - -\htool{Cluster} is invoked by the command line -\begin{verbatim} - Cluster [options] mapfile [mult] gramfile [[mult] gramfile ...] -\end{verbatim} -The given word map is loaded and then each of the specified gram files -is imported. The list of input gram files can be interspersed with -multipliers. These are floating-point format numbers which must begin -with a plus or minus character (e.g. \texttt{+1.0}, \texttt{-0.5}, -etc.). The effect of a multiplier \texttt{mult} is to scale the $n$-gram -counts in the following gram files by the factor \texttt{mult}. The -resulting scaled counts are rounded to the nearest integer when -actually used in the clustering algorithm. A multiplier stays in -effect until it is redefined. - -The allowable options to \htool{Cluster} are as follows -\begin{optlist} - - \ttitem{-c n} Use {\tt n} classes. This specifies the number of - classes that should be in the resultant class map. - - \ttitem{-i n} Perform {\tt n} iterations. This is the number of - iterations of the clustering algorithm that should be - performed. (If you are using the {\tt -x} option then - completing the current iteration does not count towards - the total number, so use {\tt -i 0} to complete it and - then finish) - - \ttitem{-k} Keep the special unknown word token in its own - singleton class. If not passed it can be moved to or from - any class. - - \ttitem{-l fn} Load the classmap {\tt fn} at start up and when - performing any further iterations do so from this starting - point. - - \ttitem{-m} Record the running value of the maximum likelihood - function used by the clusterer to optimised the training - text likelihood in the log file. This option is principally - provided for debugging purposes. - - \ttitem{-n} Do not write any log file during execution of an - iteration. - - \ttitem{-o fn} Specify the prefix of all output files. All output - class map, logfile and recovery files share the same filename - prefix, and this is specified via the {\tt -o} switch. The - default is {\tt cluster}. - - \ttitem{-p fn} Write a word-given-class probabilities file. Either - this or the {\tt -q} switch are required to actually build a - class-based language model. The \HTK\ language model library, - \htool{LModel}, supports both probability and count-based - class files. There is no difference in use, although each - allows different types of manual manipulation of the file. - Note that if you do not pass {\tt -p} or {\tt -q} you may - run \htool{Cluster} at a later date using the {\tt -l} and - {\tt -i 0} options to just produce a language model file. - - \ttitem{-q fn} Write a word-given-class counts file. See the - documentation for {\tt -p}. - - \ttitem{-r n} Write recovery files after moving {\tt n} words - since the previous recovery file was written or an iteration - began. Pass {\tt -r n} to disable writing of recovery files. - - \ttitem{-s tkn} Specify the sentence start token. - - \ttitem{-t tkn} Specify the sentence end token. - - \ttitem{-u tkn} Specify the unknown word token. - - \ttitem{-v} Use verbose log file format. - - \ttitem{-w [WMAP/FREQ]} Specify the order in which word moves are - considered. Default is {\tt WMAP} in which words are - considered in the order they are encountered in the word map. - Specifying {\tt FREQ} will consider the most frequent word - first and then the remainder in decreasing order of frequency. - - \ttitem{-x fn} Continue execution from recovery file {\tt fn}. - -\end{optlist} -\stdopts{Cluster} - -\mysubsect{Tracing}{Cluster-Tracing} - -\htool{Cluster} supports the following trace options, where each trace flag is -given using an octal base: -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} report major file operations - good for following start-up. - \ttitem{00004} more detailed progress reporting. - \ttitem{00010} trace memory usage during execution and at end. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{cluster@\htool{Cluster}|)} diff --git a/HTKBook/HTKRef/HBuild.aux b/HTKBook/HTKRef/HBuild.aux deleted file mode 100644 index de5609e..0000000 --- a/HTKBook/HTKRef/HBuild.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.2}HBuild}{254}{section.17.2}} -\newlabel{s:HBuild}{{17.2}{254}{HBuild\relax }{section.17.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.1}Function}{254}{subsection.17.2.1}} -\newlabel{s:HBuild-Function}{{17.2.1}{254}{Function\relax }{subsection.17.2.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.2}Use}{254}{subsection.17.2.2}} -\newlabel{s:HBuild-Use}{{17.2.2}{254}{Use\relax }{subsection.17.2.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.3}Tracing}{255}{subsection.17.2.3}} -\newlabel{s:HBuild-Tracing}{{17.2.3}{255}{Tracing\relax }{subsection.17.2.3}{}} -\@setckpt{HTKRef/HBuild}{ -\setcounter{page}{256} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{2} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HBuild.tex b/HTKBook/HTKRef/HBuild.tex deleted file mode 100644 index 7cc01ba..0000000 --- a/HTKBook/HTKRef/HBuild.tex +++ /dev/null @@ -1,129 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\newpage -\mysect{HBuild}{HBuild} - -\mysubsect{Function}{HBuild-Function} - -\index{hbuild@\htool{HBuild}|(} -This program is used to convert input files that represent language -models in a number of different formats and output a standard -\HTK\ lattice. The main purpose of \htool{HBuild} is to allow the -expansion of \HTK\ multi-level lattices and the conversion of -bigram language models (such as those generated by \htool{HLStats}) -into lattice format. - -The specific input file types supported by \htool{HBuild} are: -\begin{enumerate} -\item \HTK\ multi-level lattice files. -\item Back-off bigram files in ARPA/MIT-LL format. -\item Matrix bigram files produced by \htool{HLStats}. -\item Word lists (to generate a word-loop grammar). -\item Word-pair grammars in ARPA Resource Management format. -\end{enumerate} - -The formats of both types of bigram supported by \htool{HBuild} -are described in Chapter~\ref{c:netdict}. The format for multi-level -\HTK\ lattice files is described in Chapter~\ref{c:htkslf}. - -\mysubsect{Use}{HBuild-Use} - -\htool{HBuild} is invoked by the command line -\begin{verbatim} - HBuild [options] wordList outLatFile -\end{verbatim} -The {\tt wordList} should contain a list of all the words used -in the input language model. The options specify the type of input -language model as well as the source filename. If none of the flags -specifying input language model type are given a simple word-loop -is generated using the {\tt wordList} given. After processing the -input language model, the resulting lattice -is saved to file {\tt outLatFile}. - -The operation of \htool{HBuild} is controlled by the following -command line options -\begin{optlist} - \ttitem{-b} Output the lattice in binary format. This increases - speed of subsequent loading (default ASCII text lattices). - - \ttitem{-m fn} The matrix format bigram in {\tt fn} forms the input - language model. - - \ttitem{-n fn} The ARPA/MIT-LL format back-off bigram in {\tt fn} - forms the input language model. - - \ttitem{-s st en} Set the bigram entry and exit words to {\tt st} - and {\tt en}. (Default {\tt !ENTER} and {\tt !EXIT}). - Note that no words will follow the exit word, or precede - the entry word. Both the entry and exit word must be included - in the {\tt wordList}. This option is only effective in conjunction - with the \texttt{-n} option. - - \ttitem{-t st en} This option is used with word-loops and word-pair - grammars. - An output lattice is produced with an initial word-symbol - {\tt st} (before the loop) and a final word-symbol {\tt en} - (after the loop). This allows initial and final silences - to be specified. (Default is that the initial and final nodes - are labelled with {\tt !NULL}). Note that {\tt st} and {\tt en} - shouldn't be included in the {\tt wordList} unless they occur - elsewhere in the network. This is only effective for word-loop and - word-pair grammars. - - \ttitem{-u s} The unknown word is {\tt s} (default !NULL). This - option only has an effect when bigram input language models - are specified. It can be used in conjunction with the {\tt -z} - flag to delete the symbol for unknown words from the output - lattice. - - \ttitem{-w fn} The word-pair grammar in {\tt fn} - forms the input language model. The file must be in - the format used for the ARPA Resource Management grammar. - - \ttitem{-x fn} The extended HTK lattice in {\tt fn} - forms the input language model. This option is - used to expand a multi-level lattice into a single - level lattice that can be processed by other \HTK\ tools. - - \ttitem{-z} Delete (zap) any references to the unknown word (see {\tt -u} - option) in the output lattice. - -\end{optlist} -\stdopts{HBuild} - -\mysubsect{Tracing}{HBuild-Tracing} - -\htool{HBuild} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hbuild@\htool{HBuild}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HCompV.aux b/HTKBook/HTKRef/HCompV.aux deleted file mode 100644 index c89c24f..0000000 --- a/HTKBook/HTKRef/HCompV.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.3}HCompV}{256}{section.17.3}} -\newlabel{s:HCompV}{{17.3}{256}{HCompV\relax }{section.17.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.1}Function}{256}{subsection.17.3.1}} -\newlabel{s:HCompV-Function}{{17.3.1}{256}{Function\relax }{subsection.17.3.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.2}Use}{256}{subsection.17.3.2}} -\newlabel{s:HCompV-Use}{{17.3.2}{256}{Use\relax }{subsection.17.3.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.3}Tracing}{257}{subsection.17.3.3}} -\newlabel{s:HCompV-Tracing}{{17.3.3}{257}{Tracing\relax }{subsection.17.3.3}{}} -\@setckpt{HTKRef/HCompV}{ -\setcounter{page}{258} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{3} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HCompV.tex b/HTKBook/HTKRef/HCompV.tex deleted file mode 100644 index 365f968..0000000 --- a/HTKBook/HTKRef/HCompV.tex +++ /dev/null @@ -1,188 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 11/11/95 -% - - -\newpage -\mysect{HCompV}{HCompV} - -\mysubsect{Function}{HCompV-Function} - -\index{hcompv@\htool{HCompV}|(} -This program will calculate the global mean and covariance -of a set of training data. It is primarily used to initialise -the parameters of a HMM such that all component means and all covariances -are set equal to the global data mean and covariance. This might form -the first stage of a \textit{flat start} training scheme -where all models are initially given the same parameters. -Alternatively, the covariances may be used as the basis for Fixed -Variance and Grand Variance training schemes. These can sometimes be -beneficial in adverse conditions where a fixed covariance matrix can -give increased robustness. - -When training large model sets from limited data, setting a floor -is often necessary to prevent variances being badly underestimated -through lack of data. One way of doing this is to define -a variance macro called \texttt{varFloorN} -where \texttt{N} is the stream index. \htool{HCompV} can also be -used to create these variance floor macros with values equal to -a specified fraction of the global variance. - -Another application of \htool{HCompV} is the estimation of mean and variance -vectors for use in cluster-based mean and variance normalisation -schemes. Given a list of utterances and a speaker pattern -\htool{HCompV} will estimate a mean and a variance for each speaker. - -\mysubsect{Use}{HCompV-Use} - -\htool{HCompV} is invoked via the command line -\begin{verbatim} - HCompV [options] [hmm] trainFiles ... -\end{verbatim} -where \texttt{hmm} is the name of the physical HMM whose parameters -are to be initialised. Note that no HMM name needs to be specified -when cepstral mean or variance vectors are estimated (\texttt{-c} -option). The effect of this command is to compute the covariance of -the speech training data and then copy it into every Gaussian -component of the given HMM definition. If there are multiple data -streams, then a separate covariance is estimated for each stream. The -HMM can have a mix of diagonal and full covariances and an option -exists to update the means also. The HMM definition can be contained -within one or more macro files loaded via the standard \texttt{-H} -option. Otherwise, the definition will be read from a file called -\texttt{hmm}. Any tyings in the input definition will be preserved in -the output. By default, the new updated definition overwrites the -existing one. However, a new definition file including any macro -files can be created by specifying an appropriate target directory -using the standard \texttt{-M} option. - -In addition to the above, an option \texttt{-f} is provided to compute -variance floor macros equal to a specified fraction -of the global variance. In this case, the newly created macros are -written to a file called \texttt{vFloors}. -For each stream \texttt{N} defined for \texttt{hmm}, a variance macro -called \texttt{varFloorN} is created. -If a target directory is specified -using the standard \texttt{-M} option then the new file will be written -there, otherwise it is written in the current directory. - -The list of train files can be stored in a script file if required. -Furthermore, the data used for estimating the global -covariance can be limited to that corresponding to a specified label. - - -The calculation of cluster-based mean and variances estimates is -enabled by the option \texttt{-c} which specifies the output directory -where the estimated vectors should be stored. - -The detailed operation of \htool{HCompV} is controlled by the following -command line options -\begin{optlist} - \ttitem{-c s} Calculate cluster-based mean/variance estimate and - store results in the specified directory. - - \ttitem{-k s} Speaker pattern for cluster-based mean/variance - estimation. Each utterance filename is matched against the pattern - and the characters that are matched against \verb|%| are used as the - cluster name. One mean/variance vector is estimated for each - cluster. - - \ttitem{-p s} Path pattern for cluster-based mean/variance - estimation. Each utterance filename is matched against the pattern - and the characters that are matched against \verb|%| are spliced to - the end of the directory string specified with option `-c' for the final - mean/variance vectors output. - - \ttitem{-q s} For cluster-based mean/variance estimation different - types of output can be requested. Any subset of the letters - \texttt{nmv} can be specified. Specifying \texttt{n} causes the - number of frames in a cluster to be written to the output file. - \texttt{m} and \texttt{v} cause the mean and variance vectors to be - included, respectively. - - \ttitem{-f f} Create variance floor macros with values equal to - \texttt{f} times the global variance. One macro is created for - each input stream and the output is stored in a file - called \texttt{vFloors}. - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HCompV} searches - through all of the training files and uses only the speech - frames from segments with the given label. When this option is not - used, \htool{HCompV} uses - all of the data in each training file. - - \ttitem{-m} The covariances of the output HMM are always updated - however updating the means must be specifically requested. When - this option is set, \htool{HCompV} updates all the HMM component - means with the sample mean computed from the training files. - - \ttitem{-o s} The string {\tt s} is used as the name of the output - HMM in place of the source name. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal elements of - the covariance matrix) to the real value {\tt f} (default value - 0.0). - -\stdoptB -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HCompV} - -\mysubsect{Tracing}{HCompV-Tracing} - -\htool{HCompV} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show covariance matrices. - \ttitem{00004} trace data loading. - \ttitem{00010} list label segments. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hcompv@\htool{HCompV}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HCopy.aux b/HTKBook/HTKRef/HCopy.aux deleted file mode 100644 index 5bac4ff..0000000 --- a/HTKBook/HTKRef/HCopy.aux +++ /dev/null @@ -1,40 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.4}HCopy}{258}{section.17.4}} -\newlabel{s:HCopy}{{17.4}{258}{HCopy\relax }{section.17.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.4.1}Function}{258}{subsection.17.4.1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.4.2}Use}{258}{subsection.17.4.2}} -\newlabel{t:validcons}{{17.1}{259}{Use\relax }{tabctr.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.4.3}Trace Output}{260}{subsection.17.4.3}} -\@setckpt{HTKRef/HCopy}{ -\setcounter{page}{261} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{4} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HCopy.tex b/HTKBook/HTKRef/HCopy.tex deleted file mode 100644 index 536240d..0000000 --- a/HTKBook/HTKRef/HCopy.tex +++ /dev/null @@ -1,205 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\newpage -\mysect{HCopy}{HCopy} - -\subsection{Function} - -\index{hcopy@\htool{HCopy}|(} -This program will copy one or more data files to a designated output -file, optionally converting the data into a parameterised form. While -the source files can be in any supported format, the output format is -always \HTKFF. By default, the whole of the source file is copied to -the target but options exist to only copy a specified segment. Hence, -this program is used to convert data files in other formats to the \HTKFF\ -format, to concatenate or segment data files, and to parameterise the -result. If any option is set which leads to the extraction of a segment -of the source file rather than all of it, then segments will be -extracted from all source files and concatenated to the target. - -Labels will be copied/concatenated if any of the options indicating -labels are specified (\texttt{-i -l -x -G -I -L -P -X}). In this case, each -source data file must have an associated label file, and a target label -file is created. The name of the target label file is the root name of -the target data file with the extension \texttt{.lab}, unless the \texttt{-X} -option is used. This new label file will contain the appropriately -copied/truncated/concatenated labels to correspond with the target data -file; all start and end boundaries are recalculated if necessary. - -When used in conjunction with \htool{HSLab}, \htool{HCopy} provides a facility for tasks -such as cropping silence surrounding recorded utterances. Since input -files may be coerced, \htool{HCopy} can also be used to convert the parameter -kind of a file, for example from WAVEFORM to MFCC, depending on the -configuration options. -Not all possible conversions can actually be performed; see Table~\href{t:validcons} for a list of valid conversions. Conversions must be specified via a configuration file as described in chapter~\ref{c:speechio}. Note also that the parameterisation qualifier \texttt{\_N} cannot be used when saving files to disk, and is meant only for on-the-fly parameterisation. - -\subsection{Use} - -\htool{HCopy} is invoked by typing the command line -\begin{verbatim} - HCopy [options] sa1 [ + sa2 + ... ] ta [ sb1 [ + sb2 + ... ] tb ... ] -\end{verbatim} -This causes the contents of the one or more source files -\texttt{sa1}, \texttt{sa2}, \ldots - to be concatenated -and the result copied to the given target file \texttt{ta}. To avoid the overhead -of reinvoking the tool when processing large databases, multiple -sources and targets may be specified, for example -\begin{verbatim} -HCopy srcA.wav + srcB.wav tgtAB.wav srcC.wav tgtD.wav -\end{verbatim} -will create two new files \texttt{tgtAB.wav} and \texttt{tgtD.wav}. -\htool{HCopy} takes file arguments from a script specified using the \texttt{-S} option -exactly as from the -command line, except that any newlines are ignored. - -The allowable options to \htool{HCopy} are as follows where all times -and durations are given in 100 ns units and -are written as floating-point numbers. - - -\begin{optlist} - - \ttitem{-a i} Use level i of associated label files with the \texttt{-n} - and \texttt{-x} options. Note that this is not the same as using the - \texttt{TRANSLEVEL} configuration variable since the \texttt{-a} option -still allows all levels to be copied through to the output files. - - \ttitem{-e f} End copying from the source file at time \texttt{f}. The - default is the end of the file. If \texttt{f} is negative or zero, it is - interpreted as a time relative to the end of the file, while a positive value - indicates an absolute time from the start of the file. - - \ttitem{-i mlf} Output label files to master file \texttt{mlf}. - - \ttitem{-l s} Output label files to the directory \texttt{s}. - The default is to output to the current directory. - - \ttitem{-m t} Set a margin of duration \texttt{t} around the - segments defined by the \texttt{-n} and \texttt{-x} options. - - \ttitem{-n i [j]} Extract the speech segment corresponding to the {\tt - i}'th label in the source file. If \texttt{j} is specified, then the - segment corresponding to the sequence of labels \texttt{i} to \texttt{j} - is extracted. Labels are numbered from their position in the - label file. A negative index can be used to count from the end - of the label list. Thus, \texttt{-n 1 -1} would specify the segment - starting at the first label and ending at the last. - - \ttitem{-s f} Start copying from the source file at time \texttt{f}. - The default is 0.0, ie the beginning of the file. - - \ttitem{-t n} Set the line width to \texttt{n} chars when formatting - trace output. - - \ttitem{-x s [n]} Extract the speech segment corresponding to the - first occurrence of label \texttt{s} in the source file. If \texttt{n} - is specified, then the \texttt{n}'th occurrence is extracted. If - multiple files are being concatenated, segments are extracted - from each file in turn, and the label must exist for each - concatenated file. - -\stdoptF -\stdoptG -\stdoptI -\stdoptL -\stdoptO -\stdoptP -\stdoptX - -\end{optlist} -\stdopts{HCopy} - -Note that the parameter kind conversion -mechanisms described in chapter~\ref{c:speechio} -will be applied to all source files. In particular, if an automatic -conversion is requested via the configuration file, then \htool{HCopy} will copy -or concatenate the converted source files, not the actual contents. -Similarly, automatic byte swapping may occur depending on the source -format and the configuration variable \texttt{BYTEORDER}. Because the -sampling rate may change during conversions, the options that -specify a position within a file i.e. \texttt{-s} and \texttt{-e} -use absolute times rather than sample index numbers. All times in \HTK\ -are given in units of 100ns and -are written as floating-point numbers. To save writing long strings of zeros, -standard -exponential notation may be used, for example \texttt{-s 1E6} indicates a -start time of 0.1 seconds from the beginning of the file. - -\begin{center} -\begin{tabular}{|r||ccccccccccc|} \cline{2-12} - \multicolumn{1}{c}{} & \multicolumn{11}{|c|}{\it Outputs } \\ -\cline{2-11} \cline{2-11} \hline - ~ & ~ & ~ & ~ & L & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ - ~ & W & ~ & ~ & P & ~ & ~ & ~ & ~ & ~ & D & ~ \\ - ~ & A & ~ & ~ & C & ~ & ~ & ~ & M & ~ & I & ~ \\ - ~ & V & ~ & L & E & I & ~ & ~ & E & ~ & S & ~ \\ - ~ & E & ~ & P & P & R & ~ & F & L & ~ & C & ~ \\ - ~ & F & ~ & R & S & E & M & B & S & U & R & ~ \\ - ~ & O & L & E & T & E & F & A & P & S & E & P \\ - ~ & R & P & F & R & F & C & N & E & E & T & L \\ -{\it Inputs} & M & C & C & A & C & C & K & C & R & E & P \\ \hline -~WAVEFORM & $\surd$ & $\surd$ & $\surd$ & $\surd$ &$\surd$& $\surd$ & $\surd$ & $\surd$ & ~ &$\surd$ & ~\\ -~~~~~~LPC & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$ & ~\\ -~~~LPREFC & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$& ~\\ -LPCEPSTRA & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$& ~\\ -~~~~IREFC & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$& ~\\ -~~~~~MFCC & ~ & ~ & ~ & ~ & ~ & $\surd$ & ~ & ~ & ~ &$\surd$& ~\\ -~~~~FBANK & ~ & ~ & ~ & ~ & ~ & $\surd$ & $\surd$ & ~ & ~ &$\surd$& ~\\ -~~MELSPEC & ~ & ~ & ~ & ~ & ~ & $\surd$ & $\surd$ & $\surd$ & ~ &$\surd$& ~\\ -~~~~~USER & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & $\surd$ &$\surd$ & ~\\ -~DISCRETE & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & $\surd$ & ~ \\ -~~~~~~PLP & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & $\surd$ & $\surd$ \\ -\hline -\end{tabular} -\tabcap{validcons}{Valid Parameter Conversions} -\end{center} - -Note that truncations are performed {\em after\/} any desired coding, -which may result in a loss of time resolution if the target file format -has a lower sampling rate. Also, because of windowing effects, -truncation, coding, and concatenation operations are not necessarily -interchangeable. If in doubt, perform all truncation/concatenation in -the waveform domain and then perform parameterisation as a last, separate -invocation of \htool{HCopy}. - -\subsection{Trace Output} - -\htool{HCopy} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\ttitem{00002} source and target file formats and parameter kinds. -\ttitem{00004} segment boundaries computed from label files. -\ttitem{00010} display memory usage after processing each file. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hcopy@\htool{HCopy}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HDMan.aux b/HTKBook/HTKRef/HDMan.aux deleted file mode 100644 index d8d1771..0000000 --- a/HTKBook/HTKRef/HDMan.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.5}HDMan}{261}{section.17.5}} -\newlabel{s:HDMan}{{17.5}{261}{HDMan\relax }{section.17.5}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.5.1}Function}{261}{subsection.17.5.1}} -\newlabel{s:HDMan-Function}{{17.5.1}{261}{Function\relax }{subsection.17.5.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.5.2}Use}{262}{subsection.17.5.2}} -\newlabel{s:HDMan-Use}{{17.5.2}{262}{Use\relax }{subsection.17.5.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.5.3}Tracing}{263}{subsection.17.5.3}} -\newlabel{s:HDMan-Tracing}{{17.5.3}{263}{Tracing\relax }{subsection.17.5.3}{}} -\@setckpt{HTKRef/HDMan}{ -\setcounter{page}{264} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{5} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HDMan.tex b/HTKBook/HTKRef/HDMan.tex deleted file mode 100644 index 2ecd154..0000000 --- a/HTKBook/HTKRef/HDMan.tex +++ /dev/null @@ -1,208 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\newpage -\mysect{HDMan}{HDMan} - -\mysubsect{Function}{HDMan-Function} - -\index{hdman@\htool{HDMan}|(} -The \HTK\ tool \htool{HDMan} is used to prepare a pronunciation dictionary -from one or more sources. It -reads in a list of \textit{editing} commands from a -script file and then outputs an edited and merged copy of -one or more dictionaries. - -Each source pronunciation dictionary consists of comment lines and definition -lines. Comment lines start with the \texttt{\#} character (or optionally any -one of a set of specified comment chars) and are ignored by \htool{HDMan}. -Each definition line starts with a word and is followed by a sequence of -symbols (phones) that define the pronunciation. The words and the phones are -delimited by spaces or tabs, and the end of line delimits each definition. - -Dictionaries used by \htool{HDMan} are read using the standard \HTK\ string -conventions (see section~\ref{s:htkstrings}), however, the command \texttt{IR} -can be used in a \htool{HDMan} source edit script to switch to using this raw -format. Note that in the default mode, words and phones should not begin with unmatched quotes (they should be escaped with the backslash). All dictionary entries must already be alphabetically sorted before using \htool{HDMan}. - -Each edit command in the script file must be on a separate line. Lines in the -script file starting with a \texttt{\#} are comment lines and are ignored. The -commands supported are listed below. They can be displayed by \htool{HDMan} -using the \texttt{-Q} option. - -When no edit files are specified, \htool{HDMan} simply merges all of -the input dictionaries and outputs them in sorted order. All input -dictionaries must be sorted. Each input dictionary \texttt{xxx} may be -processed by its own private set of edit commands stored in \texttt{xxx.ded}. -Subsequent to the processing of the input dictionaries by their own -unique edit scripts, the merged dictionary can be processed by -commands in \texttt{global.ded} (or some other specified -global edit file name). - -Dictionaries are processed on a word by word basis in the order that -they appear on the command line. Thus, all of -the pronunciations for a given word are loaded into a buffer, then -all edit commands are applied to these pronunciations. The result -is then output and the next word loaded. - -Where two or more dictionaries give pronunciations for the same word, -the default behaviour is that only the first set of pronunciations -encountered are retained and all others are ignored. An option exists -to override this so that all pronunciations are concatenated. - -Dictionary entries can be filtered by a word list such that all entries not in -the list are ignored. Note that the word identifiers in the word list should -match exactly (e.g. same case) their corresponding entries in the dictionary. - -The edit commands provided by \htool{HDMan} are as follows - - - -\begin{varlist} - \fwitem{2cm}{AS A B ...} Append silence models A, B, etc to - each pronunciation. - \fwitem{2cm}{CR X A Y B } Replace phone \texttt{Y} in the context of \texttt{A\_B} - by \texttt{X}. Contexts may include an asterix \texttt{*} to denote any - phone or a defined context set - defined using the \texttt{DC} command. - \fwitem{2cm}{DC X A B ...} Define the set \texttt{A}, \texttt{B}, \ldots as - the context \texttt{X}. - \fwitem{2cm}{DD X A B ...} Delete the definition for word \texttt{X} starting - with phones \texttt{A}, \texttt{B}, \ldots. - \fwitem{2cm}{DP A B C ...} Delete any occurrences of phones \texttt{A} or - \texttt{B} or \texttt{C} \ldots. - \fwitem{2cm}{DS src} Delete each pronunciation from source \texttt{src} - unless it is the only one for the current word. - \fwitem{2cm}{DW X Y Z ...} Delete words (\& definitions) \texttt{X}, - \texttt{Y}, \texttt{Z}, \ldots. - \fwitem{2cm}{FW X Y Z ...} Define \texttt{X}, - \texttt{Y}, \texttt{Z}, \ldots\ as function words and - change each phone - in the definition to a function word specific phone. For example, - in word \texttt{W} phone \texttt{A} would become \texttt{W.A}. - \fwitem{2cm}{IR} Set the input mode to raw. - In raw mode, words are regarded as arbitrary sequences of printing - chars. In the default mode, words are strings as defined - in section~\ref{s:htkstrings}. - \fwitem{2cm}{LC [X]} Convert all phones to be left-context dependent. If \texttt{X} is given - then the 1st phone \texttt{a} in each word is changed to \texttt{X-a} - otherwise it is unchanged. - \fwitem{2cm}{LP} Convert all phones to lowercase. - \fwitem{2cm}{LW} Convert all words to lowercase. - \fwitem{2cm}{MP X A B ...} Merge any sequence of phones \texttt{A} \texttt{B} - \ldots\ and rename as \texttt{X}. - \fwitem{2cm}{RC [X]} Convert all phones to be right-context dependent. If - \texttt{X} is given then the last phone \texttt{z} in each word is - changed to \texttt{z+X} otherwise it is unchanged. - \fwitem{2cm}{RP X A B ...} Replace all occurrences of phones \texttt{A} - or \texttt{B} \ldots by \texttt{X}. - \fwitem{2cm}{RS system} Remove stress marking. Currently the only - stress marking system - supported is that used in the dictionaries produced by - Carnegie Melon University (system = cmu). - \fwitem{2cm}{RW X A B ...} Replace all occurrences of word \texttt{A} - or \texttt{B} \ldots by \texttt{X}. - \fwitem{2cm}{SP X A B ...} Split phone \texttt{X} into the sequence - \texttt{A} \texttt{B} \texttt{C} \ldots. - \fwitem{2cm}{TC [X [Y]] } Convert phones to triphones. If - \texttt{X} is given then the first phone \texttt{a} is converted to - \texttt{X-a+b} otherwise it is unchanged. If \texttt{Y} is given - then the last phone \texttt{z} is converted to \texttt{y-z+Y} - otherwise if \texttt{X} is given - then it is changed to \texttt{y-z+X} otherwise it is unchanged. - \fwitem{2cm}{UP} Convert all phones to uppercase. - \fwitem{2cm}{UW} Convert all words to uppercase. - -\end{varlist} - -\mysubsect{Use}{HDMan-Use} - -\htool{HDMan} is invoked by typing the command line -\begin{verbatim} - HDMan [options] newDict srcDict1 srcDict2 ... -\end{verbatim} -This causes \htool{HDMan} read in the source dictionaries \texttt{srcDict1}, -\texttt{srcDict2}, etc.\ and generate a new dictionary \texttt{newDict}. -The available options are - -\begin{optlist} - - \ttitem{-a s} Each character in the string \texttt{s} denotes the - start of a comment line. By default there is just one - comment character defined which is \texttt{\#}. - \ttitem{-b s} Define \texttt{s} to be a word boundary symbol. - \ttitem{-e dir} Look for edit scripts in the directory \texttt{dir}. - \ttitem{-g f} File \texttt{f} holds the global edit script. By - default, \htool{HDMan} expects the global edit script to be - called \texttt{global.ded}. - \ttitem{-h i j} Skip the first \texttt{i} lines of the \texttt{j}'th - listed source dictionary. - \ttitem{-i} Include word output symbols in the output dictionary. - \ttitem{-j} Include pronunciation probabilities in the output dictionary. - \ttitem{-l s} Write a log file to \texttt{s}. The log file will include - dictionary statistics and a list of the number of occurrences - of each phone. - \ttitem{-m} Merge pronunciations from all source dictionaries. By default, - \htool{HDMan} generates a single pronunciation for each word. If several - input dictionaries have pronunciations for a word, then the first encountered - is used. Setting this option causes all distinct pronunciations to be - output for each word. - \ttitem{-n f} Output a list of all distinct phones encountered - to file \texttt{f}. - \ttitem{-o} Disable dictionary output. - \ttitem{-p f} Load the phone list stored in file \texttt{f}. This - enables a check to be made that all output phones are in the supplied - list. You need to create a log file (\texttt{-l}) to view the results of - this check. - \ttitem{-t} Tag output words with the name of the source dictionary which - provided the pronunciation. - \ttitem{-w f} Load the word list stored in file \texttt{f}. Only - pronunciations for the words in this list will be extracted from - the source dictionaries. -\stdoptQ -\end{optlist} -\stdopts{HDMan} - -\mysubsect{Tracing}{HDMan-Tracing} - -\htool{HDMan} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting - \ttitem{00002} word buffer operations - \ttitem{00004} show valid inputs - \ttitem{00010} word level editing - \ttitem{00020} word level editing in detail - \ttitem{00040} print edit scripts - \ttitem{00100} new phone recording - \ttitem{00200} pron deletions - \ttitem{00400} word deletions -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hdman@\htool{HDMan}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HDecode.aux b/HTKBook/HTKRef/HDecode.aux deleted file mode 100644 index 0f863c6..0000000 --- a/HTKBook/HTKRef/HDecode.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.6}HDecode}{264}{section.17.6}} -\newlabel{s:HDecode}{{17.6}{264}{HDecode\relax }{section.17.6}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.6.1}Function}{264}{subsection.17.6.1}} -\newlabel{s:HDecode-Function}{{17.6.1}{264}{Function\relax }{subsection.17.6.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.6.2}Use}{265}{subsection.17.6.2}} -\newlabel{s:HDecode-Use}{{17.6.2}{265}{Use\relax }{subsection.17.6.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.6.3}Tracing}{266}{subsection.17.6.3}} -\newlabel{s:HDecode-Tracing}{{17.6.3}{266}{Tracing\relax }{subsection.17.6.3}{}} -\@setckpt{HTKRef/HDecode}{ -\setcounter{page}{267} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{5} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{6} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{83} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HDecode.tex b/HTKBook/HTKRef/HDecode.tex deleted file mode 100644 index 5d33eb6..0000000 --- a/HTKBook/HTKRef/HDecode.tex +++ /dev/null @@ -1,253 +0,0 @@ - -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell - 24/11/97 -% -\newpage -\mysect{HDecode}{HDecode} - -{\bf\large -WARNING: The HTK Large Vocabulary -Decoder \htool{HDecode} has -been specifically written for speech recognition tasks -using cross-word triphone models. Known restrictions are: -\begin{itemize} -\item only works for cross-word triphones; -\item supports N-gram language models upto tri-grams; -\item \texttt{sil} and \texttt{sp} models are reserved as silence -models and are, by default, automatically added to the end of all -pronunciation variants of each word in the recognition dictionary; -\item \texttt{sil} must be used as the pronunciation for the sentence start - and sentence end tokens; -\item \texttt{sil} and \texttt{sp} models cannot occur in the dictionary, - except for the dictionary entry of the sentence start - and sentence end tokens; -\item word lattices generated with \htool{HDecode} must be made {\em -deterministic} using \htool{HLRescore} to remove duplicate paths -prior to being used for acoustic model rescoring -with \htool{HDecode} or \htool{HVite}. -\end{itemize} -} - -\mysubsect{Function}{HDecode-Function} - -\index{hdecode@\htool{HDecode}|(} - -\htool{HDecode} is a decoder specifically written for large vocabulary -speech recognition. In contrast to the other tools in HTK there are a number -of limitations to its use. See the warnings above. - -Similar to \htool{HVite}, the best transcription hypothesis will be generated -in the Master Label File (MLF) format. Optionally, multiple hypotheses can -also be generated as a word lattice in the form of the HTK Standard Lattice -File (SLF) format. In the \htool{HDecode} tutorial section, a range of -different options of using \htool{HDecode} and detailed examples are given. - -There are two main modes that \htool{HDecode} can be run in. The first is -\emph{full decoding} where an $n$-gram language model is used for recognition. -The current version of \htool{HDecode} supports using word based uni-gram, -bi-gram or tri-gram language models. Higher order $n$-gram models, or if the -size of the language model is very large, should be applied by rescoring -lattices generated using simpler language models. See the \htool{HDecode} -tutorial section and \htool{HLRescore} reference page for example of lattice -expansion by applying additional language models. The second mode that -\htool{HDecode} can be run in is \emph{lattice rescoring}. Here, for example, -a different acoustic model can be used to rescore lattices. - -The acoustic and language model scores can be adjusted using the -\texttt{-a} and \texttt{-s} options respectively. -In the case where the supplied dictionary -contains pronunciation probability information, the corresponding scale -factor can be adjusted using the \texttt{-r} option. The \texttt{-q} option -can be used to control the type of information to be included in the -generated lattices. - -\htool{HDecode}, when compiled with the \texttt{MODALIGN} setting, -can also be used to align the HMM models to a given word level lattice -(also known as model marking the lattice). When using the default -\texttt{Makefile} supplied with \htool{HDecode}, this binary will be -made and stored in \htool{HDecode.mod}. - -When using \htool{HDecode}, the run-time can be adjusted by changing the main -and relative token pruning beam widths (see the \texttt{-t} option), word end -beam width (see the \texttt{-v} option), the maximum model pruning (see the -\texttt{-u} option). The number of tokens used per state (see the \texttt{-n} -option) can also significantly affect both the decoding time and the size of -lattices generated. - -Decoding with adapted acoustic models is supported by \htool{HDecode}. The use -of an adaptation transformation is enabled using the \texttt{-m} option. The -path, name and extension of the transformation matrices are specified using -the \texttt{-J} and the file names are derived from the name of the speech -file using a \emph{mask} (see the \texttt{-h} option). Incremental adaptation -and transform estimation, are not currently supported by \htool{HDecode}. - -\htool{HDecode} also allows probability calculation to be carried out in -blocks at the same time. The block size (in frames) can be specified using -the \texttt{-k} option. However, when CMLLR adaptation is used, probabilities -have to be calculated one frame at a time (i.e. using \texttt{-k 1})\footnote{ -This is due to the different observation caching mechanisms used in -\htool{HDecode} and the \htool{HAdapt} module}. - -\htool{HDecode} performs recognition by expanding a phone model network with -language model and pronunciation model information dynamically applied. The -lattices generated are word lattices, though generated using triphone -acoustic models. This is similar to a projection operation of a phone level -finite state network on to word level, but identical word paths that -correspond to different phone alignments are kept distinct. Note that these -duplicated word paths are not permitted when using either \htool{HDecode} or -\htool{HVite} for acoustic model lattice rescoring or alignment. Input word -lattices are expected to be deterministic in both cases. The impact of using -non-deterministic lattices for the two HTK decoders are different in nature -due to internal design differences, but in both cases the merging step to -remove the duplicates is very important prior to lattice rescoring or -alignment. See \htool{HDecode} tutorial page and \htool{HLRescore} reference -page for information on how to produce deterministic word lattices. - - -\mysubsect{Use}{HDecode-Use} - -\htool{HDecode} is invoked via the command line -\begin{verbatim} - HDecode [options] dictFile hmmList testFiles ... -\end{verbatim} - -The detailed operation of \htool{HDecode} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-a f} Set acoustic scale factor to \texttt{f} (default value 1.0). - - \ttitem{-d dir} This specifies the directory to search for the - HMM definition files corresponding to the labels used in - the recognition network. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the input transforms. - - \ttitem{-i s} Output transcriptions to MLF \texttt{s}. - - \ttitem{-k i} Set frame block size in output probability calculation for - diagonal covariance systems. - - \ttitem{-l dir} This specifies the directory to store the output - label or lattice files. If this option is not used then \htool{HDecode} will store - the output MLF files in the current directory, and lattices - under the same directory as the data. - When recognition output is directed to an MLF, this option can - be used to add a path to each output file name in the same was as \htool{HVite}. - - \ttitem{-m } Use an input transform. (default is off) - - \ttitem{-n i} Use \texttt{i} tokens in each set during token - propagation. (default is 32 tokens per state) - - \ttitem{-o s} Choose how the output labels should be formatted. - \texttt{s} is a string with certain letters (from \texttt{NSCTWMX}) - indicating binary flags that control formatting options. - \texttt{N} normalise acoustic scores by dividing by the duration - (in frames) of the segment. - \texttt{S} remove scores from output label. By default - scores will be set to the total likelihood of the segment. - \texttt{C} Set the transcription labels to start and end on - frame centres. By default start times are set to the start - time of the frame and end times are set to the end time of - the frame. - \texttt{T} Do not include times in output label files. - \texttt{W} Do not include words in output label files - when performing state or model alignment. - \texttt{M} Do not include model names in output label - files when performing state and model alignment. - \texttt{X} Strip the triphone context. - - \ttitem{-p f} Set the word insertion log probability to \texttt{f} - (default 0.0). - - \ttitem{-q s} Choose how the output lattice should be formatted. - \texttt{s} is a string with certain letters (from \texttt{ABtvaldmnr}) - indicating binary flags that control formatting options. - \texttt{A} attach word labels to arcs rather than nodes. - \texttt{B} output lattices in binary for speed. - \texttt{t} output node times. - \texttt{v} output pronunciation information. - \texttt{a} output acoustic likelihoods. - \texttt{l} output language model likelihoods. - \texttt{d} output word alignments (if available). - \texttt{m} output within word alignment durations. - \texttt{n} output within word alignment likelihoods. - \texttt{r} output pronunciation probabilities. - - \ttitem{-r f} Set the dictionary pronunciation probability scale - factor to \texttt{f}. (default value 1.0). - - \ttitem{-s f} Set the grammar scale factor to \texttt{f} (default value 1.0). - - \ttitem{-t f [g]} Enable beam searching such that any model whose - maximum log probability token falls more than - \texttt{f} below the maximum among all models is deactivated. - An extra parameter \texttt{g} can be specified as the relative - token beam width. - - \ttitem{-u i} Set the maximum number of active models to \texttt{i}. - Setting \texttt{i} to \texttt{0} disables this limit (default 0). - - \ttitem{-v f [g]} Enable word end pruning. Do not propagate tokens from - word end nodes that fall more than \texttt{f} below the maximum - word end likelihood. (default \texttt{0.0}). - An extra parameter \texttt{g} can be specified to give - additional pruning at both the start and end of a word. - - \ttitem{-w s} Load language model from \texttt{s}. - - \ttitem{-x ext} This sets the extension to use for HMM definition - files to \texttt{ext}. - - \ttitem{-y ext} This sets the extension for output label files to - \texttt{ext} (default \texttt{rec}). - - \ttitem{-z ext} Enable output of lattices with extension \texttt{ext} - (default off). - - \ttitem{-L dir} This specifies the directory to find input lattices. - -% \ttitem{-R s} Load 1-best alignment label file from \texttt{-s}. - - \ttitem{-X ext} Set the extension for the input lattice files - to be \texttt{ext} (default value \texttt{lat}). - -\stdoptF -\stdoptG -\stdoptH -\stdoptJ -\stdoptP - -\end{optlist} -\stdopts{HDecode} - -\mysubsect{Tracing}{HDecode-Tracing} - -\htool{HDecode} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} enable basic progress reporting. - \ttitem{0002} list observations. - \ttitem{0004} show adaptation process. - \ttitem{0010} show memory usage at start and finish. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hvite@@\htool{HDecode}|)} - - diff --git a/HTKBook/HTKRef/HERest.aux b/HTKBook/HTKRef/HERest.aux deleted file mode 100644 index c1431df..0000000 --- a/HTKBook/HTKRef/HERest.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.7}HERest}{267}{section.17.7}} -\newlabel{s:HERest}{{17.7}{267}{HERest\relax }{section.17.7}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.7.1}Function}{267}{subsection.17.7.1}} -\newlabel{s:HERest-Function}{{17.7.1}{267}{Function\relax }{subsection.17.7.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.7.2}Use}{268}{subsection.17.7.2}} -\newlabel{s:HERest-Use}{{17.7.2}{268}{Use\relax }{subsection.17.7.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.7.3}Tracing}{270}{subsection.17.7.3}} -\newlabel{s:HERest-Tracing}{{17.7.3}{270}{Tracing\relax }{subsection.17.7.3}{}} -\@setckpt{HTKRef/HERest}{ -\setcounter{page}{271} -\setcounter{equation}{0} -\setcounter{enumi}{3} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{5} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{7} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{131} -\setcounter{Hfootnote}{83} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HERest.tex b/HTKBook/HTKRef/HERest.tex deleted file mode 100644 index 1d835f1..0000000 --- a/HTKBook/HTKRef/HERest.tex +++ /dev/null @@ -1,362 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Dave Ollason 24/11/97 -% - -\newpage -\mysect{HERest}{HERest} - -\mysubsect{Function}{HERest-Function} - -\index{herest@\htool{HERest}|(} This program is used to perform a -single re-estimation of the parameters of a set of HMMs, or linear -transforms, using an {\em embedded training} version of the Baum-Welch -algorithm. Training data consists of one or more utterances each of -which has a transcription in the form of a standard label file -(segment boundaries are ignored). For each training utterance, a -composite model is effectively synthesised by concatenating the -phoneme models given by the transcription. Each phone model has the -same set of accumulators allocated to it as are used in HRest but in -\htool{HERest} they are updated simultaneously by performing a -standard Baum-Welch pass over each training utterance using the -composite model. - -\htool{HERest} is intended to operate on HMMs with initial parameter values -estimated by HInit/HRest. -\htool{HERest} supports multiple mixture Gaussians, discrete and tied-mixture -HMMs, multiple data streams, parameter tying within and between models, and -full or diagonal covariance matrices. \htool{HERest} also supports tee-models -(see section~\ref{s:teemods}), for handling optional silence and non-speech -sounds. These may be placed between the units (typically words or phones) -listed in the transcriptions but they cannot be used at the start or end of a -transcription. Furthermore, chains of tee-models are not permitted. - -\htool{HERest} includes features to allow parallel operation where a network -of processors is available. When the training set is large, it can be split into separate chunks that are processed in parallel on multiple machines/processors, consequently speeding up the training process. - -Like all re-estimation tools, \htool{HERest} allows a floor to be set on -each individual variance by defining a variance floor macro for each data -stream (see chapter~\ref{c:Training}). The configuration variable {\tt -VARFLOORPERCENTILE} allows the same thing to be done in a different way -which appears to improve recognition results. By setting this to e.g. 20, -the variances from each dimension are floored to the 20th percentile of the -distribution of variances for that dimension. - -%as suggested in: -%\bibitem[Lee, Giachin, Rabiner, Pieraccini \& Rosenberg, 1992]{lee92csl} -%Lee C-H., Giachin E., Rabiner L.R., Pieraccini R. \& Rosenberg A.E. -%(1992). ``Improved Acoustic Modeling for Large Vocabulary Continuous -%Speech Recognition,'' {\it Computer Speech and Language} {\bf 6}, pp. -%103-127. - - -\htool{HERest} supports two specific methods for initialisation of -model parameters , \textit{single pass retraining} and \textit{2-model - reestimation}. - -\textit{Single pass retraining} is useful when the parameterisation of -the front-end (e.g. from MFCC to PLP coefficients) is to be modified. -Given a set of well-trained models, a set of new models using a -different parameterisation of the training data can be generated in a -single pass. This is done by computing the forward and backward -probabilities using the original well-trained models and the original -training data, but then switching to a new set of training data to -compute the new parameter estimates. - -In \textit{2-model re-estimation} one model set can be used to obtain -the forward backward probabilities which then are used to update the -parameters of another model set. Contrary to \textit{single pass - retraining} the two model sets are not required to be tied in the -same fashion. This is particularly useful for training of single -mixture models prior to decision-tree based state clustering. The use -of 2-model re-estimation in \htool{HERest} is triggered by setting the -config variables {\tt ALIGNMODELMMF} or {\tt ALIGNMODELDIR} and {\tt - ALIGNMODELEXT} together with {\tt ALIGNHMMLIST} (see section \ref{s:twomodel}). -As the model list can differ for the alignment model set a separate set of -input transforms may be specified using the {\tt ALIGNXFORMDIR} and -{\tt ALIGNXFORMEXT}. - -\htool{HERest} for updating model parameters operates in two distinct stages. - -\begin{enumerate} - -\item - In the first stage, one of the following two options applies - \begin{enumerate} - \item - Each input data file contains training data which is - processed and the accumulators for state occupation, - state transition, means and variances are updated. - - \item - Each data file contains a dump of the accumulators - produced by previous runs of the program. These - are read in and added together to form a single set - of accumulators. - \end{enumerate} - -\item - In the second stage, one of the following options applies - \begin{enumerate} - \item - The accumulators are used to calculate new - estimates for the HMM parameters. - \item - The accumulators are dumped into a file. - \end{enumerate} -\end{enumerate} - -Thus, on a single processor the default combination 1(a) and 2(a) would -be used. However, if N processors are available then the -training data would be split into N equal groups and \htool{HERest} would -be set to process one data set on each processor using the combination -1(a) and 2(b). -When all processors had finished, the -program would then be run again using the combination 1(b) and 2(a) -to load in the partial accumulators created by the N processors -and do the final parameter re-estimation. The choice of which combination -of operations \htool{HERest} will perform is governed by the {\tt -p} option -switch as described below. - -As a further performance optimisation, \htool{HERest} will also prune the -$\alpha$ and $\beta$ matrices. By this means, a factor of 3 to 5 -speed improvement and a similar reduction in memory requirements can be -achieved with negligible effects on training performance (see the {\tt --t} option below). - -\htool{HERest} is able to make use of, and estimate, linear -transformations for model adaptation. There are three types of linear -transform that are made use in \htool{HERest}. -\begin{itemize} -\item {\it Input transform}: the input transform is used to determine -the forward-backward probabilities, hence the component posteriors, for -estimating model and transform -\item {\it Output transform}: the output transform is generated when the -{\tt -u} option is set to {\tt a}. The transform will be stored in the -current directory, or the directory specified by the {\tt -K} option -and optionally the transform extension. -\item {\it Parent transform}: the parent transform determines the -model, or features, on which the model set or transform is to be -generated. For transform estimation this allows {\em cascades} of transforms -to be used to adapt the model parameters. For model estimation this -supports {\em speaker adaptive training}. Note the current implementation -only supports adaptive training with CMLLR. Any parent transform can be -used when generating transforms. -\end{itemize} -When input or parent transforms are specified the transforms may -physically be stored in multiple directories. Which transform to be used -is determined in the following search order: -order is used. -\begin{enumerate} -\item Any loaded macro that matches the transform (and its' extension) name. -\item If it is a parent transform, the directory specified with the -{\tt -E} option. -\item The list of directories specified with the {\tt -J} option. -The directories are searched in the order that they are specified -in the command line. -\end{enumerate} -As the search order above looks for loaded macros first it is -recommended that unique extensions are specified for each set of -transforms generated. Transforms may either be stored in -a single TMF. These TMFs may be loaded using the {\tt -H} option. -When macros are specified for the regression class trees and -the base classes the following search order is used -\begin{enumerate} -\item Any loaded macro that matches the macro name. -\item The path specified by the configuration variable. -\item The list of directories specified with the {\tt -J} option. -The directories are searched in the order that they are specified -in the command line. -\end{enumerate} -Baseclasses and regression classes may also be loaded using the -{\tt -H} option. - -\htool{HERest} can also estimate semi-tied transformations by -specifying the {\tt s} update option with the {\tt -u} flag. This uses the same baseclass -specification as the linear transformation adaptation code to allow -multiple transformations to be estimated. The specification of the -baseclasses is identical to that used for linear adaptation. Updating -semi-tied transforms always updates the means and diagonal covariance -matrices as well. Full covariance matrices are not supported. When -using this form of estimation, full covariance statistics are -accumulated. This makes the memory requirements large compared to -estimating diagonal covariance matrices. - -\mysubsect{Use}{HERest-Use} - -\htool{HERest} is invoked via the command line -\begin{verbatim} - HERest [options] hmmList trainFile ... -\end{verbatim} -This causes the set of HMMs given in {\tt hmmList} to be loaded. -The given list of -training files is then used to perform one re-estimation cycle. As always, -the list of training files can be stored in a script file if required. On -completion, \htool{HERest} outputs new updated versions of each HMM definition. If -the number of training examples falls below a specified threshold -for some particular HMM, then -the new parameters for that HMM are ignored and the original parameters are used -instead. - -The detailed operation of \htool{HERest} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-a} Use an input transform to obtain alignments for updating - models or transforms (default off). - - \ttitem{-c f} Set the threshold for tied-mixture observation - pruning to {\tt f}. - For tied-mixture \texttt{TIEDHS} systems, only those - mixture component probabilities which fall within {\tt f} of - the maximum mixture component probability are used in calculating - the state output probabilities (default 10.0). - - \ttitem{-d dir} - Normally \htool{HERest} looks for HMM definitions - (not already loaded via MMF files) - in the current directory. This option tells \htool{HERest} to look in - the directory {\tt dir} to find them. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the output transforms. If \texttt{PAXFORMMASK} - or \texttt{INXFORMMASK} are not specified then the input - transform mask is assumed for both output and parent transforms. - - \ttitem{-l N} Set the maximum number of files to use for each - speaker, determined by the output transform speaker mask, - to estimate the transform with.(default $\infty$). - - \ttitem{-m N} Set the minimum number of training examples - required for any model to {\tt N}. If the actual number - falls below this value, the HMM is not updated and the original - parameters are used for the new version (default value 3). - - \ttitem{-o ext} This causes the file name extensions of the - original models (if any) to be replaced by {\tt ext}. - - \ttitem{-p N} This switch is used to set parallel mode operation. - If {\tt p} is set to a positive integer {\tt N}, then \htool{HERest} will - process the training files and then dump all the accumulators - into a file called {\tt HERN.acc}. If {\tt p} is set to 0, then - it treats all file names input on the command line as the names - of {\tt .acc} dump files. It reads them all in, adds together - all the partial accumulations and then re-estimates all the - HMM parameters in the normal way. - - \ttitem{-r} This enables single-pass retraining. The list of training - files is processed pair-by-pair. For each pair, the first file - should match the parameterisation of the original model set. The - second file should match the parameterisation of the required new - set. All speech input processing is controlled by configuration - variables in the normal way except that the variables describing - the old parameterisation are qualified by the name \texttt{HPARM1} - and the variables describing the new parameterisation are - qualified by the name \texttt{HPARM2}. The stream widths for the - old and the new must be identical. - - \ttitem{-s file} This causes statistics on occupation of each - state to be output to the named file. This file - is needed for the {\tt RO} command of HHEd but it is also - generally useful for assessing the amount of training material - available for each HMM state. - - \ttitem{-t f [i l]} Set the pruning threshold to {\tt f}. During the - backward probability calculation, at - each time $t$ - all (log) $\beta$ values falling more than {\tt f} below the - maximum $\beta$ value at that time are ignored. During the - subsequent forward pass, (log) $\alpha$ values are only - calculated if there are corresponding valid $\beta$ values. - Furthermore, if the ratio of the $ \alpha \beta $ product divided - by the total probability (as computed on the backward pass) - falls below a fixed threshold then those values of $\alpha$ - and $\beta$ are ignored. Setting {\tt f} to zero disables - pruning (default value 0.0). Tight pruning thresholds can - result in \htool{HERest} failing to process an utterance. - if the {\tt i} and {\tt l} options are given, then a pruning - error results in the threshold being increased by {\tt i} and - utterance processing restarts. If errors continue, this procedure will - be repeated until the limit {\tt l} is reached. - - \ttitem{-u flags} By default, \htool{HERest} updates all of the HMM parameters, - that is, means, variances, mixture weights and - transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance) , - {\tt t} (transition), {\tt a} (linear transform), {\tt p} (use - MAP adaptation), {\tt s} (semi-tied transform), and {\tt w} (mixture weight). The - presence of a letter enables - the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f} (default value - 0.0). - - \ttitem{-w f} Any mixture weight which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - - \ttitem{-x ext} By default, \htool{HERest} expects a HMM definition for - the label X to be stored in a file called {\tt X}. This - option causes \htool{HERest} to look for the HMM definition in the - file {\tt X.ext}. - - \ttitem{-z file} Save all output transforms to file. Default - is TMF. - -\stdoptB -\stdoptE -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptJ -\stdoptK -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HERest} - -\mysubsect{Tracing}{HERest-Tracing} - -\htool{HERest} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show the logical/physical HMM map. - \ttitem{00004} list the updated model parameters. - of tied mixture components. -\end{optlist} - - -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{herest@\htool{HERest}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HHEd.aux b/HTKBook/HTKRef/HHEd.aux deleted file mode 100644 index 588460c..0000000 --- a/HTKBook/HTKRef/HHEd.aux +++ /dev/null @@ -1,40 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.8}HHEd}{271}{section.17.8}} -\newlabel{s:HHEd}{{17.8}{271}{HHEd\relax }{section.17.8}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.8.1}Function}{271}{subsection.17.8.1}} -\@writefile{toc}{\contentsline {subsubsection}{\texttt {AT i j prob itemList(t)}}{272}{section*.12}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.8.2}Use}{279}{subsection.17.8.2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.8.3}Tracing}{279}{subsection.17.8.3}} -\@setckpt{HTKRef/HHEd}{ -\setcounter{page}{281} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{5} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{8} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{83} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HHEd.tex b/HTKBook/HTKRef/HHEd.tex deleted file mode 100644 index 64d1377..0000000 --- a/HTKBook/HTKRef/HHEd.tex +++ /dev/null @@ -1,808 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell 20/05/97 -% -\newpage -\mysect{HHEd}{HHEd} - -\subsection{Function} - -\index{hhed@\htool{HHEd}|(} -\htool{HHEd} is a script driven editor for manipulating sets of HMM definitions. -Its basic operation is to load in a set of HMMs, apply a sequence of edit -operations and then output the transformed set. \htool{HHEd} is mainly used for -applying tyings across selected HMM parameters. It also has facilities for -cloning HMMs, clustering states and editing HMM structures. - -Many \htool{HHEd} commands operate on sets of similar items selected from the -set of currently loaded HMMs. For example, it is possible to define a set of -all final states of all vowel models, or all mean vectors of all mixture -components within the model X, etc. Sets such as these are defined by item -lists using the syntax rules given below. In all commands, all of the items in -the set defined by an item list must be of the same type where the possible -types are -\begin{tabbing} -+++++++ \= ++ \= ++++++++++++++++ \= ++ \= \kill -\> s \> -- state \> t \> -- transition matrix \\ -\> p \> -- pdf \> w \> -- stream weights \\ -\> m \> -- mixture component \> d \> -- duration parameters \\ -\> u \> -- mean vector \> x \> -- transform matrix \\ -\> v \> -- variance vector \> i \> -- inverse covariance matrix \\ -\> h \> -- HMM definition -\end{tabbing} -\noindent -Most of the above correspond directly to the tie points shown in -Fig~\href{f:hierarch}. There is just one exception. The type ``p'' -corresponds to a pdf (ie a sum of Gaussian mixtures). Pdf's cannot -be tied, however, they can be named in a Tie (\texttt{TI}) command -(see below) in which case, the effect is to join all of the contained -mixture components into one pool of mixtures and then all of the -mixtures in the pool are shared across all pdf's. This allows -conventional {\it tied-mixture} or {\it semi-continuous} HMM systems -to be constructed. - -The syntax rules for item lists are as follows. An item list -consists of a comma separated list of item sets. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> itemList\> = \> ``\{'' itemSet \{ ``,'' itemSet \} ``\}'' -\end{tabbing}} -\noindent -Each {\sf itemSet} consists of the name of one -or more HMMs (or a pattern -representing a set of HMMs) followed by a specification -which represents a set of paths down the parameter hierarchy -each terminating at one of the required parameter items. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> itemSet \> = \> hmmName . [``transP'' $|$ ``state'' state ]\\ -\> hmmName \> = \> ident $|$ identList \\ -\> identList\> = \> ``('' ident \{ ``,'' ident \} ``)'' \\ -\> ident \> = \> $<$ char $|$ metachar $>$ \\ -\> metachar \> = \> ``?'' $|$ ``$\star$'' -\end{tabbing}} -\noindent -A {\sf hmmName} consists of a single {\sf ident} or -a comma separated list of {\sf ident}'s. The following examples -are all valid {\sf hmmName}'s: -\begin{verbatim} - aa three model001 (aa,iy,ah,uh) (one,two,three) -\end{verbatim} -In addition, an {\sf ident} can contain the metacharacter -``?'' which matches any single character and the metacharacter -``$\star$'' which matches a string of zero or more characters. -For example, the item list -\begin{verbatim} - {*-aa+*.transP} -\end{verbatim} -would represent the set of transition matrices of all loaded -triphone variations of \texttt{aa}. - -Items within states require the state indices to be specified -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> state \> = \> index [``.'' stateComp ] \\ -\> index \> = \> ``['' intRange \{ ``,'' intRange \} ``]'' \\ -\> intRange \> = \> integer [ ``-'' integer ] -\end{tabbing}} -For example, the item list -\begin{verbatim} - {*.state[1,3-5,9]} -\end{verbatim} -represents the set of all states 1, 3 to 5 inclusive and 9 of all -currently loaded HMMs. Items within states include durational -parameters, stream weights, pdf's and all items within mixtures -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> stateComp \> = \> ``dur'' $|$ ``weights'' $|$ [ `` stream'' index ] - ``.'' ``mix'' [ mix ] -\end{tabbing}} -For example, -\begin{verbatim} - {(aa,ah,ax).state[2].dur} -\end{verbatim} -denotes the set of durational parameter vectors from state 2 of the -HMMs \texttt{aa}, \texttt{ah} and \texttt{ax}. Similarly, -\begin{verbatim} - {*.state[2-4].weights} -\end{verbatim} -denotes the set of stream weights for states 2 to 4 of all currently -loaded HMMs. The specification of pdf's may optionally include a -list of the relevant streams, if omitted, stream 1 is assumed. -For example, -\begin{verbatim} - {three.state[3].mix} -\end{verbatim} -and -\begin{verbatim} - {three.state[3].stream[1].mix} -\end{verbatim} -both denote a list of the single pdf belonging to stream 1 of state 3 -of the HMM \texttt{three}. - -Within a pdf, the possible item types are mixture components, -mean vectors, and the various possible forms of covariance -parameters -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> mix \> = \> index [ ``.'' ( ``mean'' $|$ ``cov'' ) ] -\end{tabbing}} -For example, -\begin{verbatim} - {*.state[2].mix[1-3]} -\end{verbatim} -denotes the set of mixture components 1 to 3 from state 2 of all -currently loaded HMMs and -\begin{verbatim} - {(one,two).state[4].stream[3].mix[1].mean} -\end{verbatim} -denotes the set of mean vectors from mixture component 1, stream 3, -state 4 of the HMMs \texttt{one} and \texttt{two}. When {\sf cov} -is specified, the type of the covariance item referred to is -determined from the \texttt{CovKind} of the loaded models. Thus, -for diagonal covariance models, the item list -\begin{verbatim} - {*.state[2-4].mix[1].cov} -\end{verbatim} -would denote the set of variance vectors for mixture 1, states 2 to 4 -of all loaded HMMs. - -Note finally, that it is not an error to specify non-existent models, -states, mixtures, etc. All item list specifications are regarded -as patterns which are matched against the currently loaded set of -models. All and only those items which match are included in -the set. However, both a null result and a set of items of mixed -type do result in errors. - -All \htool{HHEd} commands consist of a 2 character command name followed -by zero or more arguments. In the following descriptions, item -lists are shown as \texttt{itemList(c)} where the character c denotes the -type of item expected by that command. If this type indicator is -missing then the command works for all item types. - -The \htool{HHEd} commands are as follows - -\subsubsection{\texttt{AT i j prob itemList(t)}} - -Add a transition from state \texttt{i} to state \texttt{j} with probability -\texttt{prob} for all transition matrices in \texttt{itemList}. The remaining -transitions out of state \texttt{i} are rescaled so that $\sum_k a_{ik} = 1 $. -For example, -\begin{verbatim} - AT 1 3 0.1 {*.transP} -\end{verbatim} -would add a skip transition to all loaded models from state 1 to state 3 -with probability 0.1. - -\subsubsection*{\tt AU hmmList} - -Use a set of decision trees to create a new set of models specified -by the \texttt{hmmList}. The decision trees may be made as a result -of either the \texttt{TB} or \texttt{LT} command. - -Each model in \texttt{hmmList} is constructed in the following manner. -If a model with the same logical name already exists in the -current HMM set this is used unchanged, otherwise the model is -synthesised from the decision trees. If the trees cluster at the -model level the synthesis results in a logical model sharing the -physical model from the tree that matches the new context. If -the clustering was performed at the state level a prototype model -(an example of the same phone model occurring in a different context) -is found and a new HMM is constructed that shares the transition -matrix with the prototype model but consists of tied states selected -using the decision tree. - -\subsubsection*{\tt CL hmmList} - -Clone a HMM list. The file \texttt{hmmList} should hold a list of HMMs -all of whose logical names are either the same as, or are context-dependent -versions of the currently loaded set of HMMs. For each name in \texttt{hmmList}, -the corresponding HMM in the loaded set is cloned. On completion, the -currently loaded set is discarded and replaced by the new set. For example, -if the file \texttt{mylist} contained -\begin{verbatim} - A-A+A - A-A+B - B-A+A - B-B+B - B-B+A -\end{verbatim} -and the currently loaded HMMs were just \texttt{A} and \texttt{B}, then -\texttt{A} would be cloned 3 times to give the models \texttt{A-A+A}, -\texttt{A-A+B} and \texttt{B-A+A}, and \texttt{B} would be cloned 2 times -to give \texttt{B-B+B} and \texttt{B-B+A}. On completion, the original -definitions for \texttt{A} and \texttt{B} would be deleted (they could -be retained by including them in the new \texttt{hmmList}). - -\subsubsection*{\tt CO newList} - -Compact a set of HMMs. The effect of this command is to -scan the currently loaded set of HMMs and identify all identical -definitions. The physical name of the first model in each identical -set is then assigned to all models in that set and all -model definitions are replaced by a pointer to the first -model definition. On completion, -a new list of HMMs which includes the new model tyings is -written out to file \texttt{newList}. For example, suppose that -models \texttt{A}, \texttt{B}, \texttt{C} and \texttt{D} were currently -loaded and \texttt{A} and \texttt{B} were identical. Then the command -\begin{verbatim} - CO tlist -\end{verbatim} -would tie HMMs \texttt{A} and \texttt{B}, -set the physical name of \texttt{B} to \texttt{A} and output the -new HMM list -\begin{verbatim} - A - B A - C - D -\end{verbatim} -to the file \texttt{tlist}. This command is used mainly after -performing a sequence of parameter tying commands. - -\subsubsection*{\tt DP s n id ...} - -Duplicates a set of HMMs. This command is used to replicate a -set of HMMs whilst allowing control over which structures will -be shared between them. -The first parameter controls duplication of tied structures. Any -macros whose type appears in string \texttt{s} are duplicated -with new names and only used in the duplicate model set. The remaining -shared structures are common through all the model sets (original and -duplicates). -The second parameter defines the number of times the current -HMM set should be duplicated with the remaining \texttt{n} parameters -providing suffices to make the original macro identifiers unique -in each duplicated HMM set. - -For instance the following script could be used to duplicate -a set of tied state models to produce gender dependent ones -with tied variances. -\begin{verbatim} - MM "v_" { (*).state[2-4].mix[1-2].cov } - DP "v" 2 ":m" ":f" -\end{verbatim} -The \texttt{MM} command converts all variances into macros -(with each macro referring to only one variance). -The \texttt{DP} command then duplicates the current HMM set twice. -Each of the duplicate sets will share the tied variances with -the original set but will have new mixture means, weights and -state macros. The new macro names will be constructed by -appending the id \texttt{":m"} or \texttt{":f"} to the original -macro name whilst the model names have the id appended after -the base phone name (so \texttt{ax-b+d} becomes \texttt{ax-b:m+d} or -\texttt{ax-b:f+d}. - -\subsubsection*{\tt FA varscale} - -Computes an average within state variance vector for a given HMM set, -using statistics generated by \htool{HERest} (see {\tt LS} for loading -stats). The average variance vector is scaled and stored in the HMM -set, any variance floor vectors present are replaced. Subsequently, -the variance floor is applied to all variances in the model set. This -can be inhibited by setting \texttt{APPLYVFLOOR} to \texttt{FALSE}. - -\subsubsection*{\tt FC} - -Converts all covariances in the modelset to full. This command -takes an HMM set with diagonal covariances and creates full -covariances which are initialised with the variances of the diagonal -system. The tying structure of the original system is kept intact. - -\subsubsection*{\tt FV file} - -Loads one variance floor macro per stream from file. The file -containing the variance floor macros can, for example, be generated by -\htool{HCompV}. Any variance floor vectors present in the model set -are replaced. Secondly the variance floor is applied to all variances. -This can be inhibited but setting \texttt{APPLYVFLOOR} to -\texttt{FALSE}. - -\subsubsection*{\tt HK hsetkind} - -Converts model set from one kind to another. Although hsetkind can -take the value PLAINHS, SHAREDHS, TIEDHS or DISCRETEHS, the HK command is -most likely to be used when building tied-mixture systems (hsetkind=TIEDHS). - -\subsubsection*{\tt JO size minw} - -Set the size and minimum mixture weight for subsequent -Tie (\texttt{TI}) commands applied to pdf's. -The value of \texttt{size} sets the total number of -mixtures in the tied mixture set ({\it codebook}) and \texttt{minw} -sets a floor on the mixture weights as a multiple of \texttt{MINMIX}. -This command only applies to tying item lists of type ``p'' -(see the Tie \texttt{ TI} command below). - -\subsubsection*{\tt LS statsfile} - -This command is used to read in the \htool{HERest} statistics file -(see the \htool{HERest} \texttt{-s} option) stored in \texttt{statsfile}. These -statistics are needed for certain clustering operations. -The statistics file contains the occupation count for every HMM state. - -\subsubsection*{\tt LT treesfile} - -This command reads in the decision trees stored in \texttt{treesfile}. -The trees file will consist of a set of questions defining contexts -that may appear in the subsequent trees. The trees are used to -identify either the state or the model that should be used in -a particular context. The file would normally be produced by -\texttt{ST} after tree based clustering has been performed. - -\subsubsection*{\tt MD nmix itemlist} - -Decrease the number of mixture components in each pdf in the -\texttt{itemList} to \texttt{m}. This employs a stepwise greedy -merging strategy. For a given set of mixture components the pair with -minimal merging cost is found and merged. This is repeated until only -\texttt{m} mixture components are left. Any defunct mixture components -(i.e. components with a weight below \texttt{MINMIX}) are deleted -prior to this process. - -Note that after application of this command a pdf in {\tt itemlist} -may consist of fewer, but not more than \texttt{m} mixture components. - -As an example, the command -\begin{verbatim} - MD 6 {*-aa+*.state[3].mix} -\end{verbatim} -would decrease the number of mixture components in state 3 of all -triphones of \texttt{aa} to 6. - -\subsubsection*{\tt MM macro itemList} - -This command makes each item (I=1..N) in \texttt{itemList} into a -macro with name \texttt{nameI} and a usage of one. This command -can prevent unnecessary duplication of structures when HMMs -are cloned or duplicated. - -\subsubsection*{\tt MT triList newTriList} - -Make a set of triphones by merging the currently loaded set of -biphones. This is a very specialised command. All currently -loaded HMMs must have 3 emitting states and be either left -or right context-dependent biphones. The list of HMMs stored -in \texttt{triList} should contain one or more triphones. For -each triphone in \texttt{triList} of the form \texttt{X-Y+Z}, there -must be currently loaded biphones \texttt{X-Y} and \texttt{Y+Z}. -A new triphone \texttt{X-Y+Z} is then synthesised by first cloning -\texttt{Y+Z} and then replacing the state information for the -initial emitting state by the state information for the initial -emitting state of \texttt{X-Y}. Note that the underlying physical -names of the biphones used to create the triphones are recorded -so that where possible, triphones generated from tied biphones -are also tied. On completion, the new list of triphones including -aliases is written to the file \texttt{newTriList}. - -\subsubsection*{\tt MU m itemList(p)} - -Increase the number of non-defunct mixture components -in each pdf in the \texttt{itemList} to \texttt{m} (when \texttt{m} -is just a number) or by \texttt{m} (when \texttt{m} is a number -preceeded by a \texttt{+} sign. A defunct mixture -is one for which the weight has fallen below \texttt{MINMIX}. This command -works in two steps. Firstly, the weight of each mixture -in each pdf is checked. If any defunct mixtures are discovered, -then each is successively replaced by a non-defunct -mixture component until either the required total number of non-defunct -mixtures is reached or there are no defunct mixtures left. -This replacement works by first deleting the defunct mixture -and then finding the mixture with the largest weight and splitting -it. -The split operation is as follows. The weight of the mixture -component is first halved and then the mixture is cloned. The -two identical mean vectors are then perturbed by adding $0.2$ -standard deviations to one and subtracting the same amount -from the other. - -In the second step, the mixture component with the largest -weight is split as above. This is repeated until the required -number of mixture components are obtained. -Whenever, a mixture is split, a count is incremented for that mixture -so that splitting occurs evenly across the mixtures. Furthermore, -a mixture whose {\it gconst} value falls more than four standard -deviations below the mean is not split. - -As an example, the command -\begin{verbatim} - MU 6 {*-aa+*.state[3].mix} -\end{verbatim} -would increase the number of mixture components in state 3 -of all triphones of \texttt{aa} to 6. - -\subsubsection*{\tt NC N macro itemList(s)} - -N-cluster the states listed in the -\texttt{itemList} and tie each cluster \texttt{i} as macro \texttt{macroi} -where \texttt{i} is 1,2,3,\ldots,\texttt{N}. -The set of states in the \texttt{itemList} are divided into \texttt{N} -clusters using the following furthest neighbour hierarchical -cluster algorithm: -\begin{verbatim} - create 1 cluster for each state; - n = number of clusters; - while (n>N) { - find i and j for which g(i,j) is minimum; - merge clusters i and j; - } -\end{verbatim} -Here \texttt{g(i,j)} is the inter-group distance between -clusters \texttt{i} and \texttt{j} defined as the maximum -distance between any state in cluster \texttt{i} and any state -in cluster \texttt{j}. The calculation of the inter-state -distance depends on the type of HMMs involved. Single -mixture Gaussians use -\begin{equation} - d(i,j) = \frac{1}{S} \sum_{s=1}^S - \left[ - \frac{1}{V_s} \sum_{k=1}^{V_s} - \frac{({\mu}_{isk} - {\mu}_{jsk})^2}{ - {\sigma}_{isk}{\sigma}_{jsk}} - \right]^{\frac{1}{2}} -\end{equation} -where $V_s$ is the dimensionality of stream $s$. Fully tied -mixture systems (ie \texttt{TIEDHS}) use -\begin{equation} - d(i,j) = \frac{1}{S} \sum_{s=1}^S - \left[ - \frac{1}{M_s} \sum_{m=1}^{M_s} - (c_{ism} - c_{jsm})^2 - \right]^{\frac{1}{2}} -\end{equation} -and all others use -\begin{equation} - d(i,j) = - \frac{1}{S} \sum_{s=1}^S - \frac{1}{M_s} \sum_{m=1}^{M_s} - \log[b_{js}(\bm{\mu}_{ism})] + \log[b_{is}(\bm{\mu}_{jsm})] -\end{equation} -where $b_{js}(\bm{x})$ is as defined in equation~\ref{e:cdpdf} for -the continuous case and equation~\ref{e:ddpdf} for the discrete case. The actual -tying of the states in each cluster is performed exactly as for -the Tie (\texttt{TI}) command below. The macro for the \texttt{i}'th -tied cluster is called \texttt{macroi}. - -\subsubsection*{\tt PR } - -This command takes a model set that has been estimated with an HLDA transform, -but stored as a semi-tied transform rather than an input transform and -transforms it into a model-set with the projected number of dimensions and -an input transform. - -\subsubsection*{\tt PS nstates power [numiters] } - -This command sets the number of Gaussians in each HMM state -proportional to a power of the number of frames available for training it. The -number of frames is obtained from a ``stats'' file output by \htool{HERest}, -which is loaded by the \texttt{LS} command. Typical usage might be: -\begin{verbatim} - LS - PS 16 0.2 -\end{verbatim} -in order to achieve an average of 16 Gaussians per state with a power -of 0.2. - -It is always advisable when increasing the number of Gaussians in states to -increase the number by small increments and re-estimate HMMs using -\htool{HERest} once or more in between. It may be difficult to avoid a -large increase in number of Gaussians in particular states when moving from -a HMM set with a constant number of Gaussians per state to one controlled -by a power law. Therefore the PS command has a facility for increasing -the number of Gaussians gradually where the target is larger than the -initial number of Gaussians, so that HERest can be run in between. In this -example, one could use the \htool{HHEd} command \texttt{PS}~16~0.2~3, run -\htool{HERest}, use the command \texttt{PS}~16~0.2~2, run \htool{HERest}, -and then run \texttt{PS}~16~0.2~1 before the final re-estimation with -\htool{HERest}. The last argument is the number of iterations remaining. -A fairly similar effect could be obtained by increasing the power linearly -from zero. - - -\subsubsection*{\tt QS name itemList(h)} - -Define a question \texttt{name} which is true for all the models in -\texttt{itemList}. These questions can subsequently be used as part -of the decision tree based clustering procedure (see \texttt{TB} -command below). - -\subsubsection*{\tt RC N identifier [itemlist]} - -This command is used to grow a regression class tree for adaptation -purposes. A regression class tree is grown with -\texttt{N} terminal or leaf nodes, using the centroid splitting algorithm -with a Euclidean distance measure to cluster the model set's mixture -components. Hence each leaf node specifies a particular mixture -component cluster. The regression class tree is saved with the macro -identifier \texttt{identifier\_N}. Each Gaussian component is also -labelled with a regression class number (corresponding to the leaf -node number that the Gaussian component resides in). In order to grow -the regression class tree it is necessary to load in a \texttt{statsfile} -using the \texttt{LS} command. It is also possible to specify an -\texttt{itemlist} containing the ``non-speech'' sound components -such as the silence mixture components. If this is included then the -first split made will result in one leaf containing the specified -non-speech sound components, while the other leaf will contain the -rest of the model set components. Tree construction then continues as usual. - -\subsubsection*{\tt RN hmmIdName} - -Rename or add the hmm set identifier in the global options macro to -{\tt hmmIdName}. - -\subsubsection*{\tt RM hmmFile} - -Load the hmm from \texttt{hmmFile} and subtract the mean from state 2, -mixture 1 of the model from every loaded model. Every component -of the mean is subtracted including deltas and accelerations. - -\subsubsection*{\tt RO f [statsfile]} - -This command is used to remove outlier states during clustering -with subsequent \texttt{NC} or \texttt{TC} commands. -If \texttt{statsfile} is present it first reads in the \htool{HERest} statistics -file (see \texttt{LS}) otherwise it expects a separate \texttt{LS} command -to have already been used to read in the statistics. -Any subsequent \texttt{NC}, \texttt{TC} or \texttt{TB} commands are -extended to ensure that the occupancy clusters produced exceeds the -threshold \texttt{f}. -For \texttt{TB} this is used to choose which questions are allowed to -be used to split each node. Whereas for \texttt{NC} and \texttt{TC} -a final merging pass is used and for as long the smallest cluster count -falls below the threshold \texttt{f}, then that cluster is merged with -its nearest neighbour. - -\subsubsection*{\tt RT i j itemList(t)} - -Remove the transition from state \texttt{i} to \texttt{j} in all transition -matrices given in the \texttt{itemList}. After removal, the remaining -non-zero transition probabilities for state \texttt{i} -are rescaled so that $\sum_k a_{ik} = 1 $. - -\subsubsection*{\tt SH} - -Show the current HMM set. This command can be inserted into -edit scripts for debugging. It prints a summary of each -loaded HMM identifying any tied parameters. - -\subsubsection*{\tt SK skind} - -Change the sample kind of all loaded HMMs to \texttt{skind}. This -command is typically used in conjunction with the \texttt{SW} command. -For example, to add delta coefficients to a set of models, the \texttt{SW} -command would be used to double the stream widths and then this -command would be used to add the \texttt{\_D} qualifier. - -\subsubsection*{\tt SS N} - -Split into N independent data streams. -This command causes the currently loaded set of HMMs to be converted -from 1 data stream to N independent data streams. The widths of -each stream are determined from the single stream vector size and -the sample kind as described in section~\ref{s:streams}. -Execution of this command will cause -any tyings associated with the split stream to -be undone. - -\subsubsection*{\tt ST filename} - -Save the currently defined questions and trees to file \texttt{filename}. -This allows subsequent construction of models using for new contexts -using the \texttt{LT} and \texttt{AU} commands. - -\subsubsection*{\tt SU N w1 w2 w3 .. wN} - -Split into N independent data streams with stream widths as specified. -This command is similar to the \texttt{SS} command except that the -width of each stream is defined explicity by the user rather -than using the built-in stream splitting rules. -Execution of this command will cause -any tyings associated with the split stream to -be undone. - -\subsubsection*{\tt SW s n} - -Change the width of stream \texttt{s} of all currently loaded HMMs to -\texttt{n}. Changing the width of stream involves changing the dimensions -of all mean and variance vectors or covariance matrices. If \texttt{n} -is greater than the current width of stream \texttt{s}, then mean vectors -are extended with zeroes and variance vectors are extended with 1's. -Covariance matrices are extended with zeroes everywhere except for the -diagonal elements which are set to 1. This command preserves any -tyings which may be in force. - -\subsubsection*{\tt TB f macro itemList(s or h)} - -Decision tree cluster all states in the given \texttt{itemList} and -tie them as \texttt{macroi} where \texttt{i} is 1,2,3,\ldots. -This command performs a top down clustering of the states or -models appearing in \texttt{itemlist}. This clustering starts by -placing all items in a single root node and then choosing a -question from the current set to split the node in such a way -as to maximise the likelihood of a single diagonal covariance -Gaussian at each of the child nodes generating the training data. -This splitting continues until the increase in likelihood falls -below threshold \texttt{f} or no questions are available which do -not pass the outlier threshold test. -This type of clustering is only implimented for single mixture, -diagonal covariance untied models. - -\subsubsection*{\tt TC f macro itemList(s)} - -Cluster all states in the given -\texttt{itemList} and tie them as \texttt{macroi} where -\texttt{i} is 1,2,3,\ldots. This command is identical to the -\texttt{NC} command described above except that the number of clusters -is varied such that the maximum within cluster distance is less than -the value given by \texttt{f}. - -\subsubsection*{\tt TI macro itemList} - -Tie the items in \texttt{itemList} and assign them to the specified -\texttt{macro} name. This command applies to any item type but -all of the items in \texttt{itemList} must be of the same type. -The detailed method of tying depends on the item type as follows: -\begin{description} - \item[state(s)] the state with the largest total value of \texttt{gConst} - in stream 1 (indicating broad variances) and the minimum number of - defunct mixture weights (see \texttt{MU} command) is selected from the - item list and all states are tied to this typical state. - \item[transitions(t)] all transition matrices in the item list are - tied to the last in the list. - \item[mixture(m)] all mixture components in the item list are tied - to the last in the list. - \item[mean(u)] the average vector of all the mean vectors - in the item list is calculated and all the means are tied to this - average vector. - \item[variance(v)] a vector is constructed for which each element - is the maximum of the corresponding elements from the set of - variance vectors to be tied. All of the variances are then tied - to this maximum vector. - \item[covariance(i)] all covariance matrices in the item list are tied - to the last in the list. - \item[xform(x)] all transform matrices in the item list are tied - to the last in the list. - \item[duration(d)] all duration vectors in the item list are tied - to the last in the list. - \item[stream weights(w)] all stream weight vectors in the item - list are tied to the last in the list. - \item[pdf(p)] as noted earlier, pdf's are tied to create tied - mixture sets rather than to create a shared pdf. The procedure - for tying pdf's is as follows - \begin{enumerate} - \item All mixtures from all pdf's in the item list are collected - together in order of mixture weight. - \item If the number of mixtures exceeds the join size $J$ [see the - Join (\texttt{JO}) command above], then all but the first $J$ mixtures - are discarded. - \item If the number of mixtures is less than $J$, then the - mixture with the largest weight is repeatedly split until - there are exactly $J$ mixture components. The split procedure - used is the same as for the MixUp (\texttt{MU}) command - described above. - \item All pdf's in the item list are made to share all $J$ - mixture components. The weight for each mixture is set - proportional to the log likelihood of the mean vector of - that mixture with respect to the original pdf. - \item Finally, all mixture weights below the floor set by the - Join command are raised to the floor value and all of the - mixture weights are renormalised. - \end{enumerate} -\end{description} - -\subsubsection*{\tt TR n} - -Change the level of detail for tracing and consists of a number -of separate flags which can be added together. -Values 0001, 0002, 0004, 0008 have the same meaning as the command -line trace level but apply only to a single block of commands -(a block consisting of a set of commands of the name). -A value of 0010 can be used to show current memory usage. - -\subsubsection*{\tt UT itemList} - -Untie all items in \texttt{itemList}. For each item in the item list, -if the usage counter for that item is greater than 1 then it -is cloned, the original shared item is replaced by the cloned copy -and the usage count of the shared item is reduced by 1. -If the usage count is already 1, the associated macro is simply -deleted and the usage count set to 0 to indicate an unshared item. -Note that it is not possible to untie a pdf since these are not -actually shared [see the Tie (\texttt{TI}) command above]. - -\subsubsection*{\tt XF filename} - -Sets the input transform of the model-set to be filename. - -\subsection{Use} - -\htool{HHEd} is invoked by typing the command line -\begin{verbatim} - HHEd [options] edCmdFile hmmList -\end{verbatim} -where \texttt{edCmdFile} is a text file containing a sequence of edit commands -as described above and \texttt{hmmList} defines the set of HMMs to be edited -(see \htool{HModel} for the format of HMM list). -If the models are to be kept in separate files rather than being stored in an -MMF, the configuration variable \texttt{KEEPDISTINCT} should be set to true. -The available options for \htool{HHEd} are - -\begin{optlist} - - \ttitem{-d dir} This option tells \htool{HHEd} to look in - the directory \texttt{dir} to find the model definitions. - - \ttitem{-o ext} This causes the file name extensions of the - original models (if any) to be replaced by \texttt{ext}. - - \ttitem{-w mmf} Save all the macros and model definitions in a - single master macro file \texttt{mmf}. - - \ttitem{-x s} Set the extension for the edited output files to be \texttt{s} - (default is to to use the original names unchanged). - - \ttitem{-z} Setting this option causes all aliases in the loaded - HMM set to be deleted (zapped) immediately before - loading the definitions. The result is that all logical names - are ignored and the actual HMM list - consists of just the physically distinct HMMs. -\stdoptB -\stdoptH -\stdoptM -\stdoptQ - -\end{optlist} -\stdopts{HHEd} - -\subsection{Tracing} - -\htool{HHEd} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} intermediate progress reporting. - \ttitem{00004} detailed progress reporting. - \ttitem{00010} show item lists used for each command. - \ttitem{00020} show memory usage. - \ttitem{00100} show changes to macro definitions. - \ttitem{00200} show changes to stream widths. - \ttitem{00400} show clusters. - \ttitem{00800} show questions. - \ttitem{01000} show tree filtering. - \ttitem{02000} show tree splitting. - \ttitem{04000} show tree merging. - \ttitem{10000} show good question scores. - \ttitem{20000} show all question scores. - \ttitem{40000} show all merge scores. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hhed@\htool{HHEd}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HInit.aux b/HTKBook/HTKRef/HInit.aux deleted file mode 100644 index 2c9ea57..0000000 --- a/HTKBook/HTKRef/HInit.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.9}HInit}{281}{section.17.9}} -\newlabel{s:HInit}{{17.9}{281}{HInit\relax }{section.17.9}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.9.1}Function}{281}{subsection.17.9.1}} -\newlabel{s:HInit-Function}{{17.9.1}{281}{Function\relax }{subsection.17.9.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.9.2}Use}{281}{subsection.17.9.2}} -\newlabel{s:HInit-Use}{{17.9.2}{281}{Use\relax }{subsection.17.9.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.9.3}Tracing}{282}{subsection.17.9.3}} -\newlabel{s:HInit-Tracing}{{17.9.3}{282}{Tracing\relax }{subsection.17.9.3}{}} -\@setckpt{HTKRef/HInit}{ -\setcounter{page}{283} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{7} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{9} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{85} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HInit.tex b/HTKBook/HTKRef/HInit.tex deleted file mode 100644 index 203cd7c..0000000 --- a/HTKBook/HTKRef/HInit.tex +++ /dev/null @@ -1,181 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 31/10/95 -% - -\newpage -\mysect{HInit}{HInit} - -\mysubsect{Function}{HInit-Function} - -\index{hinit@\htool{HInit}|(} -\htool{HInit} is used to provide initial estimates for the parameters -of a single HMM using a set of observation sequences. -It works by repeatedly using Viterbi alignment to segment the -training observations and then recomputing the parameters -by pooling the vectors in each segment. For mixture Gaussians, each -vector in each segment is aligned with the component with the highest -likelihood. Each cluster of vectors then determines the parameters -of the associated mixture component. -In the absence of an initial model, the process -is started by performing a uniform -segmentation of each training observation and for mixture Gaussians, -the vectors in each uniform segment are clustered using a modified K-Means -algorithm\footnote{This algorithm is significantly different from -earlier versions of HTK where K-means clustering was used at every -iteration and the Viterbi alignment was limited to states}. - -\htool{HInit} can be used to provide initial estimates of whole word models -in which case the observation sequences are realisations of the -corresponding vocabulary word. -Alternatively, \htool{HInit} can be used to generate initial estimates of -{\em seed} HMMs for phoneme-based speech recognition. -In this latter case, the observation sequences will consist -of segments of continuously spoken training material. \htool{HInit} will -{\it cut} these out of the training data automatically by simply -giving it a segment label. - -In both of the above applications, \htool{HInit} normally takes -as input a prototype -HMM definition which defines the required HMM topology i.e.\ it has -the form of the required HMM except that means, variances and mixture -weights are ignored\footnote{Prototypes should either -have GConst set (the value does -not matter) to avoid {\tt HTK} trying to compute it or -variances should be set to a positive value such as 1.0 to -ensure that GConst is computable}. The -transition matrix of the prototype specifies both the allowed -transitions and their initial probabilities. Transitions which -are assigned zero probability will remain zero and hence denote -non-allowed transitions. \htool{HInit} estimates transition probabilities -by counting the number of times each state is visited during -the alignment process. - -\htool{HInit} supports multiple mixtures, multiple streams, -parameter tying within a single model, full or diagonal -covariance matrices, tied-mixture models and discrete models. -The output of HInit is typically input to HRest. - -Like all re-estimation tools, \htool{HInit} allows a floor to be set on -each individual variance by defining a variance floor macro for each -data stream (see chapter~\ref{c:Training}). - -\mysubsect{Use}{HInit-Use} - -\htool{HInit} is invoked via the command line -\begin{verbatim} - HInit [options] hmm trainFiles ... -\end{verbatim} -This causes the means and variances of the given {\tt hmm} to be -estimated repeatedly using the data in {\tt trainFiles} -until either a maximum iteration limit is reached -or the estimation converges. -The HMM definition can be contained within one or more macro -files loaded via the standard \texttt{-H} option. Otherwise, the -definition will be read from a file called \texttt{hmm}. -The list of train files can be stored in a script file if required. - -The detailed operation of \htool{HInit} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-e f} This sets the convergence factor to the real value {\tt f}. - The convergence factor is the relative change between successive - values of $P_{max}({O}|\lambda)$ computed as a by-product - of the Viterbi alignment stage (default value 0.0001). - - \ttitem{-i N} This sets the maximum number of estimation cycles - to {\tt N} (default value 20). - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HInit} searches - through all of the training files and cuts out all segments with - the given label. When this option is not used, \htool{HInit} assumes that - each training file is a single token. - - \ttitem{-m N} This sets the minimum number of training examples so - that if fewer than {\tt N} examples are supplied an error is - reported (default value 3). - - \ttitem{-n} This flag suppresses the initial uniform - segmentation performed by \htool{HInit} allowing it to be used - to update the parameters of an existing model. - - \ttitem{-o s} The string {\tt s} is used as the name of the output - HMM in place of the source name. This is provided in \htool{HInit} - since it is often used to initialise a model from a prototype - input definition. The default is to use the source name. - - \ttitem{-u flags} By default, \htool{HInit} updates all - of the HMM parameters, - that is, means, variances, mixture weights - and transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance), - {\tt t} (transition) and {\tt w} (mixture weight). The presence of a - letter enables the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f} The default value - is 0.0. - - \ttitem{-w f} Any mixture weight or discrete observation probability - which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - -\stdoptB -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HInit} - -\mysubsect{Tracing}{HInit-Tracing} - -\htool{HInit} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{000001} basic progress reporting. - \ttitem{000002} file loading information. - \ttitem{000004} segments within each file. - \ttitem{000010} uniform segmentation. - \ttitem{000020} Viterbi alignment. - \ttitem{000040} state alignment. - \ttitem{000100} mixture component alignment. - \ttitem{000200} count updating. - \ttitem{000400} output probabilities. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hinit@\htool{HInit}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HLEd.aux b/HTKBook/HTKRef/HLEd.aux deleted file mode 100644 index 160c720..0000000 --- a/HTKBook/HTKRef/HLEd.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.10}HLEd}{283}{section.17.10}} -\newlabel{s:HLEd}{{17.10}{283}{HLEd\relax }{section.17.10}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.10.1}Function}{283}{subsection.17.10.1}} -\newlabel{s:HLEd-Function}{{17.10.1}{283}{Function\relax }{subsection.17.10.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.10.2}Use}{284}{subsection.17.10.2}} -\newlabel{s:HLEd-Use}{{17.10.2}{284}{Use\relax }{subsection.17.10.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.10.3}Tracing}{285}{subsection.17.10.3}} -\newlabel{s:HLEd-Tracing}{{17.10.3}{285}{Tracing\relax }{subsection.17.10.3}{}} -\@setckpt{HTKRef/HLEd}{ -\setcounter{page}{286} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{8} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{10} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{86} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLEd.tex b/HTKBook/HTKRef/HLEd.tex deleted file mode 100644 index 831bdf8..0000000 --- a/HTKBook/HTKRef/HLEd.tex +++ /dev/null @@ -1,202 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\newpage -\mysect{HLEd}{HLEd} - -\mysubsect{Function}{HLEd-Function} - -\index{hled@\htool{HLEd}|(} -This program is a simple editor for manipulating label files. -Typical examples of its use might be to merge a sequence of -labels into a single composite label or to expand a set of -labels into a context sensitive set. \htool{HLEd} works by -reading in a list of {\em editing} commands from an edit -script file and then makes an edited copy of one or more -label files. For multiple level files, edit commands are applied -to the \textit{current level} which is initially the first (i.e.\ 1). -Other levels may be edited by moving to the required level using the -\texttt{ML} Move Level command. - -Each edit command in the script file must be -on a separate line. The first two-letter mnemonic on each line is the command name and -the remaining letters denote labels\footnote{In earlier versions of -HTK, \htool{HLEd} command names consisted of a single letter. These -are still supported for backwards compatibility and they are included -in the command summary produced using the \texttt{-Q} option. -However, commands -introduced since version 2.0 have two letter names.}. -The commands supported may be divided into -two sets. Those in the first set are used to edit individual -labels and they are as follows - -\begin{varlist} - \fwitem{2cm}{CH X A Y B} Change \texttt{Y} in the context of \texttt{A\_B} - to \texttt{X}. \texttt{A} and/or \texttt{B} may be a \texttt{*} to match - any context, otherwise they must be defined by a \texttt{DC} command - (see below). A - block of consecutive \texttt{CH} commands are effectively executed in - parallel so that the contexts are those that exist before any of - the commands in the block are applied. - \fwitem{2cm}{DC A B C ..} define the context \texttt{A} as the set of labels - \texttt{B}, \texttt{C}, etc. - \fwitem{2cm}{DE A B ..} Delete any occurrences of labels \texttt{A} - or \texttt{B} etc. - \fwitem{2cm}{FI A Y B} Find \texttt{Y} in the context of \texttt{A\_B} - and count the number of occurrences. - \fwitem{2cm}{ME X A B ..} Merge any sequence of labels \texttt{A} - \texttt{B} \texttt{C} etc.\ and call the new segment \texttt{X}. - \fwitem{2cm}{ML N} Move to label level \texttt{N}. - \fwitem{2cm}{RE X A B ..} Replace all occurrences of labels \texttt{A} - or \texttt{B} etc.\ by the label \texttt{X}. -\end{varlist} - -The commands in the second set perform global operations on whole -transcriptions. They are as follows. - -\begin{varlist} - \fwitem{2cm}{DL [N]} Delete all labels in the current level. If the - optional integer arg is given, then level \texttt{N} is deleted. - \fwitem{2cm}{EX} Expand all labels either from words to phones using the - first pronunciation from a dictionary when it is specified on the - command line otherwise expand labels of the form - \texttt{A\_B\_C\_D\_...} into a sequence of separate labels - \texttt{A B C D ....}. This is useful for label formats which - include a complete orthography as a single label or for creating - a set of sub-word labels from a word orthography for a sub-word - based recogniser. When a label is expanded in this way, the - label duration is divided into equal length segments. This can - only be performed on the root level of a multiple level file. - \fwitem{2cm}{FG X} Mark all unlabelled segments of the input - file of duration greater than $T_g$ msecs with the label \texttt{X}. - The default value for $T_g$ is 50000.0 (=5msecs) but this - can be changed using the \texttt{-g} command line option. This - command - is mainly used for explicitly labelling inter-word silences in - data files for which only the actual speech has been transcribed. - \fwitem{2cm}{IS A B} Insert label \texttt{A} at the start of every - transcription and \texttt{B} at the end. This command is usually - used to insert silence labels. - \fwitem{2cm}{IT} Ignore triphone contexts in \texttt{CH} and \texttt{FI} - commands. - \fwitem{2cm}{LC [X]} Convert all phoneme labels to left context - dependent. If \texttt{X} is given then the first phoneme label - \texttt{a} becomes \texttt{X-a} otherwise it is left unchanged. - \fwitem{2cm}{NB X} The label \texttt{X} (typically a short pause) - should be ignored at word boundaries when using the context - commands \texttt{LC}, \texttt{RC} and \texttt{TC}. - \fwitem{2cm}{RC [X]} Convert all phoneme labels to right context - dependent. If \texttt{X} is given then the last phoneme label - \texttt{z} becomes \texttt{z+X} otherwise it is left unchanged. - \fwitem{2cm}{SB X} Define the label \texttt{X} to be a sentence boundary - marker. This label can then be used in context-sensitive change - commands. - \fwitem{2cm}{SO} Sort all labels into time order. - \fwitem{2cm}{SP} Split multiple levels into multiple alternative label lists. - \fwitem{2cm}{TC [X[Y]]} Convert all phoneme labels to Triphones, that is - left and right context - dependent. If \texttt{X} is given then the first phoneme label - \texttt{a} becomes \texttt{X-a+b} otherwise it is left unchanged. - If \texttt{Y} is given then the last phoneme label - \texttt{z} becomes \texttt{y-z+Y} otherwise if \texttt{X} is given then it - becomes \texttt{y-z+X} otherwise it is left unchanged. - \fwitem{2cm}{WB X} Define \texttt{X} to be an inter-word label. - This command affects the operation of the \texttt{LC}, \texttt{RC} - and \texttt{TC} commands. The expansion of context labels is - blocked wherever an inter-word label occurs. -\end{varlist} - -The source and target label file formats can be -defined using the \texttt{-G} and \texttt{-P} command line arguments. They can -also be set using the configuration variables \texttt{SOURCELABEL} -and \texttt{TARGETLABEL}. The default for both cases is the HTK format. - -\mysubsect{Use}{HLEd-Use} - -\htool{HLEd} is invoked by typing the command line -\begin{verbatim} - HLEd [options] edCmdFile labFiles .. -\end{verbatim} -This causes \htool{HLEd} to be applied to each \texttt{labFile} in turn -using the edit commands listed in \texttt{edCmdFile}. The -\texttt{labFiles} may be master label files. -The available options are - -\begin{optlist} - - \ttitem{-b} Suppress label boundary times in output files. - - \ttitem{-d s} Read a dictionary from file {\tt s} and use this - for expanding labels when the {\tt EX} command is used. - - \ttitem{-i mlf} This specifies that the output transcriptions - are written to the master label file \texttt{mlf}. - - \ttitem{-g t} Set the minimum gap detected by the \texttt{FG} to be \texttt{t} - (default 50000.0 = 5msecs). - All gaps of shorter duration than \texttt{t} are ignored and not labelled. - - \ttitem{-l s} Directory to store output label files (default is current directory). - When output is directed to an MLF, this option can be used to - add a path to each output file name. In particular, setting the option - \verb+-l '*'+ will cause a label file named \texttt{xxx} to be prefixed - by the pattern \verb+"*/xxx"+ in the output MLF file. This is useful - for generating MLFs which are independent of the location of the - corresponding data files. - - \ttitem{-m} Strip all labels to monophones on loading. - - \ttitem{-n fn} This option causes a list of all new label names - created to be output to the file \texttt{fn}. - -\stdoptG -\stdoptI -\stdoptP -\stdoptX - -\end{optlist} -\stdopts{HLEd} - -\mysubsect{Tracing}{HLEd-Tracing} - -\htool{HLEd} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{000001} basic progress reporting. - \ttitem{000002} edit script details. - \ttitem{000004} general command operation. - \ttitem{000010} change operations. - \ttitem{000020} level split/merge operations. - \ttitem{000040} delete level operation. - \ttitem{000100} edit file input. - \ttitem{000200} memory usage. - \ttitem{000400} dictionary expansion in \texttt{EX} command -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hled@\htool{HLEd}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HLMCopy.aux b/HTKBook/HTKRef/HLMCopy.aux deleted file mode 100644 index 5a668e5..0000000 --- a/HTKBook/HTKRef/HLMCopy.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.12}HLMCopy}{287}{section.17.12}} -\newlabel{s:HLMCopy}{{17.12}{287}{HLMCopy\relax }{section.17.12}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.12.1}Function}{287}{subsection.17.12.1}} -\newlabel{s:HLMCopy-Function}{{17.12.1}{287}{Function\relax }{subsection.17.12.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.12.2}Use}{287}{subsection.17.12.2}} -\newlabel{s:HLMCopy-Use}{{17.12.2}{287}{Use\relax }{subsection.17.12.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.12.3}Tracing}{287}{subsection.17.12.3}} -\newlabel{s:HLMCopy-Tracing}{{17.12.3}{287}{Tracing\relax }{subsection.17.12.3}{}} -\@setckpt{HTKRef/HLMCopy}{ -\setcounter{page}{288} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{12} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLMCopy.tex b/HTKBook/HTKRef/HLMCopy.tex deleted file mode 100644 index 53fbeca..0000000 --- a/HTKBook/HTKRef/HLMCopy.tex +++ /dev/null @@ -1,97 +0,0 @@ -% -% HTKBook - Julian Odell 14/08/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{HLMCopy}{HLMCopy} - -\mysubsect{Function}{HLMCopy-Function} - -\index{hlmcopy@\htool{HLMCopy}|(} -The basic function of this tool is to copy language models. During this -operation the target model can be optionally adjusted to a specific vocabulary, -reduced in size by applying pruning parameters to the different $n$-gram -components and written out in a different file format. Previously unseen words -can be added to the language model with unigram entries supplied in a unigram -probability file. -At the same time, the tool can be used to extract word pronunciations from a -number of source dictionaries and output a target dictionary for a specified word -list. \htool{HLMCopy} is a key utility enabling the user to construct custom -dictionaries and language models tailored to a particular recognition task. - -\mysubsect{Use}{HLMCopy-Use} - -\htool{HLMCopy} is invoked by the command line -\begin{verbatim} - HLMCopy [options] inLMFile outLMFile -\end{verbatim} -This copies the language model {\tt inLMFile} to {\tt outLMFile} optionally -applying editing operations controlled by the following options. -\begin{optlist} - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. - Pruning can be applied to the bigram and higher - components of a model ($n$>1). The pruning procedure will keep only - $n$-grams which have been observed more than $c$ times. Note - that this option is only applicable to count-based language - models. - - \ttitem{-d f} Use dictionary {\tt f} as a source of pronunciations - for the output dictionary. A set of dictionaries can be - specified, in order of priority, with multiple {\tt -d} - options. - - \ttitem{-f s} Set the output language model format to {\tt s}. - Possible options are {\tt TEXT} for the standard ARPA-MIT - LM format, {\tt BIN} for Entropic {\em binary} format and - {\tt ULTRA} for Entropic {\em ultra} format. - - \ttitem{-n n} Save target model as $n$-gram. - - \ttitem{-m} Allow multiple identical pronunciations for a single - word. Normally identical pronunciations are deleted. This - option may be required when a single word/pronunciation has - several different output symbols. - - \ttitem{-o} Allow pronunciations for a single word to be selected - from multiple dictionaries. Normally the dictionaries are - prioritised by the order they appear on the command line with - only entries in the first dictionary containing a - pronunciation for a particular word being copied to the output - dictionary. - - \ttitem{-u f} Use unigrams from file {\tt f} as replacements for the - ones in the language model itself. Any words appearing in the - output language model which have entries in the unigram file - (which is formatted as {\tt LOG10PROB WORD}) use the - likelihood ({\tt log10(prob)}) from the unigram file rather - than from the language model. This allows simple language - model adaptation as well as allowing unigram probabilities to - be assigned words in the output vocabulary that do not appear - in the input language model. In some instances you may wish - to use \htool{LNorm} to renormalise the model after using {\tt - -u}. - - \ttitem{-v f} Write a dictionary covering the output vocabulary to - file {\tt f}. If any required words cannot be found in the - set of input dictionaries an error will be generated. - - \ttitem{-w f} Read a word-list defining the output vocabulary from - {\tt f}. This will be used to select the vocabulary for both - the output language model and output dictionary. - -\end{optlist} -\stdopts{HLMCopy} - -\mysubsect{Tracing}{HLMCopy-Tracing} - -\htool{HLMCopy} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlmcopy@\htool{HLMCopy}|)} diff --git a/HTKBook/HTKRef/HLRescore.aux b/HTKBook/HTKRef/HLRescore.aux deleted file mode 100644 index c03ab35..0000000 --- a/HTKBook/HTKRef/HLRescore.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.13}HLRescore}{288}{section.17.13}} -\newlabel{s:HLRescore}{{17.13}{288}{HLRescore\relax }{section.17.13}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.13.1}Function}{288}{subsection.17.13.1}} -\newlabel{s:HLRescore-Function}{{17.13.1}{288}{Function\relax }{subsection.17.13.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.13.2}Use}{288}{subsection.17.13.2}} -\newlabel{s:HLRescore-Use}{{17.13.2}{288}{Use\relax }{subsection.17.13.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.13.3}Tracing}{290}{subsection.17.13.3}} -\newlabel{s:HLRescore-Tracing}{{17.13.3}{290}{Tracing\relax }{subsection.17.13.3}{}} -\@setckpt{HTKRef/HLRescore}{ -\setcounter{page}{291} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{13} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLRescore.tex b/HTKBook/HTKRef/HLRescore.tex deleted file mode 100644 index 04be762..0000000 --- a/HTKBook/HTKRef/HLRescore.tex +++ /dev/null @@ -1,201 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Gunnar Evermann 10.12.2002 -% - -\newpage -\mysect{HLRescore}{HLRescore} - -\mysubsect{Function}{HLRescore-Function} - -\index{hlrescore@\htool{HLRescore}|(} -\htool{HLRescore} is a general lattice post-processing tool. It reads -lattices (for example produced by \htool{HVite}) and applies one of -the following operations on them: - -\begin{itemize} -\item finding 1-best path through lattice -\item pruning lattice using forward-backward scores -\item expanding lattices with new language model -\item converting lattices to equivalent word networks -\item calculating various lattice statistics -\item converting word MLF files to lattices with a language model -\end{itemize} - -A typical scenario for the use of \htool{HLRescore} is the application -of a higher order n-gram to the word lattices generated with HVite and -a bigram. This would involve the following steps: - -\begin{itemize} -\item lattice generation with HVite using a bigram -\item lattice pruning with HLRescore (\texttt{-t}) -\item expansion of lattices using a trigram (\texttt{-n}) -\item finding 1-best transcription in the expanded lattice - (\texttt{-f}) -\end{itemize} - -Another common use of HLRescore is the tuning of the language -model scaling factor and the word insertion penalty for use in -recognition. Instead of having to re-run a decoder many times with -different parameter settings the decoder is run once to generate -lattices. \htool{HLRescore} can be used to find the best transcription -for a give parameter setting very quickly. These different -transcriptions can then be scored (using \htool{HResults}) and the -parameter setting that yields the lowest word error rate can be -selected. - -Lattices produced by standard HTK decoders, for example, -\htool{HVite} and \htool{HDecode}, may still contain duplicate word -paths corresponding to different phonetic contexts caused by -pronunciation variants or optional between word short pause silence -models. These duplicate lattice nodes and arcs must be merged to -ensure that the finite state grammar created from the lattices by HTK -decoders are deterministic, and therefore usable for recognition. -This function is also supported by HLRescore. - - -\mysubsect{Use}{HLRescore-Use} - -\htool{HLRescore} is invoked via the command line -\begin{verbatim} - HLRescore [options] vocabFile LatFiles...... -\end{verbatim} - -\htool{HLRescore} reads each of the lattice files and performs the -requested operation(s) on them. At least one of the following -operations must be selected: find 1-best (\texttt{-f}), write lattices -(\texttt{-w}), calculate statistics (\texttt{-c}). - - -The detailed operation of \htool{HLRescore} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-i mlf} Output transcriptions to master file \texttt{mlf}. - - \ttitem{-l s} Directory in which to store label/lattice files. - - \ttitem{-m s} Direction of merging duplicate nodes and arcs of - lattices. The default value is \texttt{b}, indicating a merging in - a backward direction starting from the sentence end node of the - lattice will be performed. If using direction \texttt{f}, then the - forward merging will be performed instead. - - \ttitem{-n lm} Load ARPA-format n-gram language model from file - \texttt{lm} and expand lattice with this LM. All acoustic scores are - unchanged but the LM scores are replaced and lattices nodes (i.e.\ - contexts) are expanded as required by the structure of the LM. - - \ttitem{-wn lm} Load Resource Management format word pair language - model from file \texttt{lm} and apply this LM to a lattice converted - from a word MLF file. - - \ttitem{-o s} Choose how the output labels should be formatted. - \texttt{s} is a string with certain letters (from \texttt{NSCTWM}) - indicating binary flags that control formatting options. - \texttt{N} normalize acoustic scores by dividing by the duration - (in frames) of the segment. - \texttt{S} remove scores from output label. By default - scores will be set to the total likelihood of the segment. - \texttt{C} Set the transcription labels to start and end on - frame centres. By default start times are set to the start - time of the frame and end times are set to the end time of - the frame. - \texttt{T} Do not include times in output label files. - \texttt{W} Do not include words in output label files - when performing state or model alignment. - \texttt{M} Do not include model names in output label - files. - - \ttitem{-t f [a]} Perform lattice pruning after reading lattices with - beamwidth \texttt{f}. If second argument is given lower beam to - limit arcs per second to \texttt{a}. - - \ttitem{-u f} Perform lattice pruning before writing output - lattices. Otherwise like \texttt{-t}. - - \ttitem{-p f} Set the word insertion log probability to \texttt{f} - (default 0.0). - - \ttitem{-a f} Set the acoustic model scale factor to \texttt{f}. - (default value 1.0). - - \ttitem{-r f} Set the dictionary pronunciation probability scale - factor to \texttt{f}. (default value 1.0). - - \ttitem{-s f} Set the grammar scale factor to \texttt{f}. - This factor post-multiplies the language model likelihoods - from the word lattices. (default value 1.0). - - \ttitem{-d} Take pronunciation probabilities from the dictionary - instead of from the lattice. - - \ttitem{-c} Calculate and output lattice statistics. - - \ttitem{-f} Find 1-best transcription (path) in lattice. - - \ttitem{-w} Write output lattice after processing. - - \ttitem{-q s} Choose how the output lattice should be formatted. - \texttt{s} is a string with certain letters (from \texttt{ABtvaldmn}) - indicating binary flags that control formatting options. - \texttt{A} attach word labels to arcs rather than nodes. - \texttt{B} output lattices in binary for speed. - \texttt{t} output node times. - \texttt{v} output pronunciation information. - \texttt{a} output acoustic likelihoods. - \texttt{l} output language model likelihoods. - \texttt{d} output word alignments (if available). - \texttt{m} output within word alignment durations. - \texttt{n} output within word alignment likelihoods. - - \ttitem{-y ext} This sets the extension for output label files to - \texttt{ext} (default \texttt{rec}). - -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptJ -\stdoptK -\stdoptP - -\end{optlist} -\stdopts{HLRescore} - -\mysubsect{Tracing}{HLRescore-Tracing} - -\htool{HLRescore} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} enable basic progress reporting. - \ttitem{0002} output generated transcriptions. - \ttitem{0004} show details of lattice I/O - \ttitem{0010} show memory usage after each lattice -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlrescore@\htool{HLRescore}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HLStats.aux b/HTKBook/HTKRef/HLStats.aux deleted file mode 100644 index c5f9290..0000000 --- a/HTKBook/HTKRef/HLStats.aux +++ /dev/null @@ -1,44 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.14}HLStats}{291}{section.17.14}} -\newlabel{s:HLStats}{{17.14}{291}{HLStats\relax }{section.17.14}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.1}Function}{291}{subsection.17.14.1}} -\newlabel{s:HLStats-Function}{{17.14.1}{291}{Function\relax }{subsection.17.14.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.2}Bigram Generation}{291}{subsection.17.14.2}} -\newlabel{s:HLStats-Bigram Generation}{{17.14.2}{291}{Bigram Generation\relax }{subsection.17.14.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.3}Use}{292}{subsection.17.14.3}} -\newlabel{s:HLStats-Use}{{17.14.3}{292}{Use\relax }{subsection.17.14.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.4}Tracing}{292}{subsection.17.14.4}} -\newlabel{s:HLStats-Tracing}{{17.14.4}{292}{Tracing\relax }{subsection.17.14.4}{}} -\@setckpt{HTKRef/HLStats}{ -\setcounter{page}{293} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{14} -\setcounter{subsection}{4} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{141} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLStats.tex b/HTKBook/HTKRef/HLStats.tex deleted file mode 100644 index 9cae227..0000000 --- a/HTKBook/HTKRef/HLStats.tex +++ /dev/null @@ -1,198 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell 24/11/97 -% - -\newpage -\mysect{HLStats}{HLStats} - -\mysubsect{Function}{HLStats-Function} - -\index{hlstats@\htool{HLStats}|(} -This program will read in a HMM list and -a set of \HTK\ format transcriptions (label files). It will then -compute various statistics which are intended to assist in -analysing acoustic training data and generating simple language -models for recognition. The specific functions provided by \htool{HLStats} -are: -\begin{enumerate} -\item number of occurrences of each distinct - logical HMM and/or each distinct physical HMM. The list printed - can be limited to the N most infrequent models. -\item minimum, maximum and average durations of each logical HMM - in the transcriptions. -\item a matrix of bigram probabilities -\item an ARPA/MIT-LL format text file of back-off bigram probabilities -\item a list of labels which cover the given set of transcriptions. -\end{enumerate} - -\mysubsect{Bigram Generation}{HLStats-Bigram Generation} - -When using the bigram generating options, each transcription is -assumed to have a unique entry and exit label which by default are -\texttt{!ENTER} and \texttt{!EXIT}. If these labels are not present -they are inserted. In addition, any label occurring in a transcription -which is not listed in the HMM list is mapped to a unique label called -\texttt{!NULL}. - -\htool{HLStats} processes all input transcriptions and -maps all labels to a set of unique integers in the range 1 to $L$, where -$L$ is the number of distinct labels. -For each adjacent pair of labels $i$ -and $j$, it counts the total number of occurrences $N(i,j)$. -Let the total -number of occurrences of label $i$ be $N(i) = \sum_{j=1}^L N(i,j)$. - -For matrix bigrams, the bigram probability $p(i,j)$ is given by -\[ - p(i,j) = \left\{ - \begin{array}{ll} - \alpha N(i,j)/N(i) & \mbox{if $N(i) > 0$} \\ - 1/L & \mbox{if $N(i) = 0$} \\ - f & \mbox{otherwise} - \end{array} - \right. -\] -where $f$ is a floor probability set by the \texttt{-f} option -and $\alpha$ is chosen to ensure that $\sum_{j=1}^L p(i,j) = 1$. - -For back-off bigrams, the unigram probabilities $p(i)$ are given -by -\[ - p(i) = \left\{ - \begin{array}{ll} - N(i)/N & \mbox{if $N(i) > u$} \\ - u/N & \mbox{otherwise} - \end{array} - \right. -\] -where $u$ is unigram floor count set by the \texttt{-u} option -and $N = \sum_{i=1}^L \max [N(i)$,u]. - -The backed-off bigram probabilities are given by -\[ - p(i,j) = \left\{ - \begin{array}{ll} - (N(i,j) - D )/N(i) & \mbox{if $N(i,j) > t$} \\ - b(i) p(j) & \mbox{otherwise} - \end{array} - \right. -\] -where $D$ is a discount and $t$ is a bigram count threshold set -by the \texttt{-t} option. The discount $D$ is fixed at $0.5$ -but can be changed via the configuration variable \texttt{DISCOUNT}. -The back-off weight $b(i)$ is calculated to ensure -that $\sum_{j=1}^L p(i,j) = 1$, i.e. -\[ - b(i) = \frac{1 - \sum_{j \in B} p(i,j)}{1 - \sum_{j \in B} p(j)} -\] -where $B$ is the set of all words for which $p(i,j)$ has a bigram. - -The formats of matrix and ARPA/MIT-LL format bigram files are described -in Chapter~\ref{c:netdict}. - -\mysubsect{Use}{HLStats-Use} - -\htool{HLStats} is invoked by the command line -\begin{verbatim} - HLStats [options] hmmList labFiles .... -\end{verbatim} -The {\tt hmmList} should contain a list of all the labels (ie model names) -used in the following label files for which statistics are required. Any -labels not appearing in the list are ignored and assumed to be -out-of-vocabulary. The list of labels is specified in the same way as for a -HMM list (see \htool{HModel}) and the logical$\Rightarrow$ -physical mapping is preserved -to allow statistics to be collected about physical names as well as logical -ones. The {\tt labFiles} may be master label files. -The available options are - -\begin{optlist} - - \ttitem{-b fn} Compute bigram statistics and store result in the - file {\tt fn}. - - \ttitem{-c N} Count the number of occurrences of each logical model - listed in the {\tt hmmList} and on completion list all models - for which there are {\tt N} or less occurrences. - - \ttitem{-d} Compute minimum, maximum and average duration statistics for each - label. - - \ttitem{-f f} Set the matrix - bigram floor probability to {\tt f} - (default value 0.0). This option should be used in - conjunction with the {\tt -b} option. - - \ttitem{-h N} Set the bigram hashtable size to medium(N=1) or - large (N=2). This option should be used in - conjunction with the {\tt -b} option. The default is small(N=0). - - \ttitem{-l fn} Output a list of covering labels to file {\tt fn}. - Only labels occurring in the {\tt labList} are counted (others - are assumed to be out-of-vocabulary). - However, this list may contain labels that do not occur in any of - the label files. The list of labels written to {\tt fn} will however - contain only those labels which occur at least once. - - \ttitem{-o} Produce backed-off bigrams rather than matrix ones. These - are output in the standard ARPA/MIT-LL textual format. - - \ttitem{-p N} Count the number of occurrences of each physical model - listed in the {\tt hmmList} and on completion list all models - for which there are {\tt N} or less occurrences. - - \ttitem{-s st en} Set the sentence start and end labels to {\tt st} - and {\tt en}. (Default {\tt !ENTER} and {\tt !EXIT}). - - \ttitem{-t n} Set the threshold count for including a bigram - in a backed-off bigram language model. This option should be used in - conjunction with the {\tt -b} and {\tt -o} options. - - \ttitem{-u f} Set the unigram floor probability to {\tt f} when - constructing a back-off bigram language model. - This option should be used in - conjunction with the {\tt -b} and {\tt -o} options. -\stdoptG -\stdoptI -\end{optlist} -\stdopts{HLStats} - -\mysubsect{Tracing}{HLStats-Tracing} - -\htool{HLStats} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} trace memory usage. - \ttitem{00004} show basic statistics whilst calculating bigrams. - This includes the global training data entropy - and the entropy for each distinct label. - \ttitem{00010} show file names as they are processed. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlstats@\htool{HLStats}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HList.aux b/HTKBook/HTKRef/HList.aux deleted file mode 100644 index 3add5fc..0000000 --- a/HTKBook/HTKRef/HList.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.11}HList}{286}{section.17.11}} -\newlabel{s:HList}{{17.11}{286}{HList\relax }{section.17.11}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.11.1}Function}{286}{subsection.17.11.1}} -\newlabel{s:HList-Function}{{17.11.1}{286}{Function\relax }{subsection.17.11.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.11.2}Use}{286}{subsection.17.11.2}} -\newlabel{s:HList-Use}{{17.11.2}{286}{Use\relax }{subsection.17.11.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.11.3}Tracing}{286}{subsection.17.11.3}} -\newlabel{s:HList-Tracing}{{17.11.3}{286}{Tracing\relax }{subsection.17.11.3}{}} -\@setckpt{HTKRef/HList}{ -\setcounter{page}{287} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{11} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HList.tex b/HTKBook/HTKRef/HList.tex deleted file mode 100644 index 79bb1fe..0000000 --- a/HTKBook/HTKRef/HList.tex +++ /dev/null @@ -1,114 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 11/11/95 -% - -\newpage -\mysect{HList}{HList} - -\mysubsect{Function}{HList-Function} - -\index{hlist@\htool{HList}|(} -This program will list the contents of one or more -data sources in any \HTK\ supported format. It uses the full \HTK\ speech -input facilities described in chapter~\ref{c:speechio} and it can thus -read data from a waveform file, from a parameter file and direct from -an audio source. \htool{HList} provides -a dual r\^{o}le in \HTK. Firstly, it is used for examining the contents -of speech data files. For this function, the \texttt{TARGETKIND} configuration -variable should not be set since no conversions -of the data are required. -Secondly, it is used for checking that input -conversions are being performed properly. In the latter case, a configuration -designed for a recognition system can be used with \htool{HList} to -make sure that the translation from the source data into the required -observation structure is exactly as intended. To assist this, options -are provided to split the input data into separate data streams (\texttt{-n}) -and to explicitly list the identity of each parameter in an observation -(\texttt{-o}). - -\mysubsect{Use}{HList-Use} - -HList is invoked by typing the command line -\begin{verbatim} - HList [options] file ... -\end{verbatim} -This causes the contents of each {\tt file} to be listed to the -standard output. If no files are given and the source format -is \texttt{HAUDIO}, then the audio source is listed. The source -form of the data can be converted and listed in a variety of target forms by -appropriate settings of the configuration variables, in particular -\texttt{TARGETKIND}\footnote{The \texttt{TARGETKIND} is equivalent to -the \texttt{HCOERCE} environment variable used in earlier versions -of HTK}. - -The allowable options to \htool{HList} are - -\begin{optlist} - - \ttitem{-d} Force each observation to be listed as discrete VQ symbols. - For this to be possible the source must be either \texttt{DISCRETE} - or have an associated VQ table specified via the \texttt{VQTABLE} - configuration variable. - - \ttitem{-e N} End listing samples at sample index N. - - \ttitem{-h} Print the source header information. - - \ttitem{-i N} Print N items on each line. - - \ttitem{-n N} Display the data split into N independent data streams. - - \ttitem{-o} Show the observation structure. This identifies the r\^{o}le - of each item in each sample vector. - - \ttitem{-p} Playback the audio. When sourcing from an audio device, - this option enables the playback buffer so that after displaying the - sampled data, the captured audio is replayed. - - \ttitem{-r} Print the raw data only. This is useful for exporting a file - into a program which can only accept simple character format data. - - \ttitem{-s N} Start listing samples from sample index N. The first sample -index is 0. - - \ttitem{-t} Print the target header information. - -\stdoptF - -\end{optlist} -\stdopts{HList} - -\mysubsect{Tracing}{HList-Tracing} - -\htool{HList} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlist@\htool{HList}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HMMIRest.aux b/HTKBook/HTKRef/HMMIRest.aux deleted file mode 100644 index 4a2a4ca..0000000 --- a/HTKBook/HTKRef/HMMIRest.aux +++ /dev/null @@ -1,44 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.15}HMMIRest}{293}{section.17.15}} -\newlabel{s:HMMIRest}{{17.15}{293}{HMMIRest\relax }{section.17.15}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.15.1}Function}{293}{subsection.17.15.1}} -\newlabel{s:HMMIRest-Function}{{17.15.1}{293}{Function\relax }{subsection.17.15.1}{}} -\newlabel{eq:mmimodels}{{17.4}{293}{Function\relax }{equation.17.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.15.2}Use}{294}{subsection.17.15.2}} -\newlabel{s:HMMIRest-Use}{{17.15.2}{294}{Use\relax }{subsection.17.15.2}{}} -\newlabel{sec:hmmirestuse}{{17.15.2}{294}{Use\relax }{subsection.17.15.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.15.3}Tracing}{295}{subsection.17.15.3}} -\newlabel{s:HMMIRest-Tracing}{{17.15.3}{295}{Tracing\relax }{subsection.17.15.3}{}} -\@setckpt{HTKRef/HMMIRest}{ -\setcounter{page}{296} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{15} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HMMIRest.tex b/HTKBook/HTKRef/HMMIRest.tex deleted file mode 100644 index a848641..0000000 --- a/HTKBook/HTKRef/HMMIRest.tex +++ /dev/null @@ -1,264 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: */ -%/* */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -% - -% HTKBook - this chapter written by Dan Povey 01/11/02 -% - -\newpage -\mysect{HMMIRest}{HMMIRest} - -\mysubsect{Function}{HMMIRest-Function} - -\index{hmmirest@\htool{HMMIRest}|(} - -\htool{HMMIRest} is used to perform a single iteration of Extended Baum-Welch -for discriminative training of HMMs. Maximum Mutual Information (MMI), -Minimum Phone Error (MPE) and Minimum Word Error (MWE) are supported. -For further details of the theory and configuration settings for -discriminative training see section~\ref{s:discriminative}. A tutorial example -for discriminative training is given in section~\ref{s:egdiscriminative}. - -Discriminative training needs to be initialised with trained models; these -will generally be trained using MLE. Also essential are phone-marked lattices. -Two sets of lattices are needed: a lattice for the correct transcription of -each training file, and a lattice derived from the recognition of each -training file. These are called the ``numerator'' and ``denominator'' -lattices respectively, a reference to their respective positions in the -MMI objective function, which can be expressed as follows: - -\newcommand{\num}{{{\tt num}}} -\newcommand{\den}{{{\tt den}}} -\newcommand{\MMI}{{\tt{mmi}}} -\newcommand{\calO}{ {\bm O} } -\newcommand{\calM}{ {\cal M} } - -\begin{equation} - {\cal F}_\MMI(\lambda) = \sum_{r=1}^R\log \frac { P^\kappa(\calO_r | \calM^\num_r) } { P^\kappa(\calO_r | \calM^\den_r) }, - \label{eq:mmimodels} -\end{equation} -where $\lambda$ is the HMM parameters, $\kappa$ is a scale on the likelihoods, $\calO_r$ is the -speech data for the $r$'th training file and $\calM^\num_r$ and $\calM^\den_r$ are the numerator -and denominator models. - -The MPE/MWE criteria are examples of minimum Bayes' risk training. MPE can be expressed as -\begin{eqnarray} -{\cal F}_{\tt mpe}(\lambda) = \sum_{r=1}^R\sum_{\cal H} -\left(\frac{P^\kappa(\bm{O}^r|{\cal M}_{\cal H})} -{P^\kappa(\bm{O}^r|{\cal M}^{\tt den}_r)}\right) -{\cal L}({\cal H},{\cal H}^r_{\tt ref}) -\end{eqnarray} -where ${\cal M}_{\cal H}$ is the acoustic model for hypothesis -${\cal H}$. ${\cal L}({\cal H},{\cal H}^r_{\tt ref})$ is a loss function -measured at the phone-level. Rather than minimising the phone, or word, error, -the normalised average phone accuracy -is maximised. This may be expressed as -\begin{eqnarray} -{\hat{\lambda}} = \arg\max_{\lambda}\left\{ -1 - \frac{1}{\sum_{r=1}^RQ^r}{\cal F}_{\tt mpe}(\lambda) -\right\} -\end{eqnarray} -where $Q^r$ is the number of phones in the transcription for sequence $r$. -In practice approximate forms of the MMI and normalised average phone accuracy -criteria are optimised. - -The numerator and denominator lattices need to contain phone alignment information -(the start and end times of each phone) and language model likelihoods. -Phone alignment information can be obtained by using \htool{HDecode.mod} with -the letter \texttt{d} included in the lattice format options (specified to \htool{HDecode.mod} by the -\texttt{-q} command line option). It is important that the language model -applied to the lattice not be too informative. In addition the -pruning beam used to create the lattice should be large enough that a -reasonable set of confusable hypotheses are represented in the lattice. For -more details of this process see the tutorial -section~\ref{s:egdiscriminative}. - -Having created these lattices using an initial set of models, the -tool \htool{HMMIRest} can be used to re-estimate the HMMs for -typically 4-8 iterations, using the same set of lattices. - -\htool{HMMIRest} supports multiple mixture Gaussians, tied-mixture -HMMs, multiple data streams, parameter tying within and between models -(but not if means and variances are tied independently), and diagonal -covariance matrices only. - - -%\htool{HMMIRest} supports variance flooring in the same way as \htool{HERest}. - -%It also supports \textit{Single pass retraining}, useful when the parameterisation of -%the front-end (e.g. from MFCC to PLP coefficients) is to be modified. - - -Like \htool{HERest}, \htool{HMMIRest} includes features to allow parallel -operation where a network of processors is available. When the training set -is large, it can be split into separate chunks that are processed in -parallel on multiple machines/processors, speeding up the training process. -\htool{HMMIRest} can operate in two modes: -\begin{enumerate} -\item Single-pass operation: the data files on the command line are the - speech files to be used for re-estimation of the HMM set; the re-estimated - HMM is written by the program to the directory specified by the {\texttt{-M}} - option. -\item Two-pass operation with data split into \texttt{P} blocks: - \begin{enumerate} - \item First pass: multiple jobs are started with the options \texttt{-p 1}, - \texttt{-p 2} $\ldots$ \texttt{-p P} are given; the different subsets of training - files should be given on each command line or in a file specified by the \texttt{-S} - option. Accumulator files \texttt{/HDR

.acc.1} to \texttt{

/HDR

.acc.n} - are written, where \texttt{

} is - the directory specified by the $\texttt{-M}$ and \texttt{

} is the number specified - by the \texttt{-p} option. The number of accumulates stored depends on - the criterion and form of prior. - \item Second pass: \htool{HMMIRest} is called with \texttt{-p 0}, and the - command-line arguments are the accumulator files written by the first pass. - The re-estimated HMM set is written to the directory specified by the $\texttt{-M}$ option. - \end{enumerate} -\end{enumerate} -For more details of options of this form with \htool{HMMIRest} see section~\ref{s:hmmiresttrain} - -If there are a large number of training files, the directories specified for -the numerator and denominator lattice can contain subdirectories containing -the actual lattices. The name of the subdirectory required can be extracted -from the filenames by adding configuration variables for instance as follows: -\begin{verbatim} -LATMASKNUM = */%%%?????.??? -LATMASKDEN = */%%%?????.??? -\end{verbatim} -which would convert a filename \texttt{foo/bar12345.lat} to \texttt{

/bar/bar12345.lat}, -where \texttt{} would be the directory specified by the \texttt{-q} or \texttt{-r} option. -The \texttt{\%}'s are converted to the directory name and other characters are discarded. - -\mysubsect{Use}{HMMIRest-Use} - \label{sec:hmmirestuse} - -\htool{HMMIRest} is invoked via the command line -\begin{verbatim} - HMMIRest [options] hmmList trainFile ... -\end{verbatim} -or alternatively if the training is in parallel mode, the second pass is invoked as -\begin{verbatim} - HMMIRest [options] hmmList accFile ... -\end{verbatim} - -The full list of the options accepted by \htool{HMMIRest} is as follows. Some -of the options are marked (\texttt{hist}) to indicate that they were mainly -used for debugging and development experiments, but maintained for backward compatibility. - -\begin{optlist} - - \ttitem{-a} Use an input transform to obtain alignments for updating - models or transforms (default off). - - \ttitem{-d dir} - Normally \htool{HMMIRest} looks for HMM definitions - (not already loaded via MMF files) - in the current directory. This option tells \htool{HMMIRest} to look in - the directory {\tt dir} to find them. - - \ttitem{-g} (\texttt{hist}) Maximum Likelihood (ML) mode-- Maximum Likelihood lattice-based - estimation using only the numerator (correct-sentence) lattices. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the output transforms. - - \ttitem{-l} (\texttt{hist}) Maximum number of sentences to use (useful only for troubleshooting) - - \ttitem{-o ext} (\texttt{hist}) This causes the file name extensions of the - original models (if any) to be replaced by {\tt ext}. - - \ttitem{-p N} Set parallel mode. 1, 2 $\ldots$ N for a forward-backward - pass on data split into N blocks. 0 for re-estimating using accumulator - files that this will write. Default (-1) is single-pass operation. - - \ttitem{-q dir} Directory to look for numerator lattice files. These files - will have a filename the same as the speech file, but with extension - \texttt{lat} (or as given by \texttt{-Q} option). - - \ttitem{-qp s} Path pattern for the extended path to look for numerator lattice files. - The matched string will be spliced to the end of the directory string specified by - option `-q' for a deeper path. - - \ttitem{-r dir} Directory to look for denominator lattice files. - - \ttitem{-rp s} Path pattern for the extended path to look for denominator lattice files. - The matched string will be spliced to the end of the directory string specified by - option `-r' for a deeper path. - - \ttitem{-s file} File to write HMM statistics. - - \ttitem{-twodatafiles} Expect two of each data file for single pass retraining. - This works as for HERest; command line contains alternating alignment and update - files. - - \ttitem{-u flags} By default, \htool{HMMIRest} updates all of the HMM parameters, - that is, means, variances, mixture weights and - transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance) , - {\tt t} (transition) and {\tt w} (mixture weight). The - presence of a letter enables - the updating of the corresponding parameter set. - - \ttitem{-umle flags} (\texttt{hist}) A format as in \texttt{-u}; directs that the specified parameters - be updated using the ML criterion (for MMI operation only, not MPE/MWE). - - \ttitem{-w floor} (\texttt{hist}) Set the mixture weight floor as a multiple - of \texttt{MINMIX=1.0e-5}. Default is 2. - - \ttitem{-x ext} By default, \htool{HMMIRest} expects a HMM definition for - the label X to be stored in a file called {\tt X}. This - option causes \htool{HMMIRest} to look for the HMM definition in the - file {\tt X.ext}. -\stdoptB -\stdoptE -\stdoptF -\stdoptH -\ttitem{-Hprior mmf} Load HMM macro file {\tt mmf}, to be used as prior model in adaptation. Use with configuration variables {\tt PRIORTAU} etc. -\stdoptI -\stdoptJ -\stdoptM - - \ttitem{-Q ext} Set the lattice file extension to {\tt ext} -\end{optlist} - -\stdopts{HMMIRest} - -\mysubsect{Tracing}{HMMIRest-Tracing} - - -The command-line trace option can only be set to 0 (trace off) -or 1 (trace on), which is the default. Tracing behaviour can -be altered by the {\tt TRACE} configuration variables in the modules \htool{HArc} -and \htool{HFBLat}. - -\index{hmmirest@\htool{HMMIRest}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HParse.aux b/HTKBook/HTKRef/HParse.aux deleted file mode 100644 index 4cc9769..0000000 --- a/HTKBook/HTKRef/HParse.aux +++ /dev/null @@ -1,46 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.16}HParse}{296}{section.17.16}} -\newlabel{s:HParse}{{17.16}{296}{HParse\relax }{section.17.16}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.1}Function}{296}{subsection.17.16.1}} -\newlabel{s:HParse-Function}{{17.16.1}{296}{Function\relax }{subsection.17.16.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.2}Network Definition}{296}{subsection.17.16.2}} -\newlabel{s:HParse-Network Definition}{{17.16.2}{296}{Network Definition\relax }{subsection.17.16.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.3}Compatibility Mode}{298}{subsection.17.16.3}} -\newlabel{s:HParse-Compatibility Mode}{{17.16.3}{298}{Compatibility Mode\relax }{subsection.17.16.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.4}Use}{298}{subsection.17.16.4}} -\newlabel{s:HParse-Use}{{17.16.4}{298}{Use\relax }{subsection.17.16.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.5}Tracing}{299}{subsection.17.16.5}} -\newlabel{s:HParse-Tracing}{{17.16.5}{299}{Tracing\relax }{subsection.17.16.5}{}} -\@setckpt{HTKRef/HParse}{ -\setcounter{page}{300} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{13} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{16} -\setcounter{subsection}{5} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{91} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HParse.tex b/HTKBook/HTKRef/HParse.tex deleted file mode 100644 index d1eb2e8..0000000 --- a/HTKBook/HTKRef/HParse.tex +++ /dev/null @@ -1,331 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Phil Woodland and Steve Young 24/11/97 -% - -\newpage -\mysect{HParse}{HParse} - -\mysubsect{Function}{HParse-Function} - -\index{hparse@\htool{HParse}|(} -The \htool{HParse} program generates word level lattice files (for use -with e.g. \htool{HVite}) from a text file syntax description containing a -set of rewrite rules based on extended Backus-Naur Form (EBNF). -The EBNF rules are used to generate an internal -representation of the corresponding finite-state network where \htool{HParse} -network nodes represent the words in the network, and are connected via -sets of links. This \htool{HParse} network is then converted to \HTK\ V2 word -level lattice. The program provides one convenient way of defining such -word level lattices. - -\htool{HParse} also provides a {\em compatibility mode} for use -with \htool{HParse} syntax descriptions used in \HTK\ V1.5 where -the same format was used to define both the word level syntax -and the dictionary. -In compatibility mode \htool{HParse} will output the word level -portion of such a syntax as an \HTK\ V2 lattice file (via \htool{HNet}) -and the pronunciation information as an \HTK\ V2 dictionary file (via -\htool{HDict}). - -The lattice produced by \htool{HParse} will often contain a number -of \texttt{!NULL} nodes in order to reduce the number of arcs in the -lattice. The use of such \texttt{!NULL} nodes can both -reduce size and increase efficiency when used by recognition programs -such as \htool{HVite}. - -\mysubsect{Network Definition}{HParse-Network Definition} - -The syntax rules for the textual definition of the network are -as follows. Each node in the network has a \texttt{nodename}. -This node name will normally correspond to a word in the final syntax -network. Additionally, for use in compatibility mode, -each node can also have an external name. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= \kill -\> name \> = \> char\{char\} \\ -\> nodename \> = \> name [ "\%" ( "\%" $|$ name ) ] -\end{tabbing}} - -\noindent -Here \texttt{char} represents any character except one of the meta chars -\texttt{\{ \} [ ] $<$ $>$$|$ = \$ ( ) ; $\backslash$ / *}. The latter may, -however, be escaped using a backslash. The first name in a \texttt{nodename} -represents the name of the node (``internal name''), and the second optional name is -the ``external'' name. This is used only in compatibility mode, and is, by default -the same as the internal name. - -Network definitions may also contain variables -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= \kill -\> variable \> = \> \$name -\end{tabbing}} -\noindent -Variables are identified by a leading \$ character. They stand for -sub-networks and must be defined before they appear in the RHS of a rule -using the form -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> subnet \> = \> variable ``='' expr ``;'' -\end{tabbing}} -\noindent -An \texttt{expr} consists of a set of alternative sequences representing -parallel branches of the network. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> expr \> = \> sequence \{``$|$'' sequence\} \\ -\> sequence \> = \> factor\{factor\} -\end{tabbing}} -\noindent -Each sequence is composed of a sequence of factors where a factor -is either a node name, a variable representing some sub-network or -an expression contained within various sorts of brackets. - -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> factor \> = \> ``('' expr ``)'' \> $|$ \\ -\>\>\> ``\{'' expr ``\}'' \> $|$ \\ -\>\>\> ``$<$'' expr ``$>$'' \> $|$ \\ -\>\>\> ``['' expr ``]'' \> $|$ \\ -\>\>\> ``$<<$'' expr ``$>>$'' \> $|$ \\ -\>\>\> nodename \> $|$ \\ -\>\>\> variable -\end{tabbing}} - -Ordinary parentheses are used to bracket sub-expressions, curly braces \{ \} denote zero or more repetitions and angle brackets $<>$ denote one or more repetitions. Square brackets [$\:$] are used to enclose optional items. The double angle brackets are a special feature included for building context dependent loops and are explained further below. -Finally, the complete network is defined by a list of sub-network -definitions followed by a single expression within parentheses. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> network \> = \> \{subnet\} ``('' expr ``)'' -\end{tabbing}} -\noindent -Note that C style comments may be placed anywhere in the text of -the network definition. - -As an example, the following network defines a syntax for some -simple edit commands -\begin{verbatim} - $dir = up | down | left | right; - $mvcmd = move $dir | top | bottom; - $item = char | word | line | page; - $dlcmd = delete [$item]; /* default is char */ - $incmd = insert; - $encmd = end [insert]; - $cmd = $mvcmd|$dlcmd|$incmd|$encmd; - ({sil} < $cmd {sil} > quit) -\end{verbatim} - -Double angle brackets are used to -construct contextually consistent context-dependent loops such -as a word-pair grammar.\footnote{The expression between -double angle brackets must be a simple list of alternative node names or -a variable which has such a list as its value} -This function can also be used to generate consistent triphone loops -for phone recognition\footnote{In \HTK\ V2 it is preferable for -these context-loop expansions to be done automatically via \htool{HNet}, -to avoid requiring a dictionary entry for every context-dependent -model}. -The entry and exit conditions to a -context-dependent loop can be controlled by the invisible -pseudo-words TLOOP\_BEGIN and TLOOP\_END. The right context of TLOOP\_BEGIN -defines the legal loop start nodes, and the left context of TLOOP\_END -defines the legal loop finishers. If TLOOP\_BEGIN/TLOOP\_END are not -present then all models are connected to the entry/exit of the loop. - -A word-pair grammar simply defines the legal -set of words that can follow each word in the vocabulary. -To generate a network to represent such a grammar a -right context-dependent loop could be used. -The legal sentence set of sentence start and end words are defined as -above using TLOOP\_BEGIN/TLOOP\_END. - -For example, the following lists the legal followers for each -word in a 7 word vocabulary - -\begin{tabbing} -+++\=++++++++\=++\= \kill -\> ENTRY \> - \> show, tell, give \\ -\> show \> - \> me, all \\ -\> tell \> - \> me, all \\ -\> me \> - \> all \\ -\> all \> - \> names, addresses \\ -\> names \> - \> and, names, addresses, show, tell, EXIT \\ -\> addresses \> - \> and, names, addresses, show, tell, EXIT \\ -\> and \> - \> names, addresses, show, tell -\end{tabbing} - -\htool{HParse} can generate a suitable lattice to represent this word-pair -grammar by using the following specification: -\begin{verbatim} - $TLOOP_BEGIN_FLLWRS = show|tell|give; - $TLOOP_END_PREDS = names|addresses; - $show_FLLWRS = me|all; - $tell_FLLWRS = me|all; - $me_FLLWRS = all; - $all_FLLWRS = names|addresses; - $names_FLLWRS = and|names|addresses|show|tell|TLOOP_END; - $addresses_FLLWRS = and|names|addresses|show|tell|TLOOP_END; - $and_FLLWRS = names|addresses|show|tell; - - ( sil << - TLOOP_BEGIN+TLOOP_BEGIN_FLLWRS | - TLOOP_END_PREDS-TLOOP_END | - show+show_FLLWRS | - tell+tell_FLLWRS | - me+me_FLLWRS | - all+all_FLLWRS | - names+names_FLLWRS | - addresses+addresses_FLLWRS | - and+and_FLLWRS - >> sil ) -\end{verbatim} -where it is assumed that each utterance begins and ends with \texttt{sil} -model. - -In this example, each set of contexts is defined by creating a variable -whose alternatives are the individual contexts. The actual context-dependent - loop is indicated by the \texttt{<< >>} brackets. -Each element in this loop is a single -variable name of the form \texttt{A-B+C} where \texttt{A} represents the left -context, \texttt{C} represents the right context and \texttt{B} is the actual word. -Each of \texttt{A}, \texttt{B} and \texttt{C} can be nodenames or -variable names but note that this is the only case where variable -names are expanded automatically and the usual -\texttt{\$} symbol is not used\footnote{If the base-names or left/right context of the context-dependent names in a context-dependent loop are variables, -no \texttt{\$} symbols are used when writing the context-dependent -nodename.}. Both \texttt{A} and \texttt{C} are optional, and left and -right contexts can be mixed in the same triphone loop. - -\mysubsect{Compatibility Mode}{HParse-Compatibility Mode} -In \htool{HParse} compatibility mode, the interpretation of the -ENBF network is that used by the \HTK\ V1.5 \htool{HVite} program. -in which \htool{HParse} ENBF notation was used to define both the word -level syntax and the dictionary. -Compatibility mode is aimed at converting files written for -\HTK\ V1.5 into their equivalent \HTK\ V2 representation. -Therefore \htool{HParse} will output the word level -portion of such a ENBF syntax as an \HTK\ V2 lattice file and the -pronunciation information is optionally stored in -an \HTK\ V2 dictionary file. When operating in compatibility mode -and not generating dictionary output, the pronunciation information -is discarded. - -In compatibility mode, the reserved -node names \texttt{WD\_BEGIN} and \texttt{WD\_END} are used to delimit word -boundaries---nodes between a \texttt{WD\_BEGIN/WD\_END} pair are called -``word-internal'' while all other nodes are ``word-external''. -All \texttt{WD\_BEGIN/WD\_END} nodes -must have an ``external name'' attached that denotes the word. -It is a requirement that the number of \texttt{WD\_BEGIN} and the number -of \texttt{WD\_END} nodes are equal and furthermore that there isn't -a direct connection from a \texttt{WD\_BEGIN} node to a \texttt{WD\_END}. -For example a portion of such an \HTK\ V1.5 network could be -\begin{verbatim} - $A = WD_BEGIN%A ax WD_END%A; - $ABDOMEN = WD_BEGIN%ABDOMEN ae b d ax m ax n WD_END%ABDOMEN; - $ABIDES = WD_BEGIN%ABIDES ax b ay d z WD_END%ABIDES; - $ABOLISH = WD_BEGIN%ABOLISH ax b aa l ih sh WD_END%ABOLISH; - ... etc - - - ( < - $A | $ABDOMEN | $ABIDES | $ABOLISH | ... etc - > ) -\end{verbatim} -\htool{HParse} will output the connectivity of the words -in an HTK V2 word lattice format file -and the pronunciation information in an HTK V2 dictionary. -Word-external nodes are treated as words and stored in the lattice -with corresponding entries in the dictionary. - -It should be noted that in \HTK\ V1.5 any ENBF network could appear -between a \texttt{WD\_BEGIN/WD\_END} pair, which includes loops. -Care should therefore be taken with syntaxes that define very complex -sets of alternative pronunciations. It should also be noted -that each dictionary entry is limited in length to 100 phones. -If multiple instances of the same word are found in the expanded -HParse network, a dictionary entry will be created for only the -first instance and subsequent instances are ignored (a warning is -printed). If words with a NULL external name are present then -the dictionary will contain a NULL output symbol. - -Finally, since the implementation of the generation of -the \htool{HParse} network has been revised\footnote{With the added benefit -of rectifying some residual bugs in the HTK V1.5 implementation} -the semantics of variable definition and use has been slightly changed. -Previously variables could be redefined during network definition -and each use would follow the most recent definition. In HTK V2 only -the final definition of any variable is used in network expansion. - -\mysubsect{Use}{HParse-Use} - -\htool{HParse} is invoked via the command line -\begin{verbatim} - HParse [options] syntaxFile latFile -\end{verbatim} -\htool{HParse} will then read the set of ENBF rules -in \texttt{syntaxFile} and produce the output lattice in \texttt{latFile}. - -The detailed operation of \htool{HParse} is controlled by the following -command line options -\begin{optlist} - \ttitem{-b} Output the lattice in binary format. This increases - speed of subsequent loading (default ASCII text lattices). - - \ttitem{-c} Set V1.5 compatibility mode. Compatibility mode can also - be set by using the configuration variable V1COMPAT - (default compatibility mode disabled). - - \ttitem{-d s} Output dictionary to file {\tt s}. This is only - a valid option when operating in compatibility mode. - If not set no dictionary will be produced. - - \ttitem{-l} Include language model log probabilities in the output - These log probabilities are calculated as - $-\log (\mbox{number of followers})$ for each network node. -\end{optlist} -\stdopts{HParse} - -\mysubsect{Tracing}{HParse-Tracing} - -\htool{HParse} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} basic progress reporting. - \ttitem{0002} show final HParse network (before conversion to a lattice) - \ttitem{0004} print memory statistics after HParse lattice generation - \ttitem{0010} show progress through glue node removal. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hparse@\htool{HParse}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HQuant.aux b/HTKBook/HTKRef/HQuant.aux deleted file mode 100644 index e6c9f78..0000000 --- a/HTKBook/HTKRef/HQuant.aux +++ /dev/null @@ -1,44 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.17}HQuant}{300}{section.17.17}} -\newlabel{s:HQuant}{{17.17}{300}{HQuant\relax }{section.17.17}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.1}Function}{300}{subsection.17.17.1}} -\newlabel{s:HQuant-Function}{{17.17.1}{300}{Function\relax }{subsection.17.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.2}VQ Codebook Format}{300}{subsection.17.17.2}} -\newlabel{s:HQuant-VQ Codebook Format}{{17.17.2}{300}{VQ Codebook Format\relax }{subsection.17.17.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.3}Use}{300}{subsection.17.17.3}} -\newlabel{s:HQuant-Use}{{17.17.3}{300}{Use\relax }{subsection.17.17.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.4}Tracing}{301}{subsection.17.17.4}} -\newlabel{s:HQuant-Tracing}{{17.17.4}{301}{Tracing\relax }{subsection.17.17.4}{}} -\@setckpt{HTKRef/HQuant}{ -\setcounter{page}{302} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{13} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{17} -\setcounter{subsection}{4} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{91} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HQuant.tex b/HTKBook/HTKRef/HQuant.tex deleted file mode 100644 index 2322cf3..0000000 --- a/HTKBook/HTKRef/HQuant.tex +++ /dev/null @@ -1,205 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 11/11/95 -% - -\newpage -\mysect{HQuant}{HQuant} - -\mysubsect{Function}{HQuant-Function} - -\index{hquant@\htool{HQuant}|(} -This program will construct a \HTK\ format VQ table consisting of one or -more codebooks, each corresponding to an independent data stream. -A codebook is a collection of indexed reference vectors that are intended to -represent the structure of the training data. Ideally, every compact -cluster of points in the training data is represented by one reference -vector. VQ -tables are used directly when building systems based on Discrete -Probability HMMs. In this case, the continuous-valued speech vectors -in each stream are replaced by the index of the closest reference -vector in each corresponding codebook. -Codebooks can also be used to attach VQ indices to -continuous observations. A typical use of this is to preselect -Gaussians in probability computations. More information on the -use of VQ tables is given in section~\ref{s:vquant}. - -Codebook construction consists of finding clusters in the training data, -assigning a unique reference vector (the cluster centroid) to each, -and storing the resultant reference vectors and associated codebook data -in a VQ table. \htool{HQuant} uses a top-down clustering process whereby -clusters are iteratively split until the desired number of clusters are -found. The optimal codebook size (number of reference vectors) depends -on the structure and amount of the training data, but a value of 256 is -commonly used. - -\htool{HQuant} can construct both linear (i.e.\ flat) and tree-structured -(i.e.\ binary) codebooks. Linear codebooks can have lower quantisation -errors but tree-structured codebooks have $\log_2 N$ access times -compared to $N$ for the linear case. The distance metric can either be -Euclidean, diagonal covariance Mahalanobis or full covariance -Mahalanobis. - -\mysubsect{VQ Codebook Format}{HQuant-VQ Codebook Format} - -Externally, a VQ table is stored in a text file consisting of a header -followed by a sequence of entries representing each tree node. One tree -is built for each stream and linear codebooks are represented by a tree -in which there are only right branches. - -The header consists of a magic number followed by the covariance kind, -the number of following nodes, the number of streams and the width -of each stream. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> header =\> magic type covkind numNodes numS swidth1 swidth2 \ldots -\end{tabbing} -} -\noindent -where {\sf magic} is a magic number which is usually the -code for the parameter kind of the data. The {\sf type} -defines the type of codebook -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> type =\> linear (0) , binary tree-structured (1) -\end{tabbing} -} -\noindent -The covariance kind determines the type of distance metric to be -used -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> covkind =\> diagonal covariance (1), full covariance (2), euclidean (5) -\end{tabbing} -} -\noindent -Within the file, these covariances are stored in inverse form. - -Each node entry has the following form -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> node-entry =\> stream vqidx nodeId leftId rightId \\ -\> \> mean-vector \\ -\> \> [inverse-covariance-matrix $|$ inverse-variance-vector] -\end{tabbing} -} -\noindent -{\sf Stream} is the stream index for this entry. {\sf Vqidx} -is the VQ index corresponding to this entry. This is the number that -appears in vector quantised speech files. In tree-structured code-books, -it is zero for non-terminal nodes. Every node has a unique -integer identifier (distinct from the VQ index) given by {\sf nodeId}. -The left and right daughter of the current node are given by -{\sf leftId} and {\sf rightId}. In a linear codebook, the left identifier -is always zero. - -Some examples of VQ tables are given in Chapter~\ref{c:discmods}. - -\mysubsect{Use}{HQuant-Use} - -\htool{HQuant} is invoked via the command line - -\begin{verbatim} - HQuant [options] vqFile trainFiles ... -\end{verbatim} -where \texttt{vqFile} is the name of the output VQ table file. -The effect of this command -is to read in training data from each \texttt{trainFile}, cluster the -data and write the final cluster centres into the VQ table file. - -The list of training files can be stored in a script file if required. -Furthermore, the data used for training the codebook -can be limited to that corresponding to a specified label. This can be -used, for example, to train phone specific codebooks. When constructing -a linear codebook, the maximum number of iterations per cluster can be -limited by setting the configuration variable \texttt{MAXCLUSTITER}. -The minimum number of samples in any one cluster can be set using the - configuration variable \texttt{MINCLUSTSIZE}. - -The detailed operation of \htool{HQuant} is controlled by the following -command line options -\begin{optlist} - \ttitem{-d} Use a diagonal-covariance Mahalanobis distance metric for - clustering (default is to use a Euclidean distance metric). - - \ttitem{-f} Use a full-covariance Mahalanobis distance metric for - clustering (default is to use a Euclidean distance metric). - - \ttitem{-g} Output the global covariance to a codebook. Normally, - covariances are computed individually for each cluster using - the data in that cluster. This option computes a global covariance - across all the clusters. - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HQuant} searches - through all of the training files and uses only the speech - frames from segments with the given label. When this option is not - used, \htool{HQuant} uses all of the data in each training file. - - \ttitem{-n S N} Set size of codebook for stream \texttt{S} - to \texttt{N} (default 256). - If tree-structured codebooks are required then \texttt{N} - must be a power of 2. - - \ttitem{-s N} Set number of streams to \texttt{N} (default 1). - Unless the \texttt{-w} option is used, the width of each stream - is set automatically depending on the size and parameter kind of the - training data. - - \ttitem{-t} Create tree-structured codebooks (default linear). - - \ttitem{-w S N} Set width of stream \texttt{S} to \texttt{N}. - This option overrides the default decomposition that \HTK\ normally - uses to divide a parameter file into streams. If this option is used, - it must be repeated for each individual stream. - -\stdoptF -\stdoptG -\stdoptI -\stdoptL -\stdoptX -\end{optlist} -\stdopts{HQuant} -\mysubsect{Tracing}{HQuant-Tracing} - -\htool{HQuant} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} dump global mean and covariance - \ttitem{00004} trace data loading. - \ttitem{00010} list label segments. - \ttitem{00020} dump clusters. - \ttitem{00040} dump VQ table. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. - -\index{hquant@\htool{HQuant}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HRest.aux b/HTKBook/HTKRef/HRest.aux deleted file mode 100644 index e7667ce..0000000 --- a/HTKBook/HTKRef/HRest.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.18}HRest}{302}{section.17.18}} -\newlabel{s:HRest}{{17.18}{302}{HRest\relax }{section.17.18}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.18.1}Function}{302}{subsection.17.18.1}} -\newlabel{s:HRest-Function}{{17.18.1}{302}{Function\relax }{subsection.17.18.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.18.2}Use}{302}{subsection.17.18.2}} -\newlabel{s:HRest-Use}{{17.18.2}{302}{Use\relax }{subsection.17.18.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.18.3}Tracing}{303}{subsection.17.18.3}} -\newlabel{s:HRest-Tracing}{{17.18.3}{303}{Tracing\relax }{subsection.17.18.3}{}} -\@setckpt{HTKRef/HRest}{ -\setcounter{page}{304} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{14} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{18} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{92} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HRest.tex b/HTKBook/HTKRef/HRest.tex deleted file mode 100644 index 2d82d49..0000000 --- a/HTKBook/HTKRef/HRest.tex +++ /dev/null @@ -1,170 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 31/10/95 -% - -\newpage -\mysect{HRest}{HRest} - -\mysubsect{Function}{HRest-Function} - -\index{hrest@\htool{HRest}|(} -\htool{HRest} performs basic Baum-Welch re-estimation of the parameters of -a single HMM using a set of observation sequences. \htool{HRest} can be used -for normal isolated word training in which the observation sequences -are realisations of the corresponding vocabulary word. - -Alternatively, -\htool{HRest} can be used to generate \textit{seed} HMMs for phoneme-based -recognition. In this latter case, the observation sequences will consist -of segments of continuously spoken training material. \htool{HRest} will -\textit{cut} these out of the training data automatically by simply -giving it a segment label. - -In both of the above applications, \htool{HRest} is intended to operate on -HMMs with initial parameter values estimated by \htool{HInit}. - -\htool{HRest} supports multiple mixture components, multiple streams, -parameter tying within a single model, full or diagonal -covariance matrices, tied-mixture models and discrete models. -The outputs of \htool{HRest} are often further -processed by \htool{HERest}. - -Like all re-estimation tools, \htool{HRest} allows a floor to be set on -each individual variance by defining a variance floor macro for each -data stream (see chapter~\ref{c:Training}). If any diagonal covariance -component falls below $0.00001$, then the corresponding mixture weight is -set to zero. A warning is issued if the number of mixtures is greater -than one, otherwise an error occurs. Applying a variance floor via the -{\tt -v} option or a variance floor macro can be used to prevent this. - -\mysubsect{Use}{HRest-Use} - -\htool{HRest} is invoked via the command line -\begin{verbatim} - HRest [options] hmm trainFiles ... -\end{verbatim} -This causes the parameters of the given {\tt hmm} to be -re-estimated repeatedly using the data in {\tt trainFiles} -until either a maximum iteration limit is reached -or the re-estimation converges. -The HMM definition can be contained within one or more macro -files loaded via the standard \texttt{-H} option. Otherwise, the -definition will be read from a file called \texttt{hmm}. -The list of train files -can be stored in a script file if required. - -The detailed operation of \htool{HRest} is controlled by the following -command line options -\begin{optlist} - \ttitem{-c f} Set the threshold for tied-mixture observation - pruning to {\tt f}. - When all mixtures of all models are tied to create a full - tied-mixture system, the calculation of output probabilities - is treated as a special case. Only those - mixture component probabilities which fall within {\tt f} of - the maximum mixture component probability are used in calculating - the state output probabilities (default 10.0). - - \ttitem{-e f} This sets the convergence factor to the real value {\tt f}. - The convergence factor is the relative change between successive - values of $P({O}|\lambda)$ (default value 0.0001). - - \ttitem{-i N} This sets the maximum number of re-estimation cycles - to {\tt N} (default value 20). - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HRest} searches - through all of the training files and cuts out all segments with - the given label. When this option is not used, \htool{HRest} assumes that - each training file is a single token. - - \ttitem{-m N} Sets the minimum number of training examples to be {\tt N}. - If fewer than {\tt N} examples are supplied then an error is - reported (default value 3). - - \ttitem{-t} Normally, training sequences are rejected if they - have fewer frames - than the number of emitting states in the HMM. Setting this - switch disables this reject mechanism\footnote{Using this option - only makes sense if the HMM has skip transitions}. - - \ttitem{-u flags} By default, \htool{HRest} updates all - of the HMM parameters, - that is, means, variances, mixture weights - and transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance), - {\tt t} (transition) and {\tt w} (mixture weight). The presence of a - letter enables the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f}. This is ignored - if an explicit variance floor macro is defined. The default value - is 0.0. - - \ttitem{-w f} Any mixture weight or discrete observation probability - which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - -\stdoptB -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HRest} - -\mysubsect{Tracing}{HRest-Tracing} - -\htool{HRest} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{000001} basic progress reporting. - \ttitem{000002} output information on the training data loaded. - \ttitem{000004} the observation probabilities. - \ttitem{000010} the alpha matrices. - \ttitem{000020} the beta matrices. - \ttitem{000040} the occupation counters. - \ttitem{000100} the transition counters. - \ttitem{000200} the mean counters. - \ttitem{000400} the variance counters. - \ttitem{001000} the mixture weight counters. - \ttitem{002000} the re-estimated transition matrix. - \ttitem{004000} the re-estimated mixture weights. - \ttitem{010000} the re-estimated means. - \ttitem{020000} the re-estimated variances. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hrest@\htool{HRest}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HResults.aux b/HTKBook/HTKRef/HResults.aux deleted file mode 100644 index e8a8807..0000000 --- a/HTKBook/HTKRef/HResults.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.19}HResults}{304}{section.17.19}} -\newlabel{s:HResults}{{17.19}{304}{HResults\relax }{section.17.19}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.19.1}Function}{304}{subsection.17.19.1}} -\newlabel{s:HResults-Function}{{17.19.1}{304}{Function\relax }{subsection.17.19.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.19.2}Use}{305}{subsection.17.19.2}} -\newlabel{s:HResults-Use}{{17.19.2}{305}{Use\relax }{subsection.17.19.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.19.3}Tracing}{307}{subsection.17.19.3}} -\newlabel{s:HResults-Tracing}{{17.19.3}{307}{Tracing\relax }{subsection.17.19.3}{}} -\@setckpt{HTKRef/HResults}{ -\setcounter{page}{308} -\setcounter{equation}{8} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{15} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{19} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{93} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HResults.tex b/HTKBook/HTKRef/HResults.tex deleted file mode 100644 index fbaac83..0000000 --- a/HTKBook/HTKRef/HResults.tex +++ /dev/null @@ -1,292 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell 24/11/97 -% - - -\newpage -\mysect{HResults}{HResults} - -\mysubsect{Function}{HResults-Function} - -\index{hresults@\htool{HResults}|(} -\htool{HResults} is the \HTK\ performance analysis tool. -It reads in a set of label files (typically output -from a recognition tool such as \htool{HVite}) and compares them -with the corresponding reference transcription files. -For the analysis of speech recognition output, the comparison -is based on a Dynamic Programming-based string alignment procedure. -For the analysis of word-spotting output, the comparison -uses the standard US NIST FOM metric. - -When used to calculate the sentence accuracy using DP the basic -output is recognition statistics for the whole file set in the format -\begin{verbatim} - --------------------------- Overall Results ------------------- - SENT: %Correct=13.00 [H=13, S=87, N=100] - WORD: %Corr=53.36, Acc=44.90 [H=460,D=49,S=353,I=73,N=862] - =============================================================== -\end{verbatim} -The first line gives the sentence-level accuracy based on the -total number of label files which are identical to the transcription -files. The second line is the word accuracy based on the DP matches -between the label files and the transcriptions \footnote{ -The choice of ``Sentence'' and ``Word'' here is the usual -case but is otherwise arbitrary. -\htool{HResults} just compares label sequences. The sequences -could be paragraphs, sentences, phrases or words, and the labels -could be phrases, words, syllables or phones, etc. Options exist -to change the output designations `SENT' and `WORD' to whatever -is appropriate.}. -In this second line, -$H$ is the number of correct labels, $D$ is the number of deletions, -$S$ is the number of substitutions, $I$ is the number of insertions and -$N$ is the total number of labels in the defining transcription files. -The percentage number of labels correctly recognised is given by -\begin{equation} - \mbox{\%Correct} = \frac{H}{N} \times 100\% -\end{equation} -and the accuracy is computed by -\begin{equation} - \mbox{Accuracy} = \frac{H-I}{N} \times 100\% -\end{equation} - -In addition to the standard \HTK\ output format, -\htool{HResults} provides an alternative similar to that used -in the US NIST scoring package, i.e.\ -\begin{verbatim} - |=============================================================| - | # Snt | Corr Sub Del Ins Err S. Err | - |-------------------------------------------------------------| - | Sum/Avg | 87 | 53.36 40.95 5.68 8.47 55.10 87.00 | - `-------------------------------------------------------------' - -\end{verbatim} - - -When \htool{HResults} is used to generate a confusion matrix, the -values are as follows: -\begin{description} -\item[\%c] The percentage correct in the row; that is, how many times a phone - instance was correctly labelled. -\item[\%e] The percentage of incorrectly labeled phones in the row as - a percentage of the total number of labels in the set. -\end{description} -An example from the HTKDemo routines: -\begin{verbatim} -====================== HTK Results Analysis ======================= - Date: Thu Jan 10 19:00:03 2002 - Ref : labels/bcplabs/mon - Rec : test/te1.rec - : test/te2.rec - : test/te3.rec ------------------------- Overall Results -------------------------- -SENT: %Correct=0.00 [H=0, S=3, N=3] -WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] ------------------------- Confusion Matrix ------------------------- - S C V N L Del [ %c / %e] - S 6 1 0 1 0 0 [75.0/1.5] - C 2 35 3 1 0 18 [85.4/4.5] - V 0 1 28 0 1 12 [93.3/1.5] - N 0 1 0 7 0 1 [87.5/0.8] - L 0 1 1 0 9 4 [81.8/1.5] -Ins 2 2 0 2 0 -=================================================================== -\end{verbatim} -Reading across the rows, \%c indicates the number of correct instances -divided by the total number of instances in the row. \%e is the -number of incorrect instances in the row divided by the total number -of instances (N). - -Optional extra outputs available from \htool{HResults} are -\begin{itemize} - \item recognition statistics on a per file basis - \item recognition statistics on a per speaker basis - \item recognition statistics from best of N alternatives - \item time-aligned transcriptions - \item confusion matrices -\end{itemize} -For comparison purposes, it is also possible to assign two -labels to the same equivalence class (see {\tt -e option}). -Also, the {\em null} label {\tt ???} is defined so that making any -label equivalent to the null label means that it will be -ignored in the matching process. Note that the order of equivalence -labels is important, to ensure that label {\tt X} is ignored, the -command line option \verb+-e ??? X+ would be used. -Label files containing triphone labels of the form {\tt A-B+C} can be -optionally stripped down to just the class name {\tt B} via the {\tt -s} -switch. - -The word spotting mode of scoring can be used to calculate hits, -false alarms and the associated figure of merit for each of a -set of keywords. -Optionally it can also calculate ROC information over a range of -false alarm rates. A typical output is as follows -\begin{verbatim} ------------------------- Figures of Merit ------------------------- - KeyWord: #Hits #FAs #Actual FOM - A: 8 1 14 30.54 - B: 4 2 14 15.27 - Overall: 12 3 28 22.91 -------------------------------------------------------------------- -\end{verbatim} -which shows the number of hits and false alarms (FA) for two keywords -\texttt{A} and \texttt{B}. A label in the test file with start time $t_s$ -and end time $t_e$ constitutes a hit if there is a corresponding label -in the reference file such that $t_s < t_m < t_e$ where $t_m$ is the -mid-point of the reference label. - -Note that for keyword scoring, the test -transcriptions must include a score with each labelled word spot -and all transcriptions must include boundary time information. - -The FOM gives the \% of hits -averaged over the range 1 to 10 FA's per hour. This is calculated -by first ordering all spots for a particular keyword according to -the match score. Then for each FA rate $f$, the number of hits are counted -starting from the top of the ordered list and stopping when -$f$ have been encountered. This corresponds to \textit{a posteriori} -setting of the keyword detection threshold and effectively gives an -upper bound on keyword spotting performance. - -\mysubsect{Use}{HResults-Use} - -\htool{HResults} is invoked by typing the command line -\begin{verbatim} - HResults [options] hmmList recFiles ... -\end{verbatim} -This causes \htool{HResults} to be applied to each {\tt recFile} in turn. The -{\tt hmmList} should contain a list of all model names for which result -information is required. Note, however, that since the context dependent parts -of a label can be stripped, this list is not necessarily the same as the one -used to perform the actual recognition. For each {\tt recFile}, a -transcription file with the same name but the extension {\tt .lab} (or some -user specified extension - see the {\tt -X} option) is read in and matched with -it. The {\tt recfiles} may be master label files (MLFs), but note that even if such an MLF is loaded using the {\tt -I} option, the list of files to be checked still needs to be passed, either as individual command line arguments or via a script with the {\tt -S} option. For this reason, it is simpler to pass the {\tt recFile} MLF as one of the command line filename arguments. For loading reference label file MLF's, the {\tt -I} option must be used. The reference labels and the recognition labels must have different file extensions. -The available options are -\begin{optlist} - \ttitem{-a s} change the label \texttt{SENT} in the output to - \texttt{s}. - - \ttitem{-b s} change the label \texttt{WORD} in the output to - \texttt{s}. - - \ttitem{-c} when comparing labels convert to upper case. Note that - case is still significant for equivalences (see \texttt{-e} below). - - \ttitem{-d N} search the first \texttt{N} alternatives for each test label - file to find the most accurate match with the reference labels. - Output results will be based on the most accurate match to allow - NBest error rates to be found. - - \ttitem{-e s t} the label {\tt t} is made equivalent to the - label {\tt s}. More precisely, {\tt t} is assigned to an equivalence - class of which {\tt s} is the identifying member. - - \ttitem{-f} Normally, \htool{HResults} accumulates statistics for all - input files and just outputs a summary on completion. - This option forces match statistics to be output for each - input test file. - - \ttitem{-g fmt} This sets the test label format to {\tt fmt}. - If this is not set, the {\tt recFiles} should be in the - same format as the reference files. - - \ttitem{-h} Output the results in the same format as US NIST scoring - software. - - \ttitem{-k s} Collect and output results on a speaker by speaker basis - (as well as globally). \texttt{s} defines a pattern which is used - to extract the speaker identifier from the test label file name. - In addition to the pattern matching metacharacters - \texttt{*} and \texttt{?} - (which match zero or more characters and a single character - respectively), the character \texttt{\%} matches any character whilst - including it as part of the speaker identifier. - - \ttitem{-m N} Terminate after collecting statistics from the first - \texttt{N} files. - - \ttitem{-n} Set US NIST scoring software compatibility. - - \ttitem{-p} This option causes a phoneme confusion matrix to - be output. - - \ttitem{-s} This option causes all phoneme labels with the form - {\tt A-B+C} to be converted to {\tt B}. It is useful for - analysing the results of phone recognisers using context dependent - models. - - \ttitem{-t} This option causes a time-aligned transcription of - each test file to be output provided that it differs from - the reference transcription file. - - \ttitem{-u f} Changes the time unit for calculating false alarm - rates (for word spotting scoring) to \texttt{f} hours (default is 1.0). - - \ttitem{-w} Perform word spotting analysis rather than string - accuracy calculation. - - \ttitem{-z s} This redefines the null class name to {\tt s}. - The default null class name is {\tt ???}, which may be difficult - to manage in shell script programming. - -\stdoptG -\stdoptI -\stdoptL -\stdoptX - -\end{optlist} -\stdopts{HResults} - -\mysubsect{Tracing}{HResults-Tracing} - -\htool{HResults} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show error rate for each test alternative. - \ttitem{00004} show speaker identifier matches. - \ttitem{00010} warn about non-keywords found during word spotting. - \ttitem{00020} show detailed word spotting scores. - \ttitem{00040} show memory usage. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hresults@\htool{HResults}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HSGen.aux b/HTKBook/HTKRef/HSGen.aux deleted file mode 100644 index 4904411..0000000 --- a/HTKBook/HTKRef/HSGen.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.20}HSGen}{308}{section.17.20}} -\newlabel{s:HSGen}{{17.20}{308}{HSGen\relax }{section.17.20}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.20.1}Function}{308}{subsection.17.20.1}} -\newlabel{s:HSGen-Function}{{17.20.1}{308}{Function\relax }{subsection.17.20.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.20.2}Use}{308}{subsection.17.20.2}} -\newlabel{s:HSGen-Use}{{17.20.2}{308}{Use\relax }{subsection.17.20.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.20.3}Tracing}{308}{subsection.17.20.3}} -\newlabel{s:HSGen-Tracing}{{17.20.3}{308}{Tracing\relax }{subsection.17.20.3}{}} -\@setckpt{HTKRef/HSGen}{ -\setcounter{page}{309} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{15} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{20} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{93} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HSGen.tex b/HTKBook/HTKRef/HSGen.tex deleted file mode 100644 index b02807d..0000000 --- a/HTKBook/HTKRef/HSGen.tex +++ /dev/null @@ -1,96 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 31/10/95 -% - -\newpage -\mysect{HSGen}{HSGen} - -\mysubsect{Function}{HSGen-Function} - -\index{hsgen@\htool{HSGen}|(} -This program will read in a word network definition in standard -\HTK\ lattice format representing a Regular Grammar $G$ and randomly -generate sentences from the language $L(G)$ of $G$. The sentences are -written to standard output, one per line and an option is provided -to number them if required. - -The empirical entropy $H_e$ can also be calculated using the formula -\begin{equation} - H_e = \frac{\sum_k P(S_k)}{\sum_k |S_k|} -\end{equation} -where $S_k$ is the $k$'th sentence generated and $|S_k|$ is its length. -The perplexity $P_e$ is computed from $H_e$ by -\begin{equation} - P_e = 2^{H_e} -\end{equation} -The probability of each sentence $P(S_k)$ is computed from the product of -the individual branch probabilities. - - -\mysubsect{Use}{HSGen-Use} - -\htool{HSGen} is invoked by the command line -\begin{verbatim} - HSGen [options] wdnet dictfile -\end{verbatim} -where \texttt{dictfile} is a dictionary containing all of the words -used in the word network stored in \texttt{wdnet}. This dictionary -is only used as a word list, the pronunciations are ignored. - -The available options are - -\begin{optlist} - - \ttitem{-l} When this option is set, each generated sentence - is preceded by a line number. - - \ttitem{-n N} This sets the total number of sentences generated - to be \texttt{N} (default value 100). - - \ttitem{-q} Set quiet mode. This suppresses the printing of sentences. - It is useful when estimating the entropy of $L(G)$ since the - accuracy of the latter depends on the number of sentences generated. - - \ttitem{-s} Compute word network statistics. When set, the number of - network nodes, the vocabulary size, the empirical entropy, the - perplexity, the average sentence length, the minimum sentence length - and the maximum sentence length - are computed and printed on the standard output. -\end{optlist} -\stdopts{HSLab} - -\mysubsect{Tracing}{HSGen-Tracing} - -\htool{HSLab} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting - \ttitem{00002} detailed trace of lattice traversal -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hsgen@\htool{HSGen}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HSLab.aux b/HTKBook/HTKRef/HSLab.aux deleted file mode 100644 index 6858c2a..0000000 --- a/HTKBook/HTKRef/HSLab.aux +++ /dev/null @@ -1,43 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.21}HSLab}{309}{section.17.21}} -\newlabel{s:HSLab}{{17.21}{309}{HSLab\relax }{section.17.21}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.21.1}Function}{309}{subsection.17.21.1}} -\newlabel{s:HSLab-Function}{{17.21.1}{309}{Function\relax }{subsection.17.21.1}{}} -\newlabel{f:hslab}{{17.1}{310}{Function\relax }{figctr.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.21.2}Use}{310}{subsection.17.21.2}} -\newlabel{s:HSLab-Use}{{17.21.2}{310}{Use\relax }{subsection.17.21.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.21.3}Tracing}{312}{subsection.17.21.3}} -\newlabel{s:HSLab-Tracing}{{17.21.3}{312}{Tracing\relax }{subsection.17.21.3}{}} -\@setckpt{HTKRef/HSLab}{ -\setcounter{page}{313} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{15} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{21} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{93} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HSLab.tex b/HTKBook/HTKRef/HSLab.tex deleted file mode 100644 index d6db216..0000000 --- a/HTKBook/HTKRef/HSLab.tex +++ /dev/null @@ -1,235 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 30/10/95 -% - -\newpage -\mysect{HSLab}{HSLab} - -\newcommand{\hbut}[1]{\texttt{#1}} -\newcommand{\hbbut}[1]{\fbox{\texttt{#1}}} - -\mysubsect{Function}{HSLab-Function} - -\index{hslab@\htool{HSLab}|(} -\htool{HSLab} is an interactive label editor for manipulating speech label files. -An example of using \htool{HSLab} would be to load a sampled waveform file, -determine the boundaries of the speech units of interest and assign labels -to them. Alternatively, an existing label file can be loaded and edited by -changing current label boundaries, deleting and creating new labels. -\htool{HSLab} is the only tool in the HTK package which makes use of the -graphics library \htool{HGraf}. - -When started \htool{HSLab} displays a window which is split into two parts: a -display section and a control section (see Fig~\href{f:hslab}). -The display section contains the plotted speech waveform with the -associated labels. The control section consists of a palette of buttons -which are used to invoke the various facilities available in the tool. -The buttons are laid out into three different groups depending on the -function they perform. Group one (top row) contains buttons related to -basic input/output commands. -Group two (middle row) implements the viewing and record/playback functions. -The buttons in group three (bottom row) are used for labelling. To invoke a -particular function, place the mouse pointer onto the corresponding button -and click once. All commands which require further interaction with the user -after invocation will display guiding text in the message area telling the -user what he or she is expected to do next. For example, to delete a label, -the user will click on \hbut{Delete}, the message ``Please select label to delete'' -will appear in the message area and the user will be expected to click in that -part of the display section corresponding to the label to be deleted (not on -the label itself). - -A {\em marked region} is a slice of the waveform currently visible in the -window. A region is marked by clicking on \hbut{Mark} and specifying two -boundaries by clicking in the display section. -When marked, a region will be displayed in inverse colours. In the presence -of a marked region the commands \hbut{Play}, \hbut{Label} and \hbut{Label as} -will be applied to the specified region rather than to the whole of the -waveform visible on the screen. -Part of the waveform can also be made into a marked region with the commands -\hbut{Zoom Out} and \hbut{Select}. \hbut{Zoom Out} will take the user back -to the previous level of magnification and the waveform being displayed before -the execution of the command will become a marked region. -\hbut{Select} will make the part of the waveform corresponding to a particular -label into a marked region. This can be useful for playing back existing labels. - -Labelling is carried out with \hbut{Label } and \hbut{Label as}. \hbut{Label} -will assign {\em The Current Label} to a specified slice of the waveform, -whilst \hbut{Label as} will prompt the user to type-in the labelling string. -{\em The Current Label} is shown in the button in the bottom right corner of -the control section. It defaults to ``Speech'' and it can be changed by clicking -on the button it resides in. -Multiple alternative transcriptions are manipulated using the \hbut{Set [?]} and -\hbut{New} buttons. The former is used to select the desired transcription, the -latter is used to create a new alternative transcription. - -\centrefig{hslab}{120}{HSLab display window} - -\mysubsect{Use}{HSLab-Use} - -\htool{HSLab} is invoked by typing the command line -\begin{verbatim} - HSLab [options] dataFile -\end{verbatim} -where \texttt{dataFile} is a data file in any of the supported formats with a -\texttt{WAVEFORM} sample kind. If the given data file does not exist, then -\htool{HSLab} will assume that a new file is to be recorded with this name. - -The available options for \htool{HSLab} are - -\begin{optlist} - \ttitem{-a} With this switch present, the numeric part of the global labelling - string is automatically incremented after every \texttt{Label} operation. - - \ttitem{-i file} This option allows transcription files to be output to the - named master label file (MLF). - - \ttitem{-n} Normally \htool{HSLab} expects to load an existing label file - whose name is derived from the speech data file. This option tells - \htool{HSLab} that a new empty transcription is to be created for the loaded - data-file. - - \ttitem{-s string} This option allows the user to set the string displayed - in the ``command'' button used to trigger external commands. - -\stdoptF -\stdoptG -\stdoptI -\stdoptL -\stdoptX -\end{optlist} -\stdopts{HSLab} - -The following is a summary of the function of each \htool{HSLab} -button. - -\begin{optlist} - \ttitem{\hbbut{Load}} Load a speech data file and associated transcription. - If changes have been made to the currently loaded transcription - since it was last saved the user will be prompted to save these - changes before loading the new file. - - \ttitem{\hbbut{Save}} Save changes made to the transcription into a specified - label file. - - \ttitem{\hbbut{About}} Print information about HSLab. - - \ttitem{\hbbut{Quit}} Exit from \htool{HSLab}. If alterations have been made - to the currently loaded transcription since it was last saved, the user - will be prompted to save these changes before exiting. - - \ttitem{\hbbut{Command}} This button is used to trigger an external command which - can process the waveform file currently loaded in \htool{HSLab}. This - is accomplished by setting the environment variable \texttt{HSLABCMD} to the - shell command required to perform the processing. When the \texttt{Command} - button is pressed, any occurrence of \texttt{\$} in the shell command is - replaced by the name of the currently loaded waveform file. Note that - only the filename without its extension is substituted. The string - displayed in the ``command'' button can be changed using the \texttt{-s} - option. - - \ttitem{\hbbut{Mark}} Mark a region of the displayed waveform. The user - is prompted to specify the start and the end point of a region with - the mouse pointer. The marked region will be displayed in inverse - colours. Only one region can be marked at a time. - - \ttitem{\hbbut{Unmark}} Unmark a previously marked region. - - \ttitem{\hbbut{<--}} Scroll the display to the left. - - \ttitem{\hbbut{-->}} Scroll the display to the right. - - \ttitem{\hbbut{Z.In}} Zoom into a part of the displayed waveform. If there is - a currently marked region then that region will be zoomed into, - otherwise, the user will be prompted to select a slice of the - waveform by specifying two points using the mouse pointer. - - \ttitem{\hbbut{Z.Out}} Restore the previous viewing level. - - \ttitem{\hbbut{Restore}} Display the complete waveform into the window. Any - marked regions will be unmarked. - - \ttitem{\hbbut{Play}} If there is a marked region of the waveform then - that portion of the signal will be played through the internal speaker. - Otherwise, the command will apply to the waveform visible on the - screen. - - \ttitem{\hbbut{Rec}} This initiates recording from the audio input device. The maximum - duration of a recording is limited to 2 mins at 16KHz sampling rate. Two bar-graphs - are displayed: the first (red) shows the number of samples recorded, the second - bar (green) displays the energy of the incoming signal. Once pressed, the - \texttt{Rec} button changes into \texttt{Stop} which, in turn, is used to terminate - the operation. When finished, the audio data stored in the buffer is written - out to disk. Each recording is stored in alternating files - \texttt{dataFile\_0} and \texttt{dataFile\_1}. - - \ttitem{\hbbut{Pause}} Clicking on this button pauses/un-pauses the recording operation. - - \ttitem{\hbbut{Volume}} This button is used to select the playback volume of the - audio device. - - \ttitem{\hbbut{x1}} This button selects the current level of waveform magnification. - The available factors are $\times 1$, $\times 2$, $\times 4$, $\times 8$, - $\times 16$, and $\times 32$. - - \ttitem{\hbbut{Label}} If a marked region exists, then the waveform contained in the - region will be labelled with {\em The Current Label}. Otherwise, the - command will be applied to the waveform visible on the screen. - - \ttitem{\hbbut{Labelas}} Same as above, however, the user is prompted to type in - the labelling string. - - \ttitem{\hbbut{Delete}} Delete a label. - - \ttitem{\hbbut{Edit}} Edit the string of a label. - - \ttitem{\hbbut{Select}} Select a label as a marked region. - - \ttitem{\hbbut{Adjust}} Adjust the boundaries of a label. To select the label - boundary to adjust, click in the display near to the label boundary. - - \ttitem{\hbbut{Set [?]}} This button is used to select the current alternative - transcription displayed and used in \htool{HSLab}. - - \ttitem{\hbbut{New}} Creates a new alternative transcription. If an empty alternative - transcription already exists, then a new transcription is not created. - - \ttitem{\hbbut{Undo}} Single level undo operation for labelling commands. - - \ttitem{\hbbut{Speech}} Change the current labelling string (the button in the - bottom right of the control area). -\end{optlist} - -The following ``mouse'' shortcuts are provided. To mark a region position the pointer at -one of the desired boundaries, then press the left mouse button and while holding it down -position the pointer at the other region boundary. Upon releasing the mouse button the -marked region will be highlighted. To play a label position the mouse cursor anywhere within -the corresponding label ``slice'' in the label area of the display and click the left -mouse button. - -\mysubsect{Tracing}{HSLab-Tracing} -\htool{HSLab} does not provide any trace options. -\index{hslab@\htool{HSLab}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HSmooth.aux b/HTKBook/HTKRef/HSmooth.aux deleted file mode 100644 index 1040238..0000000 --- a/HTKBook/HTKRef/HSmooth.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.22}HSmooth}{313}{section.17.22}} -\newlabel{s:HSmooth}{{17.22}{313}{HSmooth\relax }{section.17.22}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.22.1}Function}{313}{subsection.17.22.1}} -\newlabel{s:HSmooth-Function}{{17.22.1}{313}{Function\relax }{subsection.17.22.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.22.2}Use}{313}{subsection.17.22.2}} -\newlabel{s:HSmooth-Use}{{17.22.2}{313}{Use\relax }{subsection.17.22.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.22.3}Tracing}{314}{subsection.17.22.3}} -\newlabel{s:HSmooth-Tracing}{{17.22.3}{314}{Tracing\relax }{subsection.17.22.3}{}} -\@setckpt{HTKRef/HSmooth}{ -\setcounter{page}{315} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{22} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HSmooth.tex b/HTKBook/HTKRef/HSmooth.tex deleted file mode 100644 index 612c292..0000000 --- a/HTKBook/HTKRef/HSmooth.tex +++ /dev/null @@ -1,135 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Dave Ollason 11/11/95 -% - - -\newpage -\mysect{HSmooth}{HSmooth} - -\mysubsect{Function}{HSmooth-Function} - -\index{hsmooth@\htool{HSmooth}|(} -This program is used to smooth a set of context-dependent tied mixture -or discrete HMM's using deleted interpolation. -The program operates as a replacement for the second pass of \htool{HERest} -when working in {\it parallel mode}\footnote{It is not,of course, -necessary to have multiple processors to use this program since each -`parallel' activation can be executed sequentially on a single -processor}. It reads in the $N$ sets of accumulator files containing the -statistics accumulated during the first pass and then interpolates the -mixture weights between each context dependent model and its corresponding -context independent version. The interpolation weights are chosen to -maximise the likelihood of each deleted block with respect to the -probability distributions estimated from all other blocks. - -\mysubsect{Use}{HSmooth-Use} - -\htool{HSmooth} is invoked via the command line -\begin{verbatim} - HSmooth [options] hmmList accFile ... -\end{verbatim} -where {\tt hmmList} contains the list of context dependent models -to be smoothed and each {\tt accFile} is a file of the form -{\tt HERN.acc} dumped by a previous execution of \htool{HERest} with the {\tt -p} -option set to {\tt N}. The HMM definitions are loaded and then for -every state and stream of every context dependent model X, the optimal -interpolation weight is found for smoothing between the mixture -weights determined from the X accumulators alone and those determined -from the context independent version of X. The latter is computed simply -by summing the accumulators across all context dependent allophones of X. - -The detailed operation of \htool{HSmooth} is controlled by the following -command line options -\begin{optlist} - \ttitem{-b f} Set the value of epsilon for convergence - in the binary chop optimisation procedure to {\tt f}. - The binary chop optimisation procedure for each - interpolation weight terminates when the gradient is - within epsilon of zero (default 0.001). - - \ttitem{-c N} Set maximum number of interpolation iterations - for the binary chop optimisation procedure to be N - (default 16). - -\ttitem{-d dir} Normally \htool{HSmooth} expects to find the HMM definitions - in the current directory. This option tells \htool{HSmooth} to look in - the directory {\tt dir} to find them. - - - \ttitem{-m N} Set the minimum number of training examples - required for any model to {\tt N}. If the actual number - falls below this value, the HMM is not updated and the original - parameters are used for the new version (default value 1). - - \ttitem{-o ext} This causes the file name extensions of the - original models (if any) to be replaced by {\tt ext}. - - \ttitem{-s file} This causes statistics on occupation of each - state to be output to the named file. - - \ttitem{-u flags} By default, \htool{HSmooth} updates all of the HMM parameters, - that is, means, variances and transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance) , - {\tt t} (transition) and {\tt w} (mixture weight). The - presence of a letter enables - the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f} (default value - 0.0). - - \ttitem{-w f} Any mixture weight which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - - \ttitem{-x ext} By default, \htool{HSmooth} expects a HMM definition for - the model X to be stored in a file called {\tt X}. This - option causes \htool{HSmooth} to look for the HMM definition in the - file {\tt X.ext}. - -\stdoptB -\stdoptH -\stdoptM - -\end{optlist} -\stdopts{HSmooth} - -\mysubsect{Tracing}{HSmooth-Tracing} - -\htool{HSmooth} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show interpolation weights. - \ttitem{00004} give details of optimisation algorithm. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hsmooth@\htool{HSmooth}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HVite.aux b/HTKBook/HTKRef/HVite.aux deleted file mode 100644 index e35a09b..0000000 --- a/HTKBook/HTKRef/HVite.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.23}HVite}{315}{section.17.23}} -\newlabel{s:HVite}{{17.23}{315}{HVite\relax }{section.17.23}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.23.1}Function}{315}{subsection.17.23.1}} -\newlabel{s:HVite-Function}{{17.23.1}{315}{Function\relax }{subsection.17.23.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.23.2}Use}{315}{subsection.17.23.2}} -\newlabel{s:HVite-Use}{{17.23.2}{315}{Use\relax }{subsection.17.23.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.23.3}Tracing}{317}{subsection.17.23.3}} -\newlabel{s:HVite-Tracing}{{17.23.3}{317}{Tracing\relax }{subsection.17.23.3}{}} -\@setckpt{HTKRef/HVite}{ -\setcounter{page}{318} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{23} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HVite.tex b/HTKBook/HTKRef/HVite.tex deleted file mode 100644 index 868dda2..0000000 --- a/HTKBook/HTKRef/HVite.tex +++ /dev/null @@ -1,265 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell - 24/11/97 -% - -\newpage -\mysect{HVite}{HVite} - -\mysubsect{Function}{HVite-Function} - -\index{hvite@\htool{HVite}|(} -\htool{HVite} is a general-purpose Viterbi word recogniser. It will -match a speech file against a network of HMMs and output a transcription -for each. When performing N-best recognition a word level lattice -containing multiple hypotheses can also be produced. - -Either a word level lattice or a label file is read in and then -expanded using the supplied dictionary to create a model based -network. This allows arbitrary finite state word networks and -simple forced alignment to be specified. - -This expansion can be used to create context independent, word internal -context dependent and cross word context dependent networks. The way -in which the expansion is performed is determined automatically from -the dictionary and HMMList. When all labels appearing in the -dictionary are defined in the HMMList no expansion of model names is -performed. Otherwise if all the labels in the dictionary can be -satisfied by models dependent only upon word internal context these -will be used else cross word context expansion will be performed. -These defaults can be overridden by \htool{HNet} configuration parameters. - -\htool{HVite} supports shared parameters and appropriately pre-computes -output probabilities. -For increased processing speed, \htool{HVite} can optionally perform a beam -search controlled by a user specified threshold (see \texttt{-t} option). -When fully tied mixture models are used, observation pruning is also provided -(see the \texttt{-c} option). -Speaker adaptation is also supported by \htool{HVite} both in terms of -recognition using an adapted model set or a TMF (see the \texttt{-k} option), -and in the estimation of a transform by unsupervised adaptation using -linear transformation in an incremental mode (see the \texttt{-j} option) or -in a batch mode (\texttt{-K} option). - -\mysubsect{Use}{HVite-Use} - -\htool{HVite} is invoked via the command line -\begin{verbatim} - HVite [options] dictFile hmmList testFiles ... -\end{verbatim} -HVite will then either load a single network file and match this -against each of the test files \texttt{-w netFile}, or create a -new network for each test file either from the corresponding -label file \texttt{-a} or from a word lattice \texttt{-w}. -When a new network is created for each test file the path name -of the label (or lattice) file to load is determined from the -test file name and the \texttt{-L} and \texttt{-X} options -described below. - -If no \texttt{testFiles} are specified the \texttt{-w s} option must -be specified and recognition will be performed from direct audio. - -The \texttt{hmmList} should contain a list of the models required to -construct the network from the word level representation. - -The recogniser output is written in the form of a label file whose -path name is determined from the test file name and the \texttt{-l} and -\texttt{-x} options described below. The list of test files can be stored -in a script file if required. - -When performing N-best recognition (see \texttt{-n N} option described -below) the output label file can contain multiple alternatives -\texttt{-n N M} and a lattice file containing multiple hypotheses can -be produced. - -The detailed operation of \htool{HVite} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-a} Perform alignment. \htool{HVite} will load a label file and - create an alignment network for each test file. - - \ttitem{-b s} Use \texttt{s} as the sentence boundary during alignment. - - \ttitem{-c f} Set the tied-mixture observation pruning threshold to \texttt{f}. - When all mixtures of all models are tied to create a full - tied-mixture system, the calculation of output probabilities - is treated as a special case. Only those mixture - component probabilities which fall within \texttt{f} of - the maximum mixture component probability are used in calculating - the state output probabilities (default 10.0). - - \ttitem{-d dir} This specifies the directory to search for the - HMM definition files corresponding to the labels used in - the recognition network. - \ttitem{-e} When using direct audio input, output transcriptions - are not normally saved. When this option is set, each - output transcription is written to a file called \texttt{PnS} - where \texttt{n} is an integer which increments with each output - file, \texttt{P} and \texttt{S} are strings which are by default - empty but can be set using the configuration variables - \texttt{RECOUTPREFIX} and \texttt{RECOUTSUFFIX}. - -\ttitem{-f} During recognition keep track of full state alignment. The output - label file will contain multiple levels. The first level will be the - state number and the second will be the word name (not the output symbol). - - \ttitem{-g} When using direct audio input, this option enables audio - replay of each input utterance after it has been recognised. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the input transforms. - - \ttitem{-i s} Output transcriptions to MLF \texttt{s}. - - \ttitem{-j i} Perform incremental MLLR adaptation every i utterances - - \ttitem{-k} Use an input transform (default off). - - \ttitem{-l dir} This specifies the directory to store the output label - files. If this option is not used then \htool{HVite} will store - the label files in the same directory as the data. - When output is directed to an MLF, this option can be used to - add a path to each output file name. In particular, setting the option - \verb+-l '*'+ will cause a label file named \texttt{xxx} to be prefixed - by the pattern \verb+"*/xxx"+ in the output MLF file. This is useful - for generating MLFs which are independent of the location of the - corresponding data files. - - \ttitem{-m} During recognition keep track of model boundaries. The output - label file will contain multiple levels. The first level will be the - model number and the second will be the word name (not the output - symbol). - - - \ttitem{-n i [N]} Use \texttt{i} tokens in each state to perform - N-best recognition. The number of alternative output - hypotheses \texttt{N} defaults to 1. - - \ttitem{-o s} Choose how the output labels should be formatted. - \texttt{s} is a string with certain letters (from \texttt{NSCTWM}) - indicating binary flags that control formatting options. - \texttt{N} normalise acoustic scores by dividing by the duration - (in frames) of the segment. - \texttt{S} remove scores from output label. By default - scores will be set to the total likelihood of the segment. - \texttt{C} Set the transcription labels to start and end on - frame centres. By default start times are set to the start - time of the frame and end times are set to the end time of - the frame. - \texttt{T} Do not include times in output label files. - \texttt{W} Do not include words in output label files - when performing state or model alignment. - \texttt{M} Do not include model names in output label - files when performing state and model alignment. - - \ttitem{-p f} Set the word insertion log probability to \texttt{f} - (default 0.0). - - \ttitem{-q s} Choose how the output lattice should be formatted. - \texttt{s} is a string with certain letters (from \texttt{ABtvaldmn}) - indicating binary flags that control formatting options. - \texttt{A} attach word labels to arcs rather than nodes. - \texttt{B} output lattices in binary for speed. - \texttt{t} output node times. - \texttt{v} output pronunciation information. - \texttt{a} output acoustic likelihoods. - \texttt{l} output language model likelihoods. - \texttt{d} output word alignments (if available). - \texttt{m} output within word alignment durations. - \texttt{n} output within word alignment likelihoods. - - \ttitem{-r f} Set the dictionary pronunciation probability scale - factor to \texttt{f}. (default value 1.0). - - \ttitem{-s f} Set the grammar scale factor to \texttt{f}. - This factor post-multiplies the language model likelihoods - from the word lattices. (default value 1.0). - - \ttitem{-t f [i l]} Enable beam searching such that any model whose - maximum log probability token falls more than \texttt{f} below - the maximum for all models is deactivated. Setting \texttt{f} - to 0.0 disables the beam search mechanism (default value - \texttt{0.0}). In alignment mode two extra parameters - \texttt{i} and \texttt{l} can be specified. If the alignment - fails at the initial pruning threshold \texttt{f}, then the - threshold will by increased by \texttt{i} and the alignment - will be retried. This procedure is repeated until the - alignment succeeds or the threshold limit \texttt{l} is - reached. - - \ttitem{-u i} Set the maximum number of active models to \texttt{i}. - Setting \texttt{i} to \texttt{0} disables this limit (default 0). - - \ttitem{-v f} Enable word end pruning. Do not propagate tokens from - word end nodes that fall more than \texttt{f} below the maximum - word end likelihood. (default \texttt{0.0}). - - \ttitem{-w [s]} Perform recognition from word level networks. If - \texttt{s} is included then use it to define the network used - for every file. - - \ttitem{-x ext} This sets the extension to use for HMM definition - files to \texttt{ext}. - - \ttitem{-y ext} This sets the extension for output label files to - \texttt{ext} (default \texttt{rec}). - - \ttitem{-z ext} Enable output of lattices (if performing NBest - recognition) with extension \texttt{ext} (default off). - - \ttitem{-L dir} This specifies the directory to find input label (when - \texttt{-a} is specified) or network files (when \texttt{-w} is - specified). - - \ttitem{-X s} Set the extension for the input label or network files - to be \texttt{s} (default value \texttt{lab}). - -\stdoptE -\stdoptG -\stdoptH -\stdoptI -\stdoptJ -\stdoptK -\stdoptP - -\end{optlist} -\stdopts{HVite} - -\mysubsect{Tracing}{HVite-Tracing} - -\htool{HVite} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} enable basic progress reporting. - \ttitem{0002} list observations. - \ttitem{0004} frame-by-frame best token. - \ttitem{0010} show memory usage at start and finish. - \ttitem{0020} show memory usage after each utterance. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hvite@\htool{HVite}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/LAdapt.aux b/HTKBook/HTKRef/LAdapt.aux deleted file mode 100644 index 1cb53f4..0000000 --- a/HTKBook/HTKRef/LAdapt.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.24}LAdapt}{318}{section.17.24}} -\newlabel{s:LAdapt}{{17.24}{318}{LAdapt\relax }{section.17.24}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.24.1}Function}{318}{subsection.17.24.1}} -\newlabel{s:Function}{{17.24.1}{318}{Function\relax }{subsection.17.24.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.24.2}Use}{318}{subsection.17.24.2}} -\newlabel{s:LAdapt-Use}{{17.24.2}{318}{Use\relax }{subsection.17.24.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.24.3}Tracing}{319}{subsection.17.24.3}} -\newlabel{s:LAdapt-Tracing}{{17.24.3}{319}{Tracing\relax }{subsection.17.24.3}{}} -\@setckpt{HTKRef/LAdapt}{ -\setcounter{page}{320} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{24} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LAdapt.tex b/HTKBook/HTKRef/LAdapt.tex deleted file mode 100644 index 307a5a0..0000000 --- a/HTKBook/HTKRef/LAdapt.tex +++ /dev/null @@ -1,98 +0,0 @@ -% -% HTKBook - Valtcho Valtchev 04/02/98 -% -% Updated - Gareth Moore 15/01/02 - 1/3/02 -% - -\newpage -\mysect{LAdapt}{LAdapt} - -\mysubsect{Function}{Function} - -\index{ladapt@\htool{LAdapt}|(} -This program will adapt an existing language model from supplied text -data. This is accomplished in two stages. First, the text data is -scanned and a new language model is generated. In the second stage, an -existing model is loaded and adapted (merged) with the newly created -one according to the specified ratio. The target model can be -optionally pruned to a specific vocabulary. Note that you can only -apply this tool to word models or the class $n$-gram component of a -class model -- that is, you cannot apply it to full class models. - -\mysubsect{Use}{LAdapt-Use} - -\htool{LAdapt} is invoked by the command line -\begin{verbatim} - LAdapt [options] -i weight inLMFile outLMFile [texttfile ...] -\end{verbatim} -The text data is scanned and a new LM generated. The input language model is -then loaded and the two models merged. The effect of the weight (0.0-1.0) is to -control the overall contribution of each model during the merging process. The -output to outLMFile is an $n$-gram model stored in the user-specified format. - -The allowable options to \htool{LAdapt} are as follows -\begin{optlist} - \ttitem{-a n} Allow upto \texttt{n} new words in input text - (default 100000). - - \ttitem{-b n} Set the $n$-gram buffer size to $n$. This controls the size of the - buffer used to accumulate $n$-gram statistics whilst scanning the input - text. Larger buffer sizes will result in more efficient operation of - the tool with fewer sort operations required (default 2000000). - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. Pruning can - be applied to the bigram ($n$=2) and longer ($n$>2) components of the - newly generated model. The pruning procedure will keep only $n$-grams - which have been observed more than $c$ times. - - \ttitem{-d s} Set the root $n$-gram data file name to {\tt s}. By default, - $n$-gram statistics from the text data will be accumulated and stored - as {\tt gram.0, gram.1, ...}, etc. Note that a larger buffer size will - result in fewer files. - - \ttitem{-f s} Set the output language model format to {\tt s}. - Possible options are {\tt text} for the standard ARPA-MIT - LM format, {\tt bin} for Entropic {\em binary} format and - {\tt ultra} for Entropic {\em ultra} format. - - \ttitem{-g} Use existing $n$-gram data files. If this option is specified the - tool will use the existing gram files rather than scanning the actual - texts. This option is useful when adapting multiple language models - from the same text data or when experimenting with different merging - weights. - - \ttitem{-i w f} Interpolate with model {\tt f} using weight {\tt w}. Note - that at least one model must be specified with this option. - - \ttitem{-j n c} Set weighted discounting pruning for $n$ grams to - $c$. This cannot be applied to unigrams ($n$=1). - - \ttitem{-n n} Produce $n$-gram language model. - - \ttitem{-s s} Store {\tt s} in the header of the gram files. - - \ttitem{-t} Force Turing-Good discounting if configured otherwise. - - \ttitem{-w fn} Load word list from {\tt fn}. The word list will be used to - define the target model's vocabulary. If a word list is not specified, - the target model's vocabulary will have all words from the source - model(s) together with any new words encountered in the text - data. - - \ttitem{-x} Create a count-based model. -\end{optlist} -\stdopts{LAdapt} - -\mysubsect{Tracing}{LAdapt-Tracing} - -\htool{LAdapt} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting - \ttitem{00002} monitor buffer saving - \ttitem{00004} trace word input stream - \ttitem{00010} trace shift register input -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{ladapt@\htool{LAdapt}|)} diff --git a/HTKBook/HTKRef/LBuild.aux b/HTKBook/HTKRef/LBuild.aux deleted file mode 100644 index 3132cef..0000000 --- a/HTKBook/HTKRef/LBuild.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.25}LBuild}{320}{section.17.25}} -\newlabel{s:LBuild}{{17.25}{320}{LBuild\relax }{section.17.25}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.25.1}Function}{320}{subsection.17.25.1}} -\newlabel{s:LBuild-Function}{{17.25.1}{320}{Function\relax }{subsection.17.25.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.25.2}Use}{320}{subsection.17.25.2}} -\newlabel{s:LBuild-Use}{{17.25.2}{320}{Use\relax }{subsection.17.25.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.25.3}Tracing}{320}{subsection.17.25.3}} -\newlabel{s:LBuild-Tracing}{{17.25.3}{320}{Tracing\relax }{subsection.17.25.3}{}} -\@setckpt{HTKRef/LBuild}{ -\setcounter{page}{321} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{25} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LBuild.tex b/HTKBook/HTKRef/LBuild.tex deleted file mode 100644 index 1c0ae1f..0000000 --- a/HTKBook/HTKRef/LBuild.tex +++ /dev/null @@ -1,100 +0,0 @@ -% -% HLMBook - Steve Young 13/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LBuild}{LBuild} - -\mysubsect{Function}{LBuild-Function} - -\index{lbuild@\htool{LBuild}|(} -\index{n-gram language model} - -This program will read one or more input gram files and -generate/update a back-off $n$-gram language model as described in -section~\ref{s:mkngoview}. The \texttt{-n} option specifies the order of -the final model. Thus, to generate a trigram language model, the user -may simply invoke the tool with \texttt{-n 3} which will cause it to -compute the FoF table and then generate the unigram, bigram and -trigram stages of the model. Note that intermediate model/FoF files -will not be generated. - -As for all tools which process gram files, the input gram files must -each be sorted but they need not be sequenced. The counts in each -input file can be modified by applying a multiplier factor. Any $n$-gram -containing an id which is not in the word map is ignored, thus, the -supplied word map will typically contain just those word and class ids -required for the language model under construction (see -\htool{LSubset}). - -\htool{LBuild} supports Turing-Good and absolute discounting -as described in section~\ref{s:HLMdiscounts}. - -\mysubsect{Use}{LBuild-Use} - -\htool{LBuild} is invoked by typing the command line -\begin{verbatim} - LBuild [options] wordmap outfile [mult] gramfile .. [mult] gramfile .. -\end{verbatim} - -The given word map file is loaded and then the set of named gram files -are merged to form a single sorted stream of $n$-grams. Any $n$-grams -containing ids not in the word map are ignored. The list of input -gram files can be interspersed with multipliers. These are -floating-point format numbers which must begin with a plus or minus -character (e.g. \texttt{+1.0}, \texttt{-0.5}, etc.). The effect of a -multiplier \texttt{x} is to scale the $n$-gram counts in the following -gram files by the factor \texttt{x}. A multiplier stays in effect -until it is redefined. The output to \texttt{outfile} is a back-off -$n$-gram language model file in the specified file format. - -See the \htool{LPCalc} options in section~\ref{s:coninlib} for -details on changing the discounting type from the default of -Turing-Good, as well as other configuration file options. - -The allowable options to \htool{LBuild} are as follows - -\begin{optlist} - \ttitem{-c n c} Set cutoff for \texttt{n}-gram to \texttt{c}. - - \ttitem{-d n c} Set weighted discount pruning for \texttt{n}-gram - to \texttt{c} for Seymore-Rosenfeld pruning. - - \ttitem{-f t} Set output model format to \texttt{t} (TEXT, BIN, ULTRA). - - \ttitem{-k n} Set discounting range for Good-Turing discounting to - $[1..n]$. - - \ttitem{-l f} Build model by updating existing LM in \texttt{f}. - - \ttitem{-n n} Set final model order to \texttt{n}. - - \ttitem{-t ff} Load the FoF file \texttt{f}. This is only used for - Turing-Good discounting, and is not essential. - - \ttitem{-u c} Set the minimum occurrence count for unigrams to - \texttt{c}. (Default is 1) - - \ttitem{-x} Produce a counts model. -\end{optlist} -\stdopts{LBuild} - - -\mysubsect{Tracing}{LBuild-Tracing} - -\htool{LBuild} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lbuild@\htool{LBuild}|)} - - - - - diff --git a/HTKBook/HTKRef/LFoF.aux b/HTKBook/HTKRef/LFoF.aux deleted file mode 100644 index d0f11b5..0000000 --- a/HTKBook/HTKRef/LFoF.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.26}LFoF}{321}{section.17.26}} -\newlabel{s:LFoF}{{17.26}{321}{LFoF\relax }{section.17.26}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.26.1}Function}{321}{subsection.17.26.1}} -\newlabel{s:LFoF-Function}{{17.26.1}{321}{Function\relax }{subsection.17.26.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.26.2}Use}{321}{subsection.17.26.2}} -\newlabel{s:LFoF-Use}{{17.26.2}{321}{Use\relax }{subsection.17.26.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.26.3}Tracing}{321}{subsection.17.26.3}} -\newlabel{s:LFoF-Tracing}{{17.26.3}{321}{Tracing\relax }{subsection.17.26.3}{}} -\@setckpt{HTKRef/LFoF}{ -\setcounter{page}{322} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{26} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LFoF.tex b/HTKBook/HTKRef/LFoF.tex deleted file mode 100644 index c02b29c..0000000 --- a/HTKBook/HTKRef/LFoF.tex +++ /dev/null @@ -1,74 +0,0 @@ -% -% HLMBook - Steve Young 13/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LFoF}{LFoF} - -\mysubsect{Function}{LFoF-Function} - -\index{lFoF@\htool{LFoF}|(} -This program will read one or more input gram files and generate a -\textit{frequency-of-frequency} or \textit{FoF} file. A FoF file is a -list giving the number of times that an $n$-gram occurs just once, the -number of times that an $n$-gram occurs just twice, etc. The format of a -FoF file is described in section~\ref{s:FoFs}.\index{FoF file} - -As for all tools which process gram files, the input gram files must -each be sorted but they need not be sequenced. The counts in each -input file can be modified by applying a multiplier factor. Any $n$-gram -containing an id which is not in the word map is ignored, thus, the -supplied word map will typically contain just those word and class ids -required for the language model under construction (see -\htool{LSubset}). - -\htool{LFoF} also provides an option to generate an estimate -of the number of $n$-grams which would be included in the final language -model for each possible cutoff by setting \texttt{LPCALC: TRACE = 2}. - -\mysubsect{Use}{LFoF-Use} - -\htool{LFoF} is invoked by typing the command line -\begin{verbatim} - LFoF [options] wordmap foffile [mult] gramfile .. [mult] gramfile .. -\end{verbatim} -The given word map file is loaded and then the set of named gram files -are merged to form a single sorted stream of $n$-grams. Any $n$-grams -containing ids not in the word map are ignored. The list of input gram -files can be interspersed with multipliers. These are floating-point -format numbers which must begin with a plus or minus character -(e.g. \texttt{+1.0}, \texttt{-0.5}, etc.). The effect of a multiplier -\texttt{x} is to scale the $n$-gram counts in the following gram files by -the factor \texttt{x}. A multiplier stays in effect until it is -redefined. The output to \texttt{foffile} is a FoF file as described -in section~\ref{s:FoFs}. - -The allowable options to \htool{LFoF} are as follows - -\begin{optlist} - \ttitem{-f N} set the number of FoF entries to N (default 100). - \ttitem{-n N} Set $n$-gram size to \texttt{N} (defaults to max). -\end{optlist} -\stdopts{LFoF} - - -\mysubsect{Tracing}{LFoF-Tracing} - -\htool{LFoF} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} -\ttitem{00001} basic progress reporting -%\ttitem{00002} print FoF table every 100,000 input grams -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lFoF@\htool{LFoF}|)} - - - - - - - diff --git a/HTKBook/HTKRef/LGCopy.aux b/HTKBook/HTKRef/LGCopy.aux deleted file mode 100644 index 38371f8..0000000 --- a/HTKBook/HTKRef/LGCopy.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.27}LGCopy}{322}{section.17.27}} -\newlabel{s:LGCopy}{{17.27}{322}{LGCopy\relax }{section.17.27}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.27.1}Function}{322}{subsection.17.27.1}} -\newlabel{s:LGCopy-Function}{{17.27.1}{322}{Function\relax }{subsection.17.27.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.27.2}Use}{322}{subsection.17.27.2}} -\newlabel{s:LGCopy-Use}{{17.27.2}{322}{Use\relax }{subsection.17.27.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.27.3}Tracing}{323}{subsection.17.27.3}} -\newlabel{s:LGCopy-Tracing}{{17.27.3}{323}{Tracing\relax }{subsection.17.27.3}{}} -\@setckpt{HTKRef/LGCopy}{ -\setcounter{page}{324} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{27} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LGCopy.tex b/HTKBook/HTKRef/LGCopy.tex deleted file mode 100644 index 2d38c06..0000000 --- a/HTKBook/HTKRef/LGCopy.tex +++ /dev/null @@ -1,128 +0,0 @@ -% -% HLMBook - Steve Young 03/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LGCopy}{LGCopy} - -\mysubsect{Function}{LGCopy-Function} - -\index{lgcopy@\htool{LGCopy}|(} -This program will copy one or more input gram files to a set of one or -more output gram files. The input gram files must each be sorted but -they need not be sequenced. Unless word-to-class mapping is being -performed, the output files will, however, be sequenced. Hence, given -a collection of unsequenced gram files, \htool{LGCopy} can be used to -generate an equivalent sequenced set. This is useful for reducing the -number of parallel input streams that tools such as \htool{LBuild} -must maintain, thereby improving efficiency. - -As for all tools which can input gram files, the counts in each input -file can be modified by applying a multiplier factor. Note, however, -that since the counts within gram files are stored as integers, use of -non-integer multiplier factors will lead to the counts being rounded -in the output gram files. - -In addition to manipulating the counts, the \texttt{-n} option also -allows the input grams to be truncated by summing the counts of all -equivalenced grams. For example, if the 3-grams \texttt{a x y 5} and -\texttt{b x y 3} were truncated to 2-grams, then \texttt{x y 8} would -be output. Truncation is performed before any of the mapping -operations described below. - -\htool{LGCopy} also provides options to map gram words to classes -using a class map file and filter the resulting output. The most -common use of this facility is to map out-of-vocabulary (OOV) words -into the unknown symbol in preparation for building a conventional -word $n$-gram language model for a specific vocabulary. However, it can -also be used to prepare for building a class-based $n$-gram language -model. - -Word-to-class mapping is enabled by specifying the class map file with -the \texttt{-w} option. Each $n$-gram word is then replaced by its class -symbol as defined by the class map. If the \texttt{-o} option is also -specified, only $n$-grams containing class symbols are stored in the -internal buffer. - -\mysubsect{Use}{LGCopy-Use} - -\htool{LGCopy} is invoked by typing the command line -\begin{verbatim} - LGCopy [options] wordmap [mult] gramfile .... [mult] gramfile ... -\end{verbatim} -The given word map file is loaded and then the set of named gram files -are input in parallel to form a single sorted stream of $n$-grams. Counts -for identical $n$-grams in multiple source files are summed. The merged -stream is written to a sequence of output gram files named -\texttt{data.0}, \texttt{data.1}, etc. The list of input gram files -can be interspersed with multipliers. These are floating-point format -numbers which must begin with a plus or minus character -(e.g. \texttt{+1.0}, \texttt{-0.5}, etc.). The effect of a multiplier -\texttt{x} is to scale the $n$-gram counts in the following gram files by -the factor \texttt{x}. The resulting scaled counts are rounded to the -nearest integer on output. A multiplier stays in effect until it is -redefined. The scaled input grams can be truncated, mapped and -filtered before being output as described above. - -The allowable options to \htool{LGCopy} are as follows - -\begin{optlist} - - \ttitem{-a n} Set the maximum number of new classes that can be - added to the word map (default 1000, only used in conjuction with - class maps). - - \ttitem{-b n} Set the internal gram buffer size to n (default - 2000000). \htool{LGCopy} stores incoming $n$-grams in this buffer. - When the buffer is full, the contents are sorted and written to an - output gram file. Thus, the buffer size determines the amount of - process memory that \htool{LGCopy} will use and the size of the - individual output gram files. - - \ttitem{-d} Directory in which to store the output gram files - (default current directory). - - \ttitem{-i n} Set the index of the first gram file output to be n - (default 0). - - \ttitem{-m s} Save class-resolved word map to \texttt{fn}. - - \ttitem{-n n} Normally, $n$-gram size is preserved from input to - output. This option allows the output $n$-gram size to be truncated - to n where n must be less than the input $n$-gram size. - - \ttitem{-o n} Output class mappings only. Normally all input $n$-grams - are copied to the output, however, if a class map is specified, this - options forces the tool to output only $n$-grams containing at least - one class symbol. - - \ttitem{-r s} Set the root name of the output gram files to - \texttt{s} (default ``data''). - - \ttitem{-w fn} Load class map from \texttt{fn}. - -\end{optlist} -\stdopts{LGCopy} - - -\mysubsect{Tracing}{LGCopy-Tracing} - -\htool{LGCopy} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\ttitem{00002} monitor buffer save operations. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lgcopy@\htool{LGCopy}|)} - - - - - - - diff --git a/HTKBook/HTKRef/LGList.aux b/HTKBook/HTKRef/LGList.aux deleted file mode 100644 index 367ee65..0000000 --- a/HTKBook/HTKRef/LGList.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.28}LGList}{324}{section.17.28}} -\newlabel{s:LGList}{{17.28}{324}{LGList\relax }{section.17.28}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.28.1}Function}{324}{subsection.17.28.1}} -\newlabel{s:LGList-Function}{{17.28.1}{324}{Function\relax }{subsection.17.28.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.28.2}Use}{324}{subsection.17.28.2}} -\newlabel{s:LGList-Use}{{17.28.2}{324}{Use\relax }{subsection.17.28.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.28.3}Tracing}{324}{subsection.17.28.3}} -\newlabel{s:LGList-Tracing}{{17.28.3}{324}{Tracing\relax }{subsection.17.28.3}{}} -\@setckpt{HTKRef/LGList}{ -\setcounter{page}{325} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{28} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LGList.tex b/HTKBook/HTKRef/LGList.tex deleted file mode 100644 index 2228da5..0000000 --- a/HTKBook/HTKRef/LGList.tex +++ /dev/null @@ -1,63 +0,0 @@ -% -% HLMBook - Steve Young 07/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LGList}{LGList} - -\mysubsect{Function}{LGList-Function} - -\index{lglist@\htool{LGList}|(} -This program will list the contents of one or more \HLM\ gram files. -In addition to printing the whole file, an option is provided to print -just those $n$-grams containing certain specified words and/or ids. It -is mainly used for debugging. - -\mysubsect{Use}{LGList-Use} - -\htool{LGList} is invoked by typing the command line -\begin{verbatim} - LGList [options] wmapfile gramfile .... -\end{verbatim} -The specified gram files are printed to the output. The $n$-grams are -printed one per line following a summary of the header information. -Each $n$-gram is printed in the form of a list of words followed by the -count. - -Normally all $n$-grams are printed. However, if either of the options -\texttt{-i} or \texttt{-f} are used to add words to a \textit{filter -list}, then only those $n$-grams which include a word in the filter list -are printed. - -The allowable options to \htool{LGList} are as follows - -\begin{optlist} - \ttitem{-f w} Add word \texttt{w} to the filter list. This option - can be repeated, it can also be mixed with uses of the - \texttt{-i} option. - \ttitem{-i n} Add word with id \texttt{n} to the filter list. This - option can be repeated, it can also be mixed with uses of the - \texttt{-f} option. -\end{optlist} -\stdopts{LGList} - -\mysubsect{Tracing}{LGList-Tracing} - -\htool{LGList} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lglist@\htool{LGList}|)} - - - - - - - diff --git a/HTKBook/HTKRef/LGPrep.aux b/HTKBook/HTKRef/LGPrep.aux deleted file mode 100644 index 3bfcce1..0000000 --- a/HTKBook/HTKRef/LGPrep.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.29}LGPrep}{325}{section.17.29}} -\newlabel{s:LGPrep}{{17.29}{325}{LGPrep\relax }{section.17.29}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.29.1}Function}{325}{subsection.17.29.1}} -\newlabel{s:LGPrep-Function}{{17.29.1}{325}{Function\relax }{subsection.17.29.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.29.2}Use}{326}{subsection.17.29.2}} -\newlabel{s:LGPrep-Use}{{17.29.2}{326}{Use\relax }{subsection.17.29.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.29.3}Tracing}{327}{subsection.17.29.3}} -\newlabel{s:LGPrep-Tracing}{{17.29.3}{327}{Tracing\relax }{subsection.17.29.3}{}} -\@setckpt{HTKRef/LGPrep}{ -\setcounter{page}{328} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{29} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LGPrep.tex b/HTKBook/HTKRef/LGPrep.tex deleted file mode 100644 index 77c9aff..0000000 --- a/HTKBook/HTKRef/LGPrep.tex +++ /dev/null @@ -1,218 +0,0 @@ -% -% HLMBook - Steve Young 08/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LGPrep}{LGPrep} - -\mysubsect{Function}{LGPrep-Function} - -\index{lgprep@\htool{LGPrep}|(} - -The function of this tool is to scan a language model training text -and generate a set of gram files holding the $n$-grams seen in the text -along with their counts. By default, the output gram files are named -\texttt{gram.0}, \texttt{gram.1}, \texttt{gram.2}, etc. However, the -root name can be changed using the \texttt{-r} option and the start -index can be set using the -\texttt{-i} option. - -Each output gram file is sorted but the files themselves will not be -sequenced (see section~\ref{s:gramfs}). Thus, when using -\htool{LGPrep} with substantial training texts, it is good practice to -subsequently copy the complete set of output gram files using -\htool{LGCopy} to reorder them into sequence. This process will also -remove duplicate occurrences making the resultant files more compact -and faster to read by the \HLM\ processing tools. - -Since \htool{LGPrep} will often encounter new words in its input, it -is necessary to update the word map. The normal operation therefore -is that \htool{LGPrep} begins by reading in a word map containing all -the word ids required to decode all previously generated gram files. -This word map is then updated to include all the new words seen in the -current input text. On completion, the updated word map is output to -a file of the same name as the input word map in the directory used to -store the new gram files. Alternatively, it can be output to a -specified file using the \texttt{-w} option. The sequence number in -the header of the newly created word map will be one greater than that -of the original. - -\htool{LGPrep} can also apply a set of ``match and replace'' edit -rules to the input text stream. The purpose of this facility is not -to replace input text conditioning filters but to make simple changes -to the text after the main gram files have been generated. The -editing works by passing the text through a window one word at a time. -The edit rules consist of a pattern and a replacement text. At each -step, the pattern of each rule is matched against the window and if a -match occurs, then the matched word sequence is replaced by the string -in the replaced part of the rule. Two sets of gram files are -generated by this process. A ``negative'' set of gram files contain -$n$-grams corresponding to just the text strings which were modified and -a ``positive'' set of gram files contain $n$-grams corresponding to the -modified text. All text for which no rules matched is ignored and -generates no gram file output. Once the positive and negative gram -files have been generated, the positive grams are added (i.e. input -with a weight of +1) to the original set of gram files and the -negative grams are subtracted (i.e. input with a weight of -1). The -net result is that the tool reading the full set of gram files -receives a stream of $n$-grams which will be identical to the stream that -it would have received if the editing commands had been applied to the -text source when the original main gram file set had been generated. - -The edit rules are stored in a file and read in using the \texttt{-f} -option. They consist of set definitions and rule definitions, each -written on a separate line. Each set defines a set of words and is -identified by an integer in the range 0 to 255 -\begin{verbatim} - = '#' ... . -\end{verbatim} -For example, -\begin{verbatim} - #4 red green blue -\end{verbatim} -defines set number 4 as being the 3 words ``red", ``green" and ``blue". Rules -consist of an \textit{application factor}, a \textit{pattern} and and a -\textit{replacement} -\begin{verbatim} - = : - = { | '*' | ! | % } - = { '$' | string } % $' - work around emacs - % colouring bug -\end{verbatim} -The application factor should be a real number in the range 0 to 1 and -it specifies the proportion of occurrences of the pattern which should -be replaced. The pattern consists of a sequence of words, wildcard -symbols (``\texttt{*}") which match anyword, and set references of the -form \texttt{\%n} denoting any word which is in set number \texttt{n} -and \texttt{!n} denoting any word which is not in set number -\texttt{n}. The replacement consists of a sequence of words and field -references of the form \texttt{\$i} which denotes the \texttt{i'th} -matching word in the input. - -As an example, the following rules would translate 50\% of the -occurrences of numbers in the form ``one hundred fifty" to ``one -hundred and fifty" and 30\% of the occurrences of ``one hundred" to -``a hundred". -\begin{verbatim} - #0 one two three four five six seven eight nine fifty sixty seventy - #1 hundred - 0.5 * * hundred %0 * * : $0 $1 $2 and $3 $4 $5 - 0.3 * * !0 one %1 * * : $0 $1 $2 a $4 $5 $6 -\end{verbatim} -Note finally, that \htool{LGPrep} processes edited text in a parallel -stream to normal text, so it is possible to generate edited gram files -whilst generating the main gram file set. However, normally the main -gram files already exist and so it is normal to suppress gram file -generation using the \texttt{-z} option when using edit rules. - -\mysubsect{Use}{LGPrep-Use} - -\htool{LGPrep} is invoked by typing the command line -\begin{verbatim} - LGPrep [options] wordmap [textfile ...] -\end{verbatim} -Each text file is processed in turn and treated as a continuous stream -of words. If no text files are specified standard input is used and -this is the more usual case since it allows the input text source to -be filtered before input to -\htool{LGPrep}, for example, using \htool{LCond.pl} (in {\tt LMTutorial/extras/}). - -Each $n$-gram in the input stream is stored in a buffer. When the buffer -is full it is sorted and multiple occurrences of the same $n$-gram are -merged and the count set accordingly. When this process ceases to -yield sufficient buffer space, the contents are written to an output -gram file. - -The word map file defines the mapping of source words to the numeric -ids used within \HLM\ tools. Any words not in the map are allocated -new ids and added to the map. On completion, a new map with the same -name (unless specified otherwise with the \texttt{-w} option) is -output to the same directory as the output gram files. To initialise -the first invocation of this updating process, a word map file should -be created with a text editor containing the following: -\begin{verbatim} - Name=xxxx - SeqNo=0 - Language=yyyy - Entries=0 - Fields=ID - \Words\ -\end{verbatim} -where \texttt{xxxx} is an arbitrarily chosen name for the word map and -\texttt{yyyy} is the language. Fields specifying the escaping mode to use -(\texttt{HTK} or \texttt{RAW}) and changing \texttt{Fields} to include -frequency counts in the output (i.e.\ \texttt{FIELDS = ID,WFC}) can -also be given. Alternatively, they can be added to the output using -command line options. - -The allowable options to \htool{LGPrep} are as follows - -\begin{optlist} - \ttitem{-a n} Allow upto \texttt{n} new words in input texts - (default 100000). - - \ttitem{-b n} Set the internal gram buffer size to n (default - 2000000). \htool{LGPrep} stores incoming $n$-grams in this buffer. - When the buffer is full, the contents are sorted and written to an - output gram file. Thus, the buffer size determines the amount of - process memory that \htool{LGPrep} will use and the size of the - individual output gram files. - - \ttitem{-c} Add word counts to the output word map. This overrides - the setting in the input word map (default off). - - \ttitem{-d} Directory in which to store the output gram files - (default current directory). - - \ttitem{-e n} Set the internal edited gram buffer size to \texttt{n} - (default 100000). - - \ttitem{-f s} Fix (i.e. edit) the text source using the rules in - \texttt{s}. - - \ttitem{-h} Do not use HTK escaping in the output word map (default - on). - - \ttitem{-i n} Set the index of the first gram file output - to be \texttt{n} (default 0). - - \ttitem{-n n} Set the output $n$-gram size to \texttt{n} (default 3). - - \ttitem{-q} Tag words at sentence start with underscore (\_). - - \ttitem{-r s} Set the root name of the output gram files to - \texttt{s} (default ``gram''). - - \ttitem{-s s} Write the string \texttt{s} into the source field of - the output gram files. This string should be a comment - describing the text source. - - \ttitem{-w s} Write the output map file to \texttt{s} (default same - as input map name stored in the output gram directory). - - \ttitem{-z} Suppress gram file output. This option allows - \htool{LGPrep} to be used just to compute a word frequency map. - It is also normally applied when applying edit rules to the - input. - - \stdoptQ -\end{optlist} -\stdopts{LGPrep} - -\mysubsect{Tracing}{LGPrep-Tracing} - -\htool{LGPrep} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} -\ttitem{00001} basic progress reporting. -\ttitem{00002} monitor buffer save operations. -\ttitem{00004} Trace word input stream. -\ttitem{00010} Trace shift register input. -\ttitem{00020} Rule input monitoring. -\ttitem{00040} Print rule set. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lgprep@\htool{LGPrep}|)} diff --git a/HTKBook/HTKRef/LLink.aux b/HTKBook/HTKRef/LLink.aux deleted file mode 100644 index 223b786..0000000 --- a/HTKBook/HTKRef/LLink.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.30}LLink}{328}{section.17.30}} -\newlabel{s:LLink}{{17.30}{328}{LLink\relax }{section.17.30}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.30.1}Function}{328}{subsection.17.30.1}} -\newlabel{s:Function1}{{17.30.1}{328}{Function\relax }{subsection.17.30.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.30.2}Use}{328}{subsection.17.30.2}} -\newlabel{s:LLink-Use}{{17.30.2}{328}{Use\relax }{subsection.17.30.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.30.3}Tracing}{328}{subsection.17.30.3}} -\newlabel{s:LLink-Tracing}{{17.30.3}{328}{Tracing\relax }{subsection.17.30.3}{}} -\@setckpt{HTKRef/LLink}{ -\setcounter{page}{329} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{30} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LLink.tex b/HTKBook/HTKRef/LLink.tex deleted file mode 100644 index 45d0059..0000000 --- a/HTKBook/HTKRef/LLink.tex +++ /dev/null @@ -1,68 +0,0 @@ -% -% This file by Gareth Moore 12/2/02 -% New -s flag added 18/2/02 -% - -\newpage -\mysect{LLink}{LLink} - -\mysubsect{Function}{Function1} - -\index{ladapt@\htool{LLink}|(} -This tool will create the link file necessary to use the word-given-class and -class-given-class components of a class $n$-gram language model - -Having created the class $n$-gram component with \htool{LBuild} and -the word-given-class component with \htool{Cluster}, you can then -create a third file which points to these two other files by using the -\htool{LLink} tool. This file is the language model you pass to -utilities such as \htool{LPlex}. Alternatively if run with its {\tt --s} option then \htool{LLink} will link the two components together -and create a single resulting file. - - -\mysubsect{Use}{LLink-Use} - -\htool{LLink} is invoked by the command line -\begin{verbatim} - LLink [options] word-classLMfile class-classLMfile outLMfile -\end{verbatim} -The tool checks for the existence of the two existing component -language model files, with {\tt word-} {\tt classLMfile} being the -word-given-class file from \htool{Cluster} and {\tt class-classLMfile} -being the class $n$-gram model generated by \htool{LBuild}. The -word-given-class file is read to discover whether it is a count or -probability-based file, and then an appropriate link file is written -to {\tt outLMfile}. This link file is then suitable for passing to -\htool{LPlex}. Optionally you may overrule the count/probability -distinction by using the {\tt -c} and {\tt -p} parameters. Passing -the {\tt -s} parameter joins the two files into one single resulting -language model rather than creating a third link file which points to -the other two. - -The allowable options to \htool{LLink} are as follows -\begin{optlist} - \ttitem{-c} Force the link file to describe the word-given-class - component as a `counts' file. - - \ttitem{-p} Force the link file to describe the word-given-class - component as a `probabilities' file. - - \ttitem{-s} Write a single file containing both the word-class - component and the class-class component. This single - resulting file is then a self-contained language model - requiring no other files. - -\end{optlist} -\stdopts{LLink} - -\mysubsect{Tracing}{LLink-Tracing} - -\htool{LLink} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{ladapt@\htool{LLink}|)} diff --git a/HTKBook/HTKRef/LMerge.aux b/HTKBook/HTKRef/LMerge.aux deleted file mode 100644 index fd116b5..0000000 --- a/HTKBook/HTKRef/LMerge.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.31}LMerge}{329}{section.17.31}} -\newlabel{s:LMerge}{{17.31}{329}{LMerge\relax }{section.17.31}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.31.1}Function}{329}{subsection.17.31.1}} -\newlabel{s:LMerge-Function}{{17.31.1}{329}{Function\relax }{subsection.17.31.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.31.2}Use}{329}{subsection.17.31.2}} -\newlabel{s:LMerge-Use}{{17.31.2}{329}{Use\relax }{subsection.17.31.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.31.3}Tracing}{329}{subsection.17.31.3}} -\newlabel{s:LMerge-Tracing}{{17.31.3}{329}{Tracing\relax }{subsection.17.31.3}{}} -\@setckpt{HTKRef/LMerge}{ -\setcounter{page}{330} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{31} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LMerge.tex b/HTKBook/HTKRef/LMerge.tex deleted file mode 100644 index 1415f56..0000000 --- a/HTKBook/HTKRef/LMerge.tex +++ /dev/null @@ -1,54 +0,0 @@ -% -% HLMBook - V.Valtchev 26/05/98 -% -% Updated - Gareth Moore 15/01/02 - 1/3/02 -% - -\newpage -\mysect{LMerge}{LMerge} - -\mysubsect{Function}{LMerge-Function} - -\index{lmerge@\htool{LMerge}|(} -This program combines one or more language models to produce an output -model for a specified vocabulary. You can only apply it to word -models or the class $n$-gram component of a class model -- that is, -you cannot apply it to full class models. - -\mysubsect{Use}{LMerge-Use} - -\htool{LMerge} is invoked by typing the command line -\begin{verbatim} - LMerge [options] wordList inModel outModel -\end{verbatim} -The word map and class map are loaded, word-class mappings performed and -a new map is saved to \texttt{outMapFile}. The output map's name will be -set to -\begin{verbatim} -Name = inMapName%%classMapName -\end{verbatim} - -The allowable options to \htool{LMerge} are as follows - -\begin{optlist} -{ - \ttitem{-f s} Set the output LM file format to \texttt{s}. Available options - are \texttt{text}, \texttt{bin} or \texttt{ultra} (default \texttt{bin}). - - \ttitem{-i f fn} Interpolate with model \texttt{fn} using weight \texttt{f}. - - \ttitem{-n n} Produce an \texttt{n}-gram model. - -} -\end{optlist} -\stdopts{LMerge} - - -\mysubsect{Tracing}{LMerge-Tracing} - -\htool{LMerge} Does not provide any trace options. However, trace -information is available from the underlying library modules -\htool{LWMap} and \htool{LCMap} by setting the appropriate trace -configuration parameters. - -\index{lmerge@\htool{LMerge}|)} diff --git a/HTKBook/HTKRef/LNewMap.aux b/HTKBook/HTKRef/LNewMap.aux deleted file mode 100644 index 6596cf0..0000000 --- a/HTKBook/HTKRef/LNewMap.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.32}LNewMap}{330}{section.17.32}} -\newlabel{s:LNewMap}{{17.32}{330}{LNewMap\relax }{section.17.32}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.32.1}Function}{330}{subsection.17.32.1}} -\newlabel{s:Function2}{{17.32.1}{330}{Function\relax }{subsection.17.32.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.32.2}Use}{330}{subsection.17.32.2}} -\newlabel{s:LNewMap-Use}{{17.32.2}{330}{Use\relax }{subsection.17.32.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.32.3}Tracing}{330}{subsection.17.32.3}} -\newlabel{s:LNewMap-Tracing}{{17.32.3}{330}{Tracing\relax }{subsection.17.32.3}{}} -\@setckpt{HTKRef/LNewMap}{ -\setcounter{page}{331} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{32} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LNewMap.tex b/HTKBook/HTKRef/LNewMap.tex deleted file mode 100644 index 84d68de..0000000 --- a/HTKBook/HTKRef/LNewMap.tex +++ /dev/null @@ -1,47 +0,0 @@ -% -% This file by Gareth Moore 12/2/02 -% - -\newpage -\mysect{LNewMap}{LNewMap} - -\mysubsect{Function}{Function2} - -\index{ladapt@\htool{LNewMap}|(} -This tool will create an empty word map suitable for use with -\htool{LGPrep}. - -\mysubsect{Use}{LNewMap-Use} - -\htool{LNewMap} is invoked by the command line -\begin{verbatim} - LNewMap [options] name mapfn -\end{verbatim} -A new word map is created with the file name `mapfn', with its -constituent {\tt Name} header set to the text passed in `name'. -It also creates default {\tt SeqNo}, {\tt Entries}, {\tt EscMode} and {\tt Fields} -headers in the file. The contents of the {\tt EscMode} header may be -altered from the default of {\tt RAW} using the {\tt -e} option, whilst -the {\tt Fields} header contains {\tt ID} but may be added to using the {\tt --f} option. - -The allowable options to \htool{LNewMap} are therefore -\begin{optlist} - \ttitem{-e esc} Change the contents of the {\tt EscMode} header to - {\tt esc}. Default is {\tt RAW}. - - \ttitem{-f fld} Add the field {\tt fld} to the {\tt Fields} header. - -\end{optlist} -\stdopts{LNewMap} - -\mysubsect{Tracing}{LNewMap-Tracing} - -\htool{LNewMap} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{ladapt@\htool{LNewMap}|)} diff --git a/HTKBook/HTKRef/LNorm.aux b/HTKBook/HTKRef/LNorm.aux deleted file mode 100644 index a41b8b8..0000000 --- a/HTKBook/HTKRef/LNorm.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.33}LNorm}{331}{section.17.33}} -\newlabel{s:LNorm}{{17.33}{331}{LNorm\relax }{section.17.33}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.33.1}Function}{331}{subsection.17.33.1}} -\newlabel{s:LNorm-Function}{{17.33.1}{331}{Function\relax }{subsection.17.33.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.33.2}Use}{331}{subsection.17.33.2}} -\newlabel{s:LNorm-Use}{{17.33.2}{331}{Use\relax }{subsection.17.33.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.33.3}Tracing}{331}{subsection.17.33.3}} -\newlabel{s:LNorm-Tracing}{{17.33.3}{331}{Tracing\relax }{subsection.17.33.3}{}} -\@setckpt{HTKRef/LNorm}{ -\setcounter{page}{332} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{33} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LNorm.tex b/HTKBook/HTKRef/LNorm.tex deleted file mode 100644 index 22ee885..0000000 --- a/HTKBook/HTKRef/LNorm.tex +++ /dev/null @@ -1,63 +0,0 @@ -% -% Gareth Moore 27/03/02 -% - -\newpage -\mysect{LNorm}{LNorm} - -\mysubsect{Function}{LNorm-Function} - -\index{hlmcopy@\htool{LNorm}|(} -The basic function of this tool is to renormalise language models, -optionally pruning the vocabulary at the same time or applying cutoffs -or weighted discounts. - -\mysubsect{Use}{LNorm-Use} - -\htool{LNorm} is invoked by the command line -\begin{verbatim} - LNorm [options] inLMFile outLMFile -\end{verbatim} -This reads in the language model {\tt inLMFile} and writes a new -language model to {\tt outLMFile}, applying editing operations -controlled by the following options. In many respects it is similar -to \htool{HLMCopy}, but unlike \htool{HLMCopy} it will always -renormalise the resulting model. - -\begin{optlist} - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. - Pruning can be applied to the bigram and higher - components of a model ($n$>1). The pruning procedure will keep only - $n$-grams which have been observed more than $c$ times. Note - that this option is only applicable to count-based language - models. - - \ttitem{-d f} Set weighted discount pruning for \texttt{n}-gram - to \texttt{c} for Seymore-Rosenfeld pruning. Note that this - option is only applicable to count-based language models. - - \ttitem{-f s} Set the output language model format to {\tt s}. - Possible options are {\tt TEXT} for the standard ARPA-MIT - LM format, {\tt BIN} for Entropic {\em binary} format and - {\tt ULTRA} for Entropic {\em ultra} format. - - \ttitem{-n n} Save target model as $n$-gram. - - \ttitem{-w f} Read a word-list defining the output vocabulary from - {\tt f}. This will be used to select the vocabulary for - the output language model. - -\end{optlist} -\stdopts{LNorm} - -\mysubsect{Tracing}{LNorm-Tracing} - -\htool{LNorm} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlmcopy@\htool{LNorm}|)} diff --git a/HTKBook/HTKRef/LPlex.aux b/HTKBook/HTKRef/LPlex.aux deleted file mode 100644 index c4364da..0000000 --- a/HTKBook/HTKRef/LPlex.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.34}LPlex}{332}{section.17.34}} -\newlabel{s:LPlex}{{17.34}{332}{LPlex\relax }{section.17.34}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.34.1}Function}{332}{subsection.17.34.1}} -\newlabel{s:LPlex-Function}{{17.34.1}{332}{Function\relax }{subsection.17.34.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.34.2}Use}{332}{subsection.17.34.2}} -\newlabel{s:LPlex-Use}{{17.34.2}{332}{Use\relax }{subsection.17.34.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.34.3}Tracing}{333}{subsection.17.34.3}} -\newlabel{s:LPlex-Tracing}{{17.34.3}{333}{Tracing\relax }{subsection.17.34.3}{}} -\@setckpt{HTKRef/LPlex}{ -\setcounter{page}{334} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{34} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LPlex.tex b/HTKBook/HTKRef/LPlex.tex deleted file mode 100644 index 7903d6f..0000000 --- a/HTKBook/HTKRef/LPlex.tex +++ /dev/null @@ -1,96 +0,0 @@ -% -% HLMBook - Valtcho Valtchev 04/02/98 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LPlex}{LPlex} - -\mysubsect{Function}{LPlex-Function} - -\index{lplex@\htool{LPlex}|(} -This program computes the perplexity and out of vocabulary (OOV) statistics of -text data using one or more language models. The perplexity is calculated on -per-utterance basis. Each utterance in the text data should start with a -sentence start symbol ({\tt }) and finish with a sentence end ({\tt }) -symbol. The default values for the sentence markers can be changed via the -config parameters {\tt STARTWORD} and {\tt ENDWORD} respectively. Text data can -be supplied as an \HTK\ Master Label File (MLF) or as plain text ({\tt -t} -option). Multiple perplexity tests can be performed on the same texts using -separate $n$-gram components of the model(s). OOV words in the test data can be -handled in two ways. By default the probability of $n$-grams containing words -not in the lexicon is simply not calculated. This is useful for testing closed -vocabulary models on texts containing OOVs. If the {\tt -u} option is -specified, $n$-grams giving the probability of an OOV word conditioned on its -predecessors are discarded, however, the probability of words in the lexicon -can be conditioned on context including OOV words. The latter mode of operation -relies on the presence of the unknown class symbol ({\tt !!UNK}) in the -language model (the default value can be changed via the config parameter {\tt -UNKNOWNNAME}). If multiple models are specified ({\tt -i} option) the -probability of an $n$-gram will be calculated as a sum of the weighted -probabilities from each of the models. - -\mysubsect{Use}{LPlex-Use} - -\htool{LPlex} is invoked by the command line -\begin{verbatim} - LPlex [options] langmodel labelFiles ... -\end{verbatim} - -The allowable options to \htool{LPlex} are as follows -\begin{optlist} - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. Pruning can - be applied to the bigram (n=2) and trigram (n=3) components of the - model. The pruning procedure will keep only $n$-grams which have been - observed more than $c$ times. Note that this option is only applicable - to the model generated from the text data. - - \ttitem{-e s t} Label {\tt t} is made equivalent to label {\tt s}. More - precisely {\tt t} is assigned to an equivalence class of which {\tt s} - is the identifying member. The equivalence mappings are applied to the - text and should be used to map symbols in the text to symbols in the - language model's vocabulary. - - \ttitem{-i w fn} Interpolate with model {\tt fn} using weight {\tt w}. - - \ttitem{-n n} Perform a perplexity test using the $n$-gram component of the - model. Multiple tests can be specified. By default the tool will use - the maximum value of $n$ available. - - \ttitem{-o} Print a sorted list of unique OOV words encountered in the text - and their occurrence counts. - - \ttitem{-t} Text stream mode. If this option is set, the specified test files - will be assumed to contain plain text. - - \ttitem{-u} In this mode OOV words can be present in the $n$-gram context - when predicting words in the vocabulary. The conditional probability of - OOV words is still ignored. - - \ttitem{-w fn} Load word list in {\tt fn}. The word list will be used as the - restricting vocabulary for the perplexity calculation. If a word list - file is not specified, the target vocabulary will be constructed by - combining the vocabularies of all specified language models. - - \ttitem{-z s} Redefine the null equivalence class name to {\tt s}. The default - null class name is {\tt ???}. Any words mapped to the null class will be - deleted from the text. -\end{optlist} -\stdopts{LPlex} - -\mysubsect{Tracing}{LPlex-Tracing} - -\htool{LPlex} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} print information after each utterance processed. - \ttitem{00004} display encountered OOVs. - \ttitem{00010} display probability of each $n$-gram looked up. - \ttitem{00020} print each utterance and its perplexity. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lplex@\htool{LPlex}|)} diff --git a/HTKBook/HTKRef/LSubset.aux b/HTKBook/HTKRef/LSubset.aux deleted file mode 100644 index 889eb77..0000000 --- a/HTKBook/HTKRef/LSubset.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.35}LSubset}{334}{section.17.35}} -\newlabel{s:LSubset}{{17.35}{334}{LSubset\relax }{section.17.35}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.35.1}Function}{334}{subsection.17.35.1}} -\newlabel{s:LSubset-Function}{{17.35.1}{334}{Function\relax }{subsection.17.35.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.35.2}Use}{334}{subsection.17.35.2}} -\newlabel{s:LSubset-Use}{{17.35.2}{334}{Use\relax }{subsection.17.35.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.35.3}Tracing}{334}{subsection.17.35.3}} -\newlabel{s:LSubset-Tracing}{{17.35.3}{334}{Tracing\relax }{subsection.17.35.3}{}} -\@setckpt{HTKRef/LSubset}{ -\setcounter{page}{335} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{35} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LSubset.tex b/HTKBook/HTKRef/LSubset.tex deleted file mode 100644 index 0d2957e..0000000 --- a/HTKBook/HTKRef/LSubset.tex +++ /dev/null @@ -1,60 +0,0 @@ -% -% HLMBook - V.Valtchev 26/05/98 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LSubset}{LSubset} - -\mysubsect{Function}{LSubset-Function} - -\index{lsubset@\htool{LSubset}|(} -This program will resolve a word map against a class map and produce a -new word map which contains the class-mapped words. The tool is typically -used to generated a vocabulary-specific $n$-gram word map which is then -supplied to \htool{LBuild} to build the actual language models. - -All class symbols present in the class map will be added to the output -map. The \texttt{-a} option can be used to set the maximum number of -new class symbols in the final word map. Note that the word-class map -resolution procedure is identical to the the one used in \htool{LSubset} -when filtering $n$-gram files. - -\mysubsect{Use}{LSubset-Use} - -\htool{LSubset} is invoked by typing the command line -\begin{verbatim} - LSubset [options] inMapFile classMap outMapFile -\end{verbatim} -The word map and class map are loaded, word-class mappings performed and -a new map is saved to \texttt{outMapFile}. The output map's name will be -set to -\begin{verbatim} -Name = inMapName%%classMapName -\end{verbatim} - -The allowable options to \htool{LSubset} are as follows - -\begin{optlist} - - \ttitem{-a n} Set the maximum number of new classes that can be added - to the output map (default 1000). - -\end{optlist} -\stdopts{LSubset} - -\mysubsect{Tracing}{LSubset-Tracing} - -\htool{LSubset} does not provide any trace options. However, trace -information is available from the underlying library modules -\htool{LWMap} and \htool{LCMap} by seeting the appropriate trace -configuration parameters. - -\index{lsubset@\htool{LSubset}|)} - - - - - - diff --git a/HTKBook/HTKRef/tools.aux b/HTKBook/HTKRef/tools.aux deleted file mode 100644 index 1ffafec..0000000 --- a/HTKBook/HTKRef/tools.aux +++ /dev/null @@ -1,34 +0,0 @@ -\relax -\@setckpt{HTKRef/tools}{ -\setcounter{page}{251} -\setcounter{equation}{0} -\setcounter{enumi}{3} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{0} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{0} -\setcounter{subsection}{0} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{114} -\setcounter{Hfootnote}{78} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/tools.tex b/HTKBook/HTKRef/tools.tex deleted file mode 100644 index 4e69f9d..0000000 --- a/HTKBook/HTKRef/tools.tex +++ /dev/null @@ -1,91 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 23/09/95 -% - -% Define standard option descriptions - -%\stdopts{toolname} -\newcommand{\stdopts}[1]{ -\htool{#1} also supports the standard options \texttt{-A}, -\texttt{-C}, \texttt{-D}, \texttt{-S}, \texttt{-T}, and \texttt{-V} as described -in section~\ref{s:stdopts}. -} - -\newcommand{\stdoptB}{ - \ttitem{-B} Output HMM definition files in binary format. -} -\newcommand{\stdoptE}{ - \ttitem{-E dir [ext]} Parent transform directory and optional extension - for parent transforms. The default option is that no parent - transform is used. -} -\newcommand{\stdoptF}{ - \ttitem{-F fmt} Set the source data format to {\tt fmt}. -} -\newcommand{\stdoptG}{ - \ttitem{-G fmt} Set the label file format to {\tt fmt}. -} -\newcommand{\stdoptH}{ - \ttitem{-H mmf} Load HMM macro model file {\tt mmf}. This option - may be repeated to load multiple MMFs. -} -\newcommand{\stdoptI}{ - \ttitem{-I mlf} This loads the master label file {\tt mlf}. This option - may be repeated to load several MLFs. -} -\newcommand{\stdoptJ}{ - \ttitem{-J dir [ext]} Add directory to the list of possible input - transform directories. Only one of the options can specify the - extension to use for the input transforms. -} -\newcommand{\stdoptK}{ - \ttitem{-K dir [ext]} Output transform directory and optional extension - for output transforms. The default option is that there is no - output extension and the current transform directory is used. -} -\newcommand{\stdoptL}{ - \ttitem{-L dir} Search directory \texttt{dir} for label files (default - is to search current directory). -} -\newcommand{\stdoptM}{ - \ttitem{-M dir} Store output HMM macro model files in the directory \texttt{dir}. - If this option is not given, the new HMM definition will overwrite - the existing one. -} -\newcommand{\stdoptO}{ - \ttitem{-O fmt} Set the target data format to {\tt fmt}. -} -\newcommand{\stdoptP}{ - \ttitem{-P fmt} Set the target label format to {\tt fmt}. -} -\newcommand{\stdoptQ}{ - \ttitem{-Q} Print a summary of all commands supported by this tool. -} -\newcommand{\stdoptX}{ - \ttitem{-X ext} Set label file extension to {\tt ext} - (default is \texttt{lab}). -} - - -%%% Local Variables: -%%% mode: plain-tex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKXFigs/ClassLM.doc b/HTKBook/HTKXFigs/ClassLM.doc deleted file mode 100644 index 93f7d8a45a0f9093b8c10257845f349ad87e1292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27648 zcmeHQdvI078UN0GBsU>x0)!Be$4y8G0*0VMc@vUAq9%ZVFRFzEf(a(vkjEfQ+gt>M zK1M_Bj8vI1_?XgGDivy(>I~3YXB?+3b%=Y6dT<@c$R+87P%Q=(mszw zA|#gr2)gbIWPuN#KO@V^(tIMHj5@_i6hY0xq2gZ-hLv6*cCO=F63m zQ6d+w9T_XRlj0ETOvmnO<`bhY6gYgRyZ~1j1tC8^F^~e+6 zXCwU>3UD}GZmrkBmRFFk0uVLd=~J%VIqj>4R%kd8$@Jl5nmed?JH7Ui`9 zT8_@Iey4rxPRp^=1{2oh(()*W<#x*Zm6hLWtNLMRdCx3;pa`I-QoO^SuG~;0Vh0N2lXmMmwM@M*1!A^}FUPCLX%|YTsF(&Uc+o z`&zDk*Y=^F8W6RewXf}~-?gvPC-QYXr?1!*GVDP?a!P;f3tClTaxw>}g+F(w=7?W93RS|04k(qgSsBKfQ zrLHwIv#PDGCAhh%xuHE1+*NH2pw+Bs*j`KK+J=WZ@LJy4)VwJ(v!c1Kz5T|Gdh`O{tXMKW1i4P1Du~b;PYVK0w_ywV81C61d^3vH(^;2G)6b zz;(blU_3AZCvi{IR3>!}H;z zkA369uuPDW+qiN)mI8TW8lRt2C%KIW0$-OofnDX(jMhda5iv-MjWOFEBPQ+QX+~e# zF?Oj@G9-R){amcLt1> zYVmCaIs=9v4ylsmh$F><`oEgGPE@~7qVAk^tn2nOdu{!k8q<5COaQuE_dC&i^siAybxOI;Y3x+pGnaa`(> zxYRO>%FA>xQXDrNdp{YKW7^lOKeOeV3jHbuPp5=edf=!>BuzbWtc9j;9*L>jKBzOr zz=L&()NBH(Ch1QA3V|Y^1Yn!s?WhGnIZy%I4)BJ}9l&bfUSJ*23Ty**06T#_z+Ql5 zcnUZKJOexn90z_590Z~+j1XZuL-9(jw=jIdas%*E2jH3d;>-MEr<+Q{gojwK z`kDgU7+c$`-lyfYg8K)w3)A6}opSbcr;j90H!@DToDpA6s&90hbTvuR#cdO8uy8B` zE&(cMFGEifnM{`#CtdX)1}?kGianT(zR7z8=$GnFE5CQ~o&6i03h>*f zb;(nxpBL`fmmgoB6B%;|wb45lZ;0AUt_QJMs#^ipDsdZ7CKE4a!`Chx4$BozlUd^F zT?HxG5>UtE`G|3=4z?wo+e-^Ho(^(0VY7J2czXiXe|W23)%O{J&Y<{#ypuPr*J=Sq(ndo z$P(ye*|U@doF&nEAX4e!Wa=4VmW~q`_2|-t!ApVEfT~_o-dwcsAD~6%;A(9)pyjE| zNT&7iAtfsNtrSx>r%b18ze9F2TFc+Y;W}wPz|r1j6N$?9E7|qnYT2Bmow9wFZ2fuU z6f(F0Y5Gb*O)N!XO}?lmZ6PiaoSM8zHI1EQYU)C{;+M(WPZJj@PEDQxHPL$1MC&Ei zo0^KICn{4wX;OX0W47z5)Pyxm1^On3wBM_nvTt#akaOy(IzQgbmRE$n!+tXb zK3kx@J+R-~W#2GF*_6rFTnwKrVIbMlhA4X-R^pWX75K?yPalSCwphw$Z4Z?1*+Z1g z9$pg^VN2Rm*kATKkUUmh&b4H(L0xj=aaPr3vKpn;nR{A2UheH0<_${&ZO_(E`>>5V z?PJ$49~vG;dmLIBhGL}!!zu$cbHptm~(+2FlK9rcP@;oNKFzUiC zy>I47>o-ntYvt6Go>UWSnVJ%hNa_7Fal7W!G$N@c);2XI9+5^wHReON^g=@a8TaxGQ^$c)M2xE=Q|Yj` z=cUv!h#0E>ju(eSBv)YR9Y4r?2N?n zP$tWBcM{plhG;9cD9YyOn@sldA?BOoE?XW!dIsTMgsoLy*D>o=OJ!PJqqI8bBU*hg zv*f7Ja!^KDyAA_V@$13pn9iP+EpMt!nrnWaHw{sic+D$7eQjfs;qMJ%DPqVdwK~D# zUOBFqxpL75LYkieE_qz%s?~=TU-OX(;YyyXQ?-I{@KGqm<4RAh0v!B8yi+#$oXNd- zXEC&V4nE{_O{!*NywhnutC?xJzEg9l;`Z@*EX1_TA7?_ReD*<>k9^K!PX0~cbN1o9 zphg~t{9EwO{4oy44d&gHVcK_&m7b%0g~hj*kDFieI7U|jPW|)2XW7VSUvtV|2tIin zc~yVGJDs*q8Nw_Z^T#$%`E;7kR>iW>Mr^BEKf0;frgML*-3wFjgHHTLxg)G8+>%WO z763~D9KY;W+pBU>9n^5L%i}4Ycq*>@svO z1FP7t%h)Yh@u_krPURm2Lb4rCQgJR3b!IHah8XpX4YP8qa=RhQ<4N)QeSVMEw{Is( zEE3jolp+w;;uO9GCTItH1^n&sS3@tqP;3Q%Hss*!!f$wt)D(|j*P_lmVn~>eH8^2y z!Iy%N`mS;F6s3JciqAurQ2SDtzX_U}A)x>jur07ZPkPUywi=OpG_dFDH^2Gk`pw&q z)ISo4RuWBV4tS{iY(`|&^-)z)Q1ZPJ_b>=7*Cn+;AhpMT0*jViyV@}NWy8LkkcL)f zvnH;_u|rz!=G`M%Pr7Ala;#siUT^4)WTEDlh`fs`$0XL32<(uNi296xlm=S0=@JhD zi8)r%gx=@qhko=#r(-)jzxU~nK3&Wc$V>$4w!0{j0NpZ1-Rc21KjWL2Y45) z8yE}loPc}j9)SDyBLMg9#{hf>QRfBRSDywb`?mo1(|SKo+0~(z25IVOw(p7c-k9e( zq#w;pS9%ak=ubojn2z#;l7TmdxbtVu*Fr;slEpZ#b1mRnz_oyD0oMYq1zZcb7H}=# zTEMk{YXR2+*NO%7UYPr5eq-idn>%5CujjXVey8XE@4)>#_vYNE^IJUk{oKoQpHDvb z^Zf43f2p2(dhYx40Di9?2jDKHx_7~=P26qc-m^-V55EAI3={%Iz!abupj=)#;sv|u zzzpC4NG@hrJ zXF2ees~7807G9+OWqe%8QD;RYSK^RGlSL7n?3qp+rJyuZ^P}RO86V`dw1Sv)4ysTOiso@KP}FFJ6Qdc%m257&X3z~ z)XF<^tovJ`eY46FDIK`s#$VYdc2kF8{~*O#_V@QI`Oxw+7y3DFvFvmdoy<*T1WUhx zA3^cPV5_Xe4ZtnQlJ?_|!ug@8*?jhkkbp3BO$h{nJRJR68rv?%P1pT@TEIZ6fYJqvWvyLu{)~XJiIC)pk10bWvNhqinzL+g9j+0X3qN^h zGMNn7mjUn^_g`dzH@^9-ENdwXiM&&LgpDYImW4yZ?~90BAX|29*>TV7_q?vSIgheX zy)+^9$xe*y*goUXUl>x-60QLaWXb-bTauGjhPtLv-NFnk|S4*Sq9-EMwAr5<)6%IgQT z99>==rhU9l%klDx@#}hNd6dI?`{mv5>N^D64k2Ebrx+di(r9_QKJU2wC^c*T^NSBZ z>-Jm`-S2)2yG(%~olncu<+fqhd0?{t(dl#t(GTeUiu^l3by&x%NIZ1^)zsgf{;kSio4oYk~3hhPI{amf7|#m)Y&h)~{H$eC_)7r5$!%#F|h=w;~bkwYPQm#0ILW zIugreO(!J$0{xPxuR&)#Rc@u$)fJwj< zpaEzEW&v}6xxm%HHNYaE8CU|W1Xcm7fezqCU?Z>@hyo7+4*_2T_&$01t<$faK6(7* z<0pUl)000reBkht-#u{n8;4&${PmM#RKc+mTTufAVoypClE`9HZbFv5F#@}D#hQW&aNPv&Nb^u9ZO zfR+pL?EtYggA>sVR&Sex`hdZR#WdtfwJ(iK=6n8Bw97PLI$#5Ad)?-`y%&S$Z}W4t z_4{7apHJYOf&$(u7;`>){v&z3H5hY0_IKO2s?Mf-s^jqOs9v`}$LEl84wa`djfjOgM#@DNNJY99-d)mSwOC@+;B?Tk z(l{#|FO8?L@W_%d*q}9OW`Rqor+F9)7z-E+7z-E+7z-E+7z-E+7z-E+7z-E+7z_Mc zEl?-bQj0zKK2Z0<1mthT0sg5>02CjcMV%Yspm2@EB_X{Ml^$^U?KL>l8vodxQU^q5 zTDDxba-yuo>Gci3rZy`SMYy-EEHVHj0c7#HR$1EeX68|xK~!eH*485wlWov52u(?` zWgYwpV7q$uOBZ;{QJOx)(yfb>29$2^i3uyfFzv|m3|eS9U;_<6BhUm~ z1+)Tp0s8=67XpDA?PG|J5_7p)M=n=u&E+z!<0$uf76~qwJKg2#GUrO*84a(`th`^^=Iw z8&TahQbrDswcwm1F^&zko+5a#Es>kW$hPEE_@@EhelQ2&xxh8RB49Dl3@iaw0;_-< z0gOV~3`Btkfro*w0_vIwY0Aa(3>1iSqDu4T8@sst-6cn@qt+3ObsLj+cE;NU@bO- z>cj7;&>Fxj(Fv_H!QX}Ahva4^m0i|VnEa36UeY+pfD@4=(8;=2D+~B*qV+(e(sK)F zpu({VCvNH)4?S$q6i|{qSU&>ko56A9PD5M1dLgd8;U3}gNnm@*FH+?mzL%V(gG+{A zN4S8FyU|CeBaPXvu#Rw6$8SoUdT^Te>!>QAgY~GJ;^=saGiu&?RAqH&TXEU(>!>K8 zgY`%?I6D3^qmYh@vvhC~^XsTApo8_G4z@>O9hGP4;G*i+Q9g=}L$jQEG;o;ZwN<&& zu?De$fYTmpr~~Vp{&@2udaKCqIFLjQ4N#|7vGn6E5~0OvLA@F{D!fwHLh7|eNi9Vm zV*mLOW+S%sXi{$|x~!DS9z&_L{Af})6fN~8eBEOEQ95lsnpDnw#an<PcTdAd!;J)GSp7+bLc&UxC-T1hynewTWrRCWf1;7~(KIAc?Dj$ZG%{CV1h^ z9o{qIouR!O_o(d{Z~X9%QS+)F%Xg+cBdxoBF1*x{X|dFJb!zy`@!QcpmZ-rANvsWB zKrgp6>^k^xrL$U6_lUx=^J13R1+6VNSpJ8)3>p#2Aiuxgl3Is}m z;ZQgb4Bhu>Wz&?FqZA=s2X;}tsQLh+*MQyux*mGD!|X%+6_A59IBW&1(vm<}zpCiM zvq&jEHpouo*@B!s2ral+X|E^=1?UQDUkbB#Llg5f!tkdednQWy7+R?dr571~Y|FN9 z0S^Nq;UHq;(3H+lLZjC(VJ=r?1-Bt6d0%P}W!yO}5GfrFAC!Z#d-q2dvU^^nZYa?9 zToKf&a84P86X>Z0DHhx_j_ss-X8t^FihXH1Q;n8iBJxKxIX2Y03W0+&li|$=It#tp zafJte;TSjTn2|FWyW#9)JEDgD_{3))dGp=1T{Yj^8^=;Nhn}SbSJ3XTM2X z4g(zbPXHVZhk!6}4B)Hjs{jY@p8;C>J%Hn>&Xr|@a-v%V%1N*dv=X!fl>5ESpjhLi z2NZ8kk_6=>@EK6<&+Y|fIoK|o$m!=RKK+P-bNrOGBASRLyX^LOJb^hkK9UCfYuex9=1;=M8HPWE{B#4H2D zJP#uMepR{qWnO=wKbuZN0ho{SZK*_vKJNTk@(yT-DOpTooUwqhfU$tFfU$tFfU$tF zfU$tFfU$tFfU&^;iUssunEPjbW9D9)J7IpW=eK(PZ&!Ys=l-30bMDjmEuQ;+?&TTJ z`vBa}^Sd|h1gbqf_x-pRsJ>S-4eu6npRO-l>5Enk;4yv%=uBW1a4~QRFdMiOVEp^Q z9M{h$Ms>SsBMk;A(us`G-(_xwtzn7sZp7eGJ95XVfh`gt~{|J&wG zuzmu!n_59T@p~uUhtt1m^6SbMo&^20ILB?V`YDJ1x0f!A+jG>)J9ljR>!E#{Dib+L z+>qn1tO~o?=V5)N8^2FTaJ>4`P95t^IR1*KglFw$^y(U~jB1 jsqX8wZ{XcFu+(6pze&e8T`6y0_4IAJml^tDwZK0Cc@GY+ diff --git a/HTKBook/HTKXFigs/LTool.doc b/HTKBook/HTKXFigs/LTool.doc deleted file mode 100644 index 696bc8a1531391db86cfc2cbd0adfaf8379cbe3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27648 zcmeHQe{fXA9sj<|U2=hh91uc4zyqS7U;se{M=?MkhZ4XffMazafj|P6943coE9MXj z*g7>-tNejuv|4Rdh~V^xV1cQlbo>GB6sC5>!HU*F+6g}tZL8PMXW#AR?&aX^fAE&Q9BI6M!@5^vF zO!im+Q9FE#EO7j(y)wNh(<$;9;-h;ZkjBQz^Pz8|?PAHcL<^%jmK&j_;@F_0~ z?a*>`ef2f%6C1R=SYB7+x?Nfx+jA4_Lw{;s ze(mdbzqB{vxgy%{!mtZ(EnQB_)b(zFJvf5W{}^<>^b5@E9Mpd$qWW5=o2l*otNqy8 zpVn(#PE##cUu*kN5A|w0YpU(5uQk=>lTn?|O0_>~s@p;8bhX=2%WXovXwTSuOw;yu zh!O1rUB;%i1#An%TA;7D+&5+Jbg%c8OTDGj%Sxutm{V3drNW!*Hu|MX%bvBMv~p#3 z_NLT?W!_*Q z;BQ3nxD*JfsBWmMt*`WZYwK683XTb^3W9)NT)Q|}8>p{rxHCJuq@l9TyR_C{O##zX zb$m?E&i0kpRQpjIUukt6(&kR9^e+aT7pzrPj5WY_J&t*vfq7m&FaQ_`3<3rN6M!p# zD}k$kiNGY_I-m$B0erw5pd7dbxD{9i)Bv@>dSC=!+YHGN7~meHeLkA8$oGSwFvpv@ck19X`_$(sNFU6OjC(J4%yFi%W?U9d~ig z*^&!Lo)T+a6~}C9*%IZtoE;6){m*;vi#RbIO4^L`$^uR&CddxnkNbgxz#-r;@GkH^ za1{6$I1ZcyV#nw>SLvdge~o40M8{p6SAF&sG$#K3&mJw~nrn;;TMvx!wjQ~5XsbJ8 z7%;rK#Z>@Y)GE@y^%X}xkk$MOR`Yf^zbwFMN3kr4G%CJ>y@QT;?r^Q>(OHXg#MxGi zOxvA3+AvIr13o4wHC}qQVS7-Tq{t{T#PDEu*f83#SKL>IoxsFHu5*D6>S<#UgivSo zS?Kx+_MlP+YkiDv)(15UrPgGp+7_@aU|YbpfNcTW0=5Ng3)mL0Enr)~wt#JcZ-)hP zB}e*T4ZZ~w2O}b3K3?#g2s>oHI?>ZDTq$mapl3XHx_-XXa_Wr5+9 zY1ik=oa-HOBe2kCI4f~o=gV|A0zn`mK86&_l%kX2$FT>I6@6QuhpTE?3O%c!DJWi< zi+BUDO#QBu8t`VIHuXqlD3jWvQ{f$;?NYL&0wt;-p&Gg4>pn>Oe~Q*lIFv3%k2Jp- zae-4wwnMnZFj7_&oeuBi8K7v*GL#&z%#vDZRJvn#Ofpc4C!BbIBOe$5;1Ca9vWScU zW&;a>)xbL70pMZaQQ#@ySpY9-JXrhvB zD7oY?un1cd&yBCc?FqF76LME3u!`XXd2w)P{Q^}7xz0!jcMFb9|m+z6Bb_=;2DSp*fL4I#1$P0j0sDZrfc?Nh;1F;aco%pdI0}3W90yJUr+`lZ z%2daxNJ9}Yj$o&mcKAlxWu;lS6n&JDA}w*>b}lnauEV0&Q&HvbdX6N z!dbV^EcVrw>u&qHTduop=&rtxs4&!Rn{hzoSrs+%BF^`yyhc<&RD|!;GZ;t62Y8Tk z5HJC_3gEc<;KJN+zb)o3M&dRfcqrV){0@}oSbq<|k)Pna!7Bq#P)9iYh8#O~3}f(+ z6CPYM4z7ekAvwb#Jx3gEOEB(x#I0V;umbluIpn9cU5%##UzCgl&ydVE3a|!;m@jk$ zW!O-bsJONZ$H+=g@jR(`xi73trw;)zLd1?6F}ElmjU!`V%^L%D zOpQgdBd`1Vc96>HmQ^a}9cJ%P>aj~qssDuZ#8Ufokjm+>RjO)}>T^n6JHnKDFI_TW zUDK3QPG__QIKj0_&5XX<+zszqgxqG$pFkrrQ1c3}$jwRZk*Rdt9HWENd+N}yQbSCW zwFYnX-FTte?zz;!R+RM@N!|)a2Mt_SSTz_4HSEeWHTW@%B-dbc(7>s=RYR|Y8V+H# z#5SzIFqMX0N<*wKa_VmF2~K5A+qVrdeX(V@$o!?e?Zr`XZ$sPwI;t zgX8ZTE=jCXG4RLKl@_4Xz*F6UP8*qGu-8}Q{Y86ba@81xmTJGPTDgEM&0(1P~tm9uv z$Df`Z{DSkpsa^7mE1}_cqeQCEhL=ENM+o}GRB-gDppMvJL@CE?01k_16K7Sg;};WB z{JO=NhG`OJTjqhE_W4UdTy1-hVn`n~=`BZG2j#=K;HHC4uh5C0${Q`|^J3DKUs=-U z$D}I{v7|4ENmqSsN&j9^=Wwqb$M>|s zP+EkA$)ijLihvn_58yq$4|o&U5Bvo<1iS;h3;Z283LFED11Eq_feb7)ItMahKCDY* z@KP;NCV~=7OSa837irw;A<80P@0|iz11Gk|Qp402t3QlQXMRRkqBeZ1vBk=*-coG! za_hMoX?aSrxybqeafW^X&&2a&e&0*35uUxDG4clC$^1?8HwrhfdE}XA@Oj?;>G9iz zC*UXFuv30HXqP;F*YBmc=~dwg{=GGS6rR!N`TWxt{6oS;M&vs(F5MR0zCM#4JOFXl zbS%K&z&)-4yMGaVzlg3u|Id(l*r#3r1hDg4ueew*MT41(xhc}zb&HMDIZE=HA9_d#=4%SpI!(n8kJ6xvy z&GipbRS5C7T<%1fDwOo&YW&4Yd(U*IgCVK*Dd?hFXkwXR==$5-8}p^@0PIwQ+T+W} zXR6je0z3?4sy7R)Kkfh+lo{YG9@2QODhlqP-AV#nJY?C`0-dJ(|% z%>aA81>h+49Kh$>Zvhu@0N~aDA5|P`J_6_${{=W1$c@PIf@1C?*MMSXVtzReT7hf6 zsaOPxxrO*axl{^*a=g6@6l)8)7nJp&7jg2zI5(IWM-qY=r>v67hU#DqK0pjK;As+Q z&jWrmeF4 zc%F4q@rPdh5x*2y@wUrfT%+TEyKgJ`v?=qF(r%<2ElKTQTfnw}Z2{W?wgqep*cPxY zU|YbpfNcTW0=5Ot#saC<|Bi!i9^6uRf#*T|VUJOxKi|srKew2(0Io}G0ItVZ0$lHh z0Iv5p0=z;cxDl`LE_#+5&7UI7i&N*43j!M1>H0oww$1#Ao0 z7O*W~Tfnw}Z2{W?wgqepoG%v8YhkXR`R<-;ZLWm*zMk)#`JSHtzXR9rT$^*9&Uf)# z_j4`Jbw1O%p67dS9>wCCp6mX6fG13FRyO+W3(jq-)%Jy;EH@N%7%&_t04@S921Wo( z#|dk}2}cNkHmRR*rDqd;OVe{`o?-XPKX6@g6mFLv+E>!z+0 zA4<>Ueu}x512RKhM1Gndo2mXXJ`NzMy&|%Uab7G4bT{|$iANm?Mqdi$O+;+AHT9s9!7S<{$7gX;DO-k(DJjZ&qV0wxW%?J zD50JFjAVL5zai7m!aD3>&cS)d<(-u5nA`{Zho)xpw_}dPoU_-ISPr?}(XXY^ckMAV z)`H)yxPjhJ!+^+ETgPrbzb)t3iUW&R)m7IA)p@|V K+4P%gf&T&I*oZX% diff --git a/HTKBook/HTKXFigs/Tool.labs.fig b/HTKBook/HTKXFigs/Tool.labs.fig deleted file mode 100644 index c596d80..0000000 --- a/HTKBook/HTKXFigs/Tool.labs.fig +++ /dev/null @@ -1,183 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 2 14 0.0000 4 150 630 4642 1449 Labels\001 -4 0 -1 0 0 2 14 0.0000 4 150 720 4109 2929 HLabel\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/Tool.model.fig b/HTKBook/HTKXFigs/Tool.model.fig deleted file mode 100644 index 462cf55..0000000 --- a/HTKBook/HTKXFigs/Tool.model.fig +++ /dev/null @@ -1,183 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 4895 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 4599 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 -4 0 -1 0 0 2 14 0.0000 4 150 1035 8743 1449 Definitions\001 -4 0 -1 0 0 2 14 0.0000 4 150 570 8937 1271 HMM\001 -4 0 -1 0 0 2 14 0.0000 4 150 765 6951 3402 HModel\001 -4 0 -1 0 0 2 14 0.0000 4 150 525 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/Tool.netdict.fig b/HTKBook/HTKXFigs/Tool.netdict.fig deleted file mode 100644 index 47b8ce0..0000000 --- a/HTKBook/HTKXFigs/Tool.netdict.fig +++ /dev/null @@ -1,185 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6765 4378 7720 4437 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4378 6765 4378 --6 -6 6765 4974 7720 5034 -6 6765 4974 7720 5034 -6 6765 4974 7720 5034 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4974 6765 4974 --6 --6 --6 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7720 3184 8377 2766 8377 3363 7720 3781 7720 3184 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 3781 3900 3781 3900 4378 2945 4378 2945 3781 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6765 3781 7720 3781 7720 4378 6765 4378 6765 3781 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7720 3781 8377 3363 8377 3960 7720 4378 7720 3781 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 5810 2587 6765 2587 7422 2169 6467 2169 5810 2587 5810 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 2587 3900 2587 3900 3781 2945 3781 2945 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4378 3900 4378 3900 4974 2945 4974 2945 4378 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 2945 2587 3602 2169 4557 2169 3900 2587 2945 2587 2945 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3900 2587 4855 2587 4855 3184 3900 3184 3900 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4974 3900 4974 3900 5571 2945 5571 2945 4974 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6765 3781 7720 3781 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6765 3781 7720 3781 7720 4378 6765 4378 6765 3781 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 2587 8377 2169 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4378 8377 3960 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 3781 8377 3363 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 3184 8377 2766 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 5571 8377 5154 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6825 3184 3900 3184 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4974 8377 4557 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7720 3781 8377 3363 8377 3960 7720 4378 7720 3781 7720 3781 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 4974 6765 4974 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6765 3184 6765 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8377 2766 8377 5154 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 3184 3900 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 4378 2945 4378 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2945 4974 3900 4974 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4855 2587 4855 3184 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2945 2587 3602 2169 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 2587 3900 3243 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 2587 4557 2169 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3900 1632 3900 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4855 1632 4855 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5810 1632 5810 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6765 1632 6765 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7720 1632 7720 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2945 3781 3900 3781 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4855 4974 4855 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5810 4974 5810 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8079 3243 9093 3243 9093 1632 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6288 5571 6288 6288 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5273 5571 5273 6288 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8079 4437 8795 4437 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8079 3840 8795 3840 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4378 3900 4378 3900 4974 2945 4974 2945 4378 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4974 3900 4974 3900 5571 2945 5571 2945 4974 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 4855 2587 5810 2587 5810 3184 4855 3184 4855 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6765 3184 7720 3184 7720 3781 6765 3781 6765 3184 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 5810 2587 6765 2587 6765 3184 5810 3184 5810 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 2587 7720 2587 7720 5571 2945 5571 2945 2587 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 6750 2587 7705 2587 7705 3184 6750 3184 6750 2587 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 6765 2587 7422 2169 8377 2169 7720 2587 6765 2587 6765 2587 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 4855 2587 5512 2169 6467 2169 5810 2587 4855 2587 4855 2587 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 5810 2587 6467 2169 7422 2169 6765 2587 5810 2587 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4200 2175 5550 2175 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 7720 2587 8377 2169 8377 2766 7720 3184 7720 2587 7720 2587 -4 0 -1 0 0 0 14 0.0000 4 150 495 7004 5333 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8855 1273 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 915 8735 1453 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9034 3840 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9034 4437 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 5989 6586 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5094 6586 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5034 6765 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 5034 4139 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3109 3557 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3109 3378 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3109 3199 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3109 3020 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4064 2945 HLabel\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6929 3422 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6929 3661 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6929 4139 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6929 4736 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 5974 5333 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5079 5333 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4049 5333 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3109 5333 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3109 4736 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3109 4139 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9288 4019 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9288 4616 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 195 645 3646 1273 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3706 1453 Data\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4526 1453 Labels\001 -4 0 -1 0 0 2 14 0.0000 4 150 510 5079 2945 HLM\001 -4 0 -1 0 0 2 14 0.0000 4 150 510 6034 2945 HNet\001 -4 0 -1 0 0 2 14 0.0000 4 150 585 6929 2945 HDict\001 -4 0 -1 0 0 2 14 0.0000 4 195 885 5421 1273 Language\001 -4 0 -1 0 0 2 14 0.0000 4 150 675 5556 1453 Models\001 -4 0 -1 0 0 2 14 0.0000 4 165 810 6527 1094 Lattices/\001 -4 0 -1 0 0 2 14 0.0000 4 150 990 6467 1273 Constraint\001 -4 0 -1 0 0 2 14 0.0000 4 150 780 6527 1453 Network\001 -4 0 -1 0 0 2 14 0.0000 4 195 990 7497 1453 Dictionary\001 diff --git a/HTKBook/HTKXFigs/Tool.shell.fig b/HTKBook/HTKXFigs/Tool.shell.fig deleted file mode 100644 index ee46bbc..0000000 --- a/HTKBook/HTKXFigs/Tool.shell.fig +++ /dev/null @@ -1,187 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 4895 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 4599 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 2 14 0.0000 4 150 885 9039 3817 Terminal\001 -4 0 -1 0 0 2 14 0.0000 4 165 315 9367 3994 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 -4 0 -1 0 0 2 14 0.0000 4 150 660 3162 4705 HMem\001 -4 0 -1 0 0 2 14 0.0000 4 150 675 3162 5297 HMath\001 -4 0 -1 0 0 2 14 0.0000 4 150 690 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/Tool.spio.fig b/HTKBook/HTKXFigs/Tool.spio.fig deleted file mode 100644 index b3aca9d..0000000 --- a/HTKBook/HTKXFigs/Tool.spio.fig +++ /dev/null @@ -1,181 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 4895 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 4599 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4000 3947 5200 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 2 14 0.0000 4 195 690 3620 1271 Speech\001 -4 0 -1 0 0 2 14 0.0000 4 150 450 3679 1449 Data\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 -4 0 -1 0 0 2 14 0.0000 4 195 615 3162 4113 HSigP\001 -4 0 -1 0 0 2 14 0.0000 4 195 495 3162 3537 HVQ\001 -4 0 -1 0 0 2 14 0.0000 4 150 690 3162 3359 HParm\001 -4 0 -1 0 0 2 14 0.0000 4 150 735 3162 3181 HWave\001 -4 0 -1 0 0 2 14 0.0000 4 150 705 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/WordLM.doc b/HTKBook/HTKXFigs/WordLM.doc deleted file mode 100644 index f1e637b53d3424c938e90c28bc1a61373613cb92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25088 zcmeHPd2Ce29sa$yyWTa}*nlxdI2L1WVoZSq$bkU^POv!)Aqh=`ZM?Ptn{~`0LJzSt z2S}|_QzA90r~oxpkV0FUL@jDl0TTTqN}AG$M7^XyMbfH5)e_P`q$Jz#oA+kD``86z zqKc$5*7tsM|7O0Kd2_s3pZ>$Zvxj~$;+%NQz2cM4lKGOC=5N71O}mRlDqyGIXUSxe z-ctcsjrjsGaN#E>WpP!$U*yW5<7`9`v@8r7zBME=K$`|5)b}typbUXc?wfW4HC61SR9(KduK;3Av$pZNQ z3E`AF{?n+@FX2wWzZ5brfX6lDy91nXuM8j`79r^H*(+I&_;(K!sYk+R28%ob_f(`G z;;6`Y>iTQF8G&&87Ue2~)Zt#qeAA7WUtMn`%%Y;kmcx<2RKepJ34lW89UA$yPecggJ;gXOwq_B4BqG;!i!omlmUCrT+ z#?HdRrCp63;g*f0n30|U=>ggJPfP@z6vx05ugR& zI`ZDUO0CvadFdS$t!KUH0nQKb4Xib(-bLfdv@M; z_^u}4F}GGJWy!9Y1M{;0^% zqo?d)KtcB@tip}?axu`2>Qqa!TdB+j4v#!rygu+u|LfJbNc@RvM0&~JFM-#HSa`=s zKarWzKQRc_ol<30Sz;CAbkMRAI4c}1Wfw8=$ov4jA&Ys~LK9a{^Dqn;1`Gp+0mFb{ zz%XDKFbo(53Gnb7i1JiewP>;QJwcshrp1lkdf(Eo;@y2z6SBgTmz!l`iR! zMrlV(etY$mTZ5l}TuOk(aw{y0?jI&AaFV?WSYKoL8{zJ#$q#J>Vn9kk%2F*0s%aA>}6v!H+XhIGV z#Lg`HNE!MOYCG$lJhA%u+8s*(K8^IYg-0HfWV3vjJPE0eD3qR{$|o$f(6?3TPCqeW z^?2Sf8khh~2WA8J05w1>kgBA*DK*|b_Q>=t&+0oat8ZCW-?3SJ$7J=Lkkxmh>&vT5 zD0UWez1l8IrEzNKFy-_yCv)dw4bOpaOGZ6=bdf9gv6CsLC`SS1z<7W+Ovvv%;4WYx zun3^mT3{7W4?GO41Db(0;5i^=;;<2pu~b;4>xx4XuDM27@ET!`zU+B^vC~Z=G4Vdv z@5nr>Qhya@&tM;U)ptNnm3{5{yihewoOntG{K%@r#iXFVv!?nLx)r}Ws@{bMzi&8w z3}5Gv>^6XXY~T8lCmllbg z*n%(@etd8fU*bIU@`#j-S(2YneH!+3V~cZiDoDfPGu;t4-P3UEbfqZR zy~uneG7HUTA)R!ikuZBQY4b5Qx-4W;tKn>qWSv3T%(!dwBSA##R2G)TZ zSclvi{3#8ZB~B1t4ZfTjhK_MG>>Qh`4nC!!4Z&IiCnm23J41s$*guXIZ$L_?t;ren zk+a{N|(t8jYs>a#NRX$|CT#W<%%$2dP^Z51n3BdvjxpI1XLLqqNwQ6FoRTVF6$ zBh4VERj*a<+S-qaiUlSB*kF8f>R0Pof5_UshvGav}0Zbqnq-z8vI?dO9OU z4So1IEi?*mK#rHuknDTu{BhK;gOBZMnA|4~%$dD;3?%!)wKPoWlZN`Cj)v8c*V8by z&l=c&se!G3tvbx^lLn6Y+Ax+YX#FS4uh!52FWnAvTn+l|ds?-0@7kNK!J4o&vehJA z&)l2P!#3ggAY<&!UdGb(%!8h9qv!UeJ~zS}=VgwNzUnE#Enc<{+sRv>h42~V&dKUC zC@w?mk;r#qvAm8a77%!b#P7qB0rR5s5wvHXJs^QZ7%?mvq?RL?`jp`u!tt#a*s@olI^h9|rnZsyH!_G=&9tcK2?s|$wneXV*W z+%!6T8thEVx1Z`wDzqn@i+QGH8Q2TF`Bx&G^>s2c1iS~(uxIhk7w@5cYr$&SyLOLs z?bsvS%vXQohr&B!_b&U5@V;8I%5v{YvvyZnhhi6P;ci%_vDr;%NO>pwauvHGJ3>$% zz+QYa5S8tC(wBwN#)-w)7<%fNX=j5jE$v2Dww>n-_ye}jzx(T`rAS=oqZGko4fft0 zsPy@oyV z>{ACm_;^KI@r!#yGIiq1f3Acde(I&pxETH%z?268j^HBz`}Hv(0GtN6|Na}mVfasg zoP7fD^;F{K6^7(1>~2WR%j%ay1(0jt<{3c)B&V=;NUT>R2Fc<4O-TMY=1EAFgA8-Y zOFOr{v?B<{u`{owja`vgTevP7?ZTTg+7k!S%1QXpY82h3CqHI`0%G z53CKOZsUfo=+sCO7><-V+;d^0mFb{z%XDKFbo(53GHFmNLbTxGHFkl!k3>XFs1BL;^fMLKeU>NwaFrfFs+&}Xh zGxyru3G;hBzt!`9`|{g7_wU@BbDz#{@!a=wFVAq^S>S%2-@W;tO1Y=!zJD0N@726d z%6QzT^I{Ws+q?l92F3zq0K>~6#{(09iNGX)H(zKO+LJPqB<|cjI>{g^(L)1&H(7=7~+`et$v=3>HoI+AlUE1J*8^M4fwqqZ?@@Q zwRv@AbB}<2GR|?^Tm8(3|F@YYfO~M%%G+~n`}?51MU{y@G2C_Iuk3Q0Nqyj-zrE4? z2d=95jg@B(^z*&Ny3^z?X-~*FTHX3v_|+Ki4tB~4+y&g!6RDTBK{!8jG&|2;ChLQy z+&T9}zs`+)*Sts58T|jUTWEbBCV1A``|jra?YYNR9o?|4BeEr??(5a9=G``Uslh~h Vg$}QnBOlIv=`r2QjJ#DD_%GiL4kZ8p diff --git a/HTKBook/HTKXFigs/cover.fig b/HTKBook/HTKXFigs/cover.fig deleted file mode 100644 index acfbd3d..0000000 --- a/HTKBook/HTKXFigs/cover.fig +++ /dev/null @@ -1,23 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6600 5100 9600 5850 -4 2 -1 0 0 0 50 0.0000 0 690 3915 9600 5625 Steve Young\001 --6 -2 1 0 5 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 7275 5100 7275 -2 1 0 5 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 7950 5100 7950 -4 0 -1 0 0 2 60 0.0000 0 630 1530 1800 1200 The\001 -4 2 -1 0 0 0 35 0.0000 0 375 2955 9600 6750 Dan Kershaw\001 -4 2 -1 0 0 0 35 0.0000 0 375 2610 9600 7335 Julian Odell\001 -4 2 -1 0 0 0 35 0.0000 0 375 2895 9600 7920 Dave Ollason\001 -4 2 -1 0 0 0 35 0.0000 0 375 3720 9600 8505 Valtcho Valtchev\001 -4 2 -1 0 0 0 35 0.0000 0 375 3195 9600 9090 Phil Woodland\001 -4 0 -1 0 0 2 75 0.0000 0 795 3405 6000 3600 BOOK\001 -4 0 -1 0 0 2 140 0.0000 4 1485 1395 3150 3600 T\001 -4 0 -1 0 0 2 95 0.0000 0 1005 1125 4200 3600 K\001 -4 0 -1 0 0 2 95 0.0000 4 1005 1125 2370 3600 H\001 -4 0 -1 0 0 2 35 0.0000 0 375 2610 2400 7800 Version 2.2\001 diff --git a/HTKBook/HTKXFigs/headapt.fig b/HTKBook/HTKXFigs/headapt.fig deleted file mode 100644 index de42426..0000000 --- a/HTKBook/HTKXFigs/headapt.fig +++ /dev/null @@ -1,125 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 2625 6600 6750 7875 -6 3534 6929 3650 7045 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 3534 6929 3592 7045 3650 6929 3534 6929 --6 -6 4463 6929 4579 7045 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 4463 6929 4521 7045 4579 6929 4463 6929 --6 -6 5391 6929 5507 7045 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 5391 6929 5449 7045 5507 6929 5391 6929 --6 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 3766 7542 246 246 3766 7542 4012 7788 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 4688 7540 246 246 4688 7540 4934 7786 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 5617 7540 246 246 5617 7540 5863 7786 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 6485 7542 183 183 6485 7542 6668 7725 -1 3 0 2 0 7 0 0 17 0.000 1 0.0000 2896 7542 183 183 2896 7542 3079 7725 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3998 7542 4463 7542 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4927 7542 5391 7542 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3070 7542 3534 7542 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5856 7542 6320 7542 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 3882 7335 3940 7103 3940 6871 3766 6581 3592 6871 3592 7103 - 3650 7335 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 4811 7335 4869 7103 4869 6871 4695 6581 4521 6871 4521 7103 - 4579 7335 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 5740 7335 5798 7103 5798 6871 5624 6581 5449 6871 5449 7103 - 5507 7335 --6 -6 7200 3450 8550 4950 -4 0 -1 0 0 0 18 0.0000 4 195 960 7200 3675 Labelled\001 -4 0 -1 0 0 0 18 0.0000 4 255 1305 7200 3990 Adaptation\001 -4 0 -1 0 0 0 18 0.0000 4 135 240 7200 4305 or\001 -4 0 -1 0 0 0 18 0.0000 4 195 1290 7200 4620 Enrollment\001 -4 0 -1 0 0 0 18 0.0000 4 195 555 7200 4935 Data\001 --6 -6 2625 1800 6750 3075 -6 3534 2156 3650 2272 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 3534 2156 3592 2272 3650 2156 3534 2156 --6 -6 4463 2156 4579 2272 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 4463 2156 4521 2272 4579 2156 4463 2156 --6 -6 5391 2156 5507 2272 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 5391 2156 5449 2272 5507 2156 5391 2156 --6 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 3766 2794 246 246 3766 2794 3940 2968 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 4688 2792 246 246 4688 2792 4862 2967 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 5617 2792 246 246 5617 2792 5791 2967 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 2896 2794 183 183 2896 2794 3070 2852 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 6485 2794 183 183 6485 2794 6659 2852 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3998 2794 4463 2794 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4927 2794 5391 2794 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3070 2794 3534 2794 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5856 2794 6320 2794 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 3882 2562 3940 2330 3940 2098 3766 1807 3592 2098 3592 2330 - 3650 2562 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 4811 2562 4869 2330 4869 2098 4695 1807 4521 2098 4521 2330 - 4579 2562 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 5740 2562 5798 2330 5798 2098 5624 1807 5449 2098 5449 2330 - 5507 2562 --6 -6 2925 4650 6075 4950 -6 2925 4650 6075 4950 -6 2925 4650 6075 4950 -6 4425 4650 6075 4950 -6 4425 4650 5250 4950 -4 2 -1 0 0 2 24 0.0000 0 255 750 5197 4905 /HA\001 --6 -4 0 -1 0 0 2 20 0.0000 4 210 840 5189 4904 DAPT\001 --6 -4 2 -1 0 0 2 24 0.0000 0 255 810 3772 4905 HEA\001 --6 --6 -4 0 -1 0 0 2 20 0.0000 4 210 840 3764 4904 DAPT\001 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4695 5768 4695 6233 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7072 4202 6607 4608 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 - 4650 3375 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4725 3125 4725 3822 -2 2 0 2 -1 7 1 0 17 0.000 0 0 -1 0 0 5 - 2685 3936 6333 3936 6333 5760 2685 5760 2685 3936 -2 1 0 2 -1 7 2 0 17 0.000 0 0 -1 0 0 4 - 2667 3943 3073 3639 6720 3639 6315 3943 -2 1 0 2 -1 7 2 0 17 0.000 0 0 -1 0 0 4 - 6315 3943 6720 3639 6720 5361 6315 5767 -4 1 -1 0 0 0 18 0.0000 4 255 5070 4695 6523 Transformed Speaker Independent Model Set\001 -4 1 -1 0 0 0 18 0.0000 4 255 3540 4695 1749 Speaker Independent Model Set\001 diff --git a/HTKBook/HTKXFigs/headaptrdp.fig b/HTKBook/HTKXFigs/headaptrdp.fig deleted file mode 100644 index b4b7699..0000000 --- a/HTKBook/HTKXFigs/headaptrdp.fig +++ /dev/null @@ -1,473 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 1611 1363 2653 2406 -2 4 0 2 -1 7 4 0 20 0.000 0 0 5 0 0 5 - 2618 2393 1636 2393 1636 1412 2618 1412 2618 2393 -4 0 -1 4 0 0 13 0.0000 0 135 765 1795 1607 000 023 b\001 -4 0 -1 4 0 0 13 0.0000 0 135 810 1795 1840 024 091 ih\001 -4 0 -1 4 0 0 13 0.0000 0 135 735 1795 2075 092 134 t\001 -4 0 -1 4 0 0 13 0.0000 0 135 810 1795 2307 135 182 ih\001 --6 -6 2101 1855 3144 2897 -2 4 0 2 -1 7 2 0 20 0.000 0 0 5 0 0 5 - 3108 2884 2126 2884 2126 1901 3108 1901 3108 2884 -4 0 -1 2 0 0 13 0.0000 0 135 765 2286 2099 000 046 s\001 -4 0 -1 2 0 0 13 0.0000 0 135 810 2286 2332 046 091 ih\001 -4 0 -1 2 0 0 13 0.0000 0 135 735 2286 2564 092 134 t\001 -4 0 -1 2 0 0 13 0.0000 0 135 810 2286 2799 135 182 ih\001 --6 -6 1365 1116 2408 2161 -2 4 0 2 -1 7 5 0 20 0.000 0 0 5 0 0 5 - 2372 2148 1388 2148 1388 1164 2372 1164 2372 2148 -4 0 -1 5 0 0 13 0.0000 0 135 765 1550 1363 000 023 b\001 -4 0 -1 5 0 0 13 0.0000 0 135 810 1550 1595 024 091 ih\001 -4 0 -1 5 0 0 13 0.0000 0 135 735 1550 1830 092 134 t\001 -4 0 -1 5 0 0 13 0.0000 0 135 810 1550 2063 135 182 ih\001 --6 -6 75 75 10125 9150 -6 6675 4350 10125 6600 -6 6816 4492 7831 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 7758 5146 6889 5146 6889 4565 7758 4565 7758 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 7034 4855 f\001 --6 -6 7179 4711 8194 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 8122 5364 7252 5364 7252 4783 8122 4783 8122 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 7396 5073 s\001 --6 -6 7543 4929 8557 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 8484 5581 7613 5581 7613 5001 8484 5001 8484 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 7758 5291 ch\001 --6 -6 7904 5146 8919 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 8848 5798 7975 5798 7975 5218 8848 5218 8848 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 8122 5508 t\001 --6 -6 8266 5364 9281 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 9209 6015 8339 6015 8339 5435 9209 5435 9209 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 8484 5725 aa\001 --6 -6 8630 5581 9644 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 9572 6233 8701 6233 8701 5652 9572 5652 9572 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 8848 5943 eh\001 --6 -6 8992 5798 10008 6524 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 9934 6451 9065 6451 9065 5871 9934 5871 9934 6451 -4 0 -1 1 0 0 17 0.0000 0 180 195 9209 6161 ih\001 --6 -6 6816 4492 7831 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 7758 5146 6889 5146 6889 4565 7758 4565 7758 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 7034 4855 f\001 --6 -6 7179 4711 8194 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 8122 5364 7252 5364 7252 4783 8122 4783 8122 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 7396 5073 s\001 --6 -6 7543 4929 8557 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 8484 5581 7613 5581 7613 5001 8484 5001 8484 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 7758 5291 ch\001 --6 -6 7904 5146 8919 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 8848 5798 7975 5798 7975 5218 8848 5218 8848 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 8122 5508 t\001 --6 -6 8266 5364 9281 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 9209 6015 8339 6015 8339 5435 9209 5435 9209 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 8484 5725 aa\001 --6 -6 8630 5581 9644 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 9572 6233 8701 6233 8701 5652 9572 5652 9572 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 8848 5943 eh\001 --6 -2 2 0 0 -1 7 8 0 15 0.000 0 0 -1 0 0 5 - 6705 4422 10095 4422 10095 6595 6705 6595 6705 4422 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 9934 6451 9065 6451 9065 5871 9934 5871 9934 6451 -2 2 0 0 -1 7 8 0 17 0.000 0 0 -1 0 0 5 - 6705 4422 10095 4422 10095 6595 6705 6595 6705 4422 -4 2 -1 0 0 0 17 0.0000 0 180 630 9876 4855 MMF\001 -4 0 -1 1 0 0 17 0.0000 0 180 195 9209 6161 ih\001 --6 -6 3600 75 7875 3450 -6 5198 75 6473 792 -6 5205 75 6422 771 -2 4 0 2 -1 7 0 0 -1 0.000 0 0 8 0 0 5 - 6336 684 5292 684 5292 162 6336 162 6336 684 -4 1 -1 0 0 0 18 0.0000 4 195 885 5814 510 trainlist\001 --6 --6 -6 4371 1918 5994 2729 -2 4 0 2 -1 7 3 0 20 0.000 0 0 4 0 0 5 - 5939 2675 4426 2675 4426 1974 5939 1974 5939 2675 -2 1 0 2 -1 7 3 0 20 0.000 0 0 -1 0 0 29 - 4530 2331 4576 2143 4718 2049 4763 2518 4811 2235 4811 2423 - 4858 2188 4904 2470 4951 2423 4998 2283 4998 2188 5044 2331 - 5093 2188 5186 2518 5233 2188 5233 2423 5280 2235 5326 2423 - 5326 2518 5373 2283 5420 2188 5467 2377 5561 2283 5608 2377 - 5655 2283 5701 2423 5748 2331 5795 2377 5842 2331 --6 -6 4615 2243 6237 3054 -2 4 0 2 -1 7 2 0 20 0.000 0 0 4 0 0 5 - 6183 2999 4669 2999 4669 2298 6183 2298 6183 2999 -2 1 0 2 -1 7 2 0 20 0.000 0 0 -1 0 0 29 - 4773 2655 4820 2468 4961 2373 5008 2842 5054 2560 5054 2748 - 5101 2512 5148 2794 5195 2748 5241 2608 5241 2512 5288 2655 - 5336 2512 5429 2842 5476 2512 5476 2748 5523 2560 5570 2748 - 5570 2842 5616 2608 5663 2512 5710 2702 5805 2608 5851 2702 - 5898 2608 5945 2748 5992 2655 6038 2702 6085 2655 --6 -6 4858 2567 6480 3378 -2 4 0 2 -1 7 1 0 20 0.000 0 0 4 0 0 5 - 6426 3324 4912 3324 4912 2623 6426 2623 6426 3324 -2 1 0 2 -1 7 1 0 20 0.000 0 0 -1 0 0 29 - 5016 2980 5063 2792 5204 2698 5251 3166 5298 2884 5298 3072 - 5345 2838 5391 3119 5438 3072 5485 2932 5485 2838 5531 2980 - 5579 2838 5673 3166 5720 2838 5720 3072 5766 2884 5813 3072 - 5813 3166 5860 2932 5907 2838 5953 3026 6048 2932 6095 3026 - 6142 2932 6188 3072 6235 2980 6282 3026 6328 2980 --6 -6 4371 1918 5994 2729 -2 4 0 2 -1 7 3 0 20 0.000 0 0 4 0 0 5 - 5939 2675 4426 2675 4426 1974 5939 1974 5939 2675 -2 1 0 2 -1 7 3 0 20 0.000 0 0 -1 0 0 29 - 4530 2331 4576 2143 4718 2049 4763 2518 4811 2235 4811 2423 - 4858 2188 4904 2470 4951 2423 4998 2283 4998 2188 5044 2331 - 5093 2188 5186 2518 5233 2188 5233 2423 5280 2235 5326 2423 - 5326 2518 5373 2283 5420 2188 5467 2377 5561 2283 5608 2377 - 5655 2283 5701 2423 5748 2331 5795 2377 5842 2331 --6 -6 4615 2243 6237 3054 -2 4 0 2 -1 7 2 0 20 0.000 0 0 4 0 0 5 - 6183 2999 4669 2999 4669 2298 6183 2298 6183 2999 -2 1 0 2 -1 7 2 0 20 0.000 0 0 -1 0 0 29 - 4773 2655 4820 2468 4961 2373 5008 2842 5054 2560 5054 2748 - 5101 2512 5148 2794 5195 2748 5241 2608 5241 2512 5288 2655 - 5336 2512 5429 2842 5476 2512 5476 2748 5523 2560 5570 2748 - 5570 2842 5616 2608 5663 2512 5710 2702 5805 2608 5851 2702 - 5898 2608 5945 2748 5992 2655 6038 2702 6085 2655 --6 -6 4858 2567 6480 3378 -2 4 0 2 -1 7 1 0 20 0.000 0 0 4 0 0 5 - 6426 3324 4912 3324 4912 2623 6426 2623 6426 3324 -2 1 0 2 -1 7 1 0 20 0.000 0 0 -1 0 0 29 - 5016 2980 5063 2792 5204 2698 5251 3166 5298 2884 5298 3072 - 5345 2838 5391 3119 5438 3072 5485 2932 5485 2838 5531 2980 - 5579 2838 5673 3166 5720 2838 5720 3072 5766 2884 5813 3072 - 5813 3166 5860 2932 5907 2838 5953 3026 6048 2932 6095 3026 - 6142 2932 6188 3072 6235 2980 6282 3026 6328 2980 --6 -6 3600 375 5775 2475 -6 3885 1269 5507 2080 -2 4 0 2 -1 7 5 0 20 0.000 0 0 4 0 0 5 - 5452 2026 3939 2026 3939 1325 5452 1325 5452 2026 -2 1 0 2 -1 7 5 0 20 0.000 0 0 -1 0 0 29 - 4043 1682 4090 1493 4231 1400 4277 1869 4325 1587 4325 1774 - 4371 1539 4417 1821 4465 1774 4512 1634 4512 1539 4557 1682 - 4606 1539 4699 1869 4746 1539 4746 1774 4793 1587 4839 1774 - 4839 1869 4887 1634 4933 1539 4979 1728 5075 1634 5120 1728 - 5168 1634 5215 1774 5261 1682 5308 1728 5355 1682 --6 -6 4128 1593 5750 2405 -2 4 0 2 -1 7 4 0 20 0.000 0 0 4 0 0 5 - 5696 2350 4182 2350 4182 1649 5696 1649 5696 2350 -2 1 0 2 -1 7 4 0 20 0.000 0 0 -1 0 0 29 - 4286 2006 4333 1819 4474 1724 4520 2193 4568 1911 4568 2099 - 4615 1863 4660 2145 4708 2099 4755 1959 4755 1863 4801 2006 - 4849 1863 4942 2193 4990 1863 4990 2099 5036 1911 5082 2099 - 5082 2193 5130 1959 5177 1863 5222 2052 5318 1959 5365 2052 - 5411 1959 5458 2099 5505 2006 5552 2052 5598 2006 --6 -6 3640 944 5264 1756 -2 4 0 2 -1 7 6 0 20 0.000 0 0 4 0 0 5 - 5209 1702 3696 1702 3696 1000 5209 1000 5209 1702 -2 1 0 2 -1 7 6 0 20 0.000 0 0 -1 0 0 29 - 3800 1357 3847 1169 3988 1075 4034 1543 4081 1262 4081 1450 - 4128 1214 4174 1496 4222 1450 4268 1310 4268 1214 4314 1357 - 4363 1214 4455 1543 4503 1214 4503 1450 4550 1262 4596 1450 - 4596 1543 4643 1310 4690 1214 4736 1403 4831 1310 4877 1403 - 4925 1310 4972 1450 5017 1357 5065 1403 5112 1357 --6 -6 3885 1269 5507 2080 -2 4 0 2 -1 7 5 0 20 0.000 0 0 4 0 0 5 - 5452 2026 3939 2026 3939 1325 5452 1325 5452 2026 -2 1 0 2 -1 7 5 0 20 0.000 0 0 -1 0 0 29 - 4043 1682 4090 1493 4231 1400 4277 1869 4325 1587 4325 1774 - 4371 1539 4417 1821 4465 1774 4512 1634 4512 1539 4557 1682 - 4606 1539 4699 1869 4746 1539 4746 1774 4793 1587 4839 1774 - 4839 1869 4887 1634 4933 1539 4979 1728 5075 1634 5120 1728 - 5168 1634 5215 1774 5261 1682 5308 1728 5355 1682 --6 -6 4128 1593 5750 2405 -2 4 0 2 -1 7 4 0 20 0.000 0 0 4 0 0 5 - 5696 2350 4182 2350 4182 1649 5696 1649 5696 2350 -2 1 0 2 -1 7 4 0 20 0.000 0 0 -1 0 0 29 - 4286 2006 4333 1819 4474 1724 4520 2193 4568 1911 4568 2099 - 4615 1863 4660 2145 4708 2099 4755 1959 4755 1863 4801 2006 - 4849 1863 4942 2193 4990 1863 4990 2099 5036 1911 5082 2099 - 5082 2193 5130 1959 5177 1863 5222 2052 5318 1959 5365 2052 - 5411 1959 5458 2099 5505 2006 5552 2052 5598 2006 --6 -6 3640 944 5264 1756 -2 4 0 2 -1 7 6 0 20 0.000 0 0 4 0 0 5 - 5209 1702 3696 1702 3696 1000 5209 1000 5209 1702 -2 1 0 2 -1 7 6 0 20 0.000 0 0 -1 0 0 29 - 3800 1357 3847 1169 3988 1075 4034 1543 4081 1262 4081 1450 - 4128 1214 4174 1496 4222 1450 4268 1310 4268 1214 4314 1357 - 4363 1214 4455 1543 4503 1214 4503 1450 4550 1262 4596 1450 - 4596 1543 4643 1310 4690 1214 4736 1403 4831 1310 4877 1403 - 4925 1310 4972 1450 5017 1357 5065 1403 5112 1357 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3640 771 3640 422 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3640 422 5292 422 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 6336 422 7814 422 7814 771 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5425 1269 data/adapt1.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5913 1918 data/adapt3.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6156 2243 data/adapt4.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6399 2567 data/adapt5.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6561 2892 data/adapt6.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5669 1593 data/adapt2.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5425 1269 data/adapt1.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5913 1918 data/adapt3.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6156 2243 data/adapt4.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6399 2567 data/adapt5.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6561 2892 data/adapt6.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5669 1593 data/adapt2.mfc\001 --6 -6 6825 7200 8302 7654 -2 4 0 2 -1 7 6 0 20 0.000 0 0 5 0 0 5 - 8245 7597 8245 7257 6882 7257 6882 7597 8245 7597 -4 1 -1 6 0 0 13 0.0000 4 135 855 7563 7484 transform 1\001 --6 -6 7166 7484 8643 7938 -2 4 0 2 -1 7 5 0 20 0.000 0 0 5 0 0 5 - 8586 7882 8586 7541 7222 7541 7222 7882 8586 7882 -4 1 -1 5 0 0 13 0.0000 4 135 855 7904 7768 transform 2\001 --6 -6 7507 7768 8984 8222 -2 4 0 2 -1 7 4 0 20 0.000 0 0 5 0 0 5 - 8927 8166 8927 7825 7563 7825 7563 8166 8927 8166 -4 1 -1 4 0 0 13 0.0000 4 135 855 8245 8053 transform 3\001 --6 -6 8529 8621 10006 9075 -2 4 0 2 -1 7 3 0 20 0.000 0 0 5 0 0 5 - 9949 9018 9949 8678 8586 8678 8586 9018 9949 9018 -4 1 -1 3 0 0 13 0.0000 4 135 855 9268 8904 transform n\001 --6 -6 75 3750 6675 7725 -6 75 4350 3525 7725 -6 75 4350 3525 6600 -6 216 4492 1231 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 1158 5146 289 5146 289 4565 1158 4565 1158 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 434 4855 f\001 --6 -6 579 4711 1594 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 1522 5364 652 5364 652 4783 1522 4783 1522 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 796 5073 s\001 --6 -6 943 4929 1957 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 1884 5581 1013 5581 1013 5001 1884 5001 1884 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 1158 5291 ch\001 --6 -6 1304 5146 2319 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 2248 5798 1375 5798 1375 5218 2248 5218 2248 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 1522 5508 t\001 --6 -6 1666 5364 2681 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 2609 6015 1739 6015 1739 5435 2609 5435 2609 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 1884 5725 aa\001 --6 -6 2030 5581 3044 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 2972 6233 2101 6233 2101 5652 2972 5652 2972 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 2248 5943 eh\001 --6 -6 2392 5798 3408 6524 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 3334 6451 2465 6451 2465 5871 3334 5871 3334 6451 -4 0 -1 1 0 0 17 0.0000 0 180 195 2609 6161 ih\001 --6 -6 216 4492 1231 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 1158 5146 289 5146 289 4565 1158 4565 1158 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 434 4855 f\001 --6 -6 579 4711 1594 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 1522 5364 652 5364 652 4783 1522 4783 1522 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 796 5073 s\001 --6 -6 943 4929 1957 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 1884 5581 1013 5581 1013 5001 1884 5001 1884 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 1158 5291 ch\001 --6 -6 1304 5146 2319 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 2248 5798 1375 5798 1375 5218 2248 5218 2248 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 1522 5508 t\001 --6 -6 1666 5364 2681 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 2609 6015 1739 6015 1739 5435 2609 5435 2609 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 1884 5725 aa\001 --6 -6 2030 5581 3044 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 2972 6233 2101 6233 2101 5652 2972 5652 2972 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 2248 5943 eh\001 --6 -2 2 0 0 -1 7 8 0 15 0.000 0 0 -1 0 0 5 - 105 4422 3495 4422 3495 6595 105 6595 105 4422 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 3334 6451 2465 6451 2465 5871 3334 5871 3334 6451 -2 2 0 0 -1 7 8 0 17 0.000 0 0 -1 0 0 5 - 105 4422 3495 4422 3495 6595 105 6595 105 4422 -4 2 -1 0 0 0 17 0.0000 0 180 630 3276 4855 MMF\001 -4 0 -1 1 0 0 17 0.0000 0 180 195 2609 6161 ih\001 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 105 7029 105 7378 1234 7378 -2 4 0 2 -1 7 0 0 -1 0.000 0 0 8 0 0 5 - 2277 7638 1234 7638 1234 7116 2277 7116 2277 7638 -4 1 -1 0 0 0 18 0.0000 4 195 930 1756 7465 hmmlist\001 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 2277 7378 3495 7378 3495 7029 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3600 5175 4275 5175 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5925 5175 6600 5175 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5100 3825 5100 4500 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5775 5925 6375 6825 -2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5768 5700 4459 5700 4459 4718 5768 4718 5768 5700 -4 1 -1 8 0 0 17 0.0000 0 180 345 6198 5945 OR\001 -4 1 -1 0 0 0 20 0.0000 0 270 1200 5114 5312 HEAdapt\001 --6 -1 3 0 2 -1 7 3 0 0 0.000 1 0.0000 8643 8412 37 37 8643 8412 8680 8450 -2 4 0 2 -1 7 5 0 20 0.000 0 0 5 0 0 5 - 2372 2148 1388 2148 1388 1164 2372 1164 2372 2148 -2 4 0 2 -1 7 2 0 20 0.000 0 0 5 0 0 5 - 3108 2884 2126 2884 2126 1901 3108 1901 3108 2884 -2 4 0 2 -1 7 4 0 20 0.000 0 0 5 0 0 5 - 2618 2393 1636 2393 1636 1412 2618 1412 2618 2393 -2 2 0 0 -1 7 7 0 17 0.000 0 0 -1 0 0 5 - 105 771 3495 771 3495 3640 105 3640 105 771 -2 4 0 2 -1 7 1 0 20 0.000 0 0 5 0 0 5 - 3355 3131 2372 3131 2372 2148 3355 2148 3355 3131 -2 2 1 0 -1 7 7 0 17 2.000 0 0 -1 0 0 5 - 6675 7125 10125 7125 10125 9150 6675 9150 6675 7125 -4 0 -1 4 0 0 12 0.0000 0 135 765 1795 1607 000 023 b\001 --6 -2 4 0 2 -1 7 1 0 20 0.000 0 0 5 0 0 5 - 3355 3131 2372 3131 2372 2148 3355 2148 3355 3131 -4 0 -1 6 0 0 12 0.0000 0 180 765 1304 1116 000 103 p\001 --6 -2 4 0 2 -1 7 3 0 20 0.000 0 0 5 0 0 5 - 2863 2639 1880 2639 1880 1656 2863 1656 2863 2639 -4 2 -1 0 0 0 17 0.0000 0 180 555 3203 3465 MLF\001 --6 -6 675 900 4725 3375 -6 1725 1875 3300 2850 -4 0 -1 4 0 0 12 0.0000 0 135 735 1795 2075 092 134 t\001 -4 0 -1 1 0 0 12 0.0000 0 135 735 2530 2811 092 134 t\001 -4 0 -1 1 0 0 12 0.0000 0 135 765 2530 2345 000 023 b\001 -4 0 -1 3 0 0 13 0.0000 0 135 810 2038 2086 024 091 ih\001 -4 0 -1 3 0 0 13 0.0000 0 135 810 2038 2553 135 182 ih\001 --6 -2 1 0 0 -1 7 0 0 15 0.000 0 0 -1 0 0 2 - 3408 2683 4015 2683 -2 4 0 2 -1 7 6 0 20 0.000 0 0 5 0 0 5 - 2126 1901 1144 1901 1144 921 2126 921 2126 1901 -2 4 0 2 -1 7 3 0 20 0.000 0 0 5 0 0 5 - 2863 2639 1880 2639 1880 1656 2863 1656 2863 2639 -2 1 0 0 -1 7 0 0 15 0.000 0 0 -1 0 0 2 - 3408 2683 4015 2683 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 4 - 1 1 2.00 120.00 240.00 - 3450 2625 3675 2625 3675 3150 4650 3150 -2 4 0 2 -1 7 6 0 20 0.000 0 0 5 0 0 5 - 2126 1901 1144 1901 1144 921 2126 921 2126 1901 -4 2 -1 0 0 0 13 0.0000 0 180 915 1611 2590 */adapt3.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1855 2836 */adapt4.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2101 3082 */adapt5.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2346 3326 */adapt6.lab\001 -4 0 -1 6 0 0 12 0.0000 0 135 810 1304 1349 103 114 ih\001 -4 0 -1 6 0 0 12 0.0000 0 135 735 1304 1583 114 134 t\001 -4 0 -1 6 0 0 12 0.0000 0 135 810 1304 1816 135 182 ih\001 -4 0 -1 5 0 0 12 0.0000 0 135 765 1550 1363 000 023 b\001 -4 0 -1 5 0 0 12 0.0000 0 135 810 1550 1595 024 091 ih\001 -4 0 -1 5 0 0 12 0.0000 0 135 735 1550 1830 092 134 t\001 -4 0 -1 5 0 0 12 0.0000 0 135 810 1550 2063 135 182 ih\001 -4 0 -1 4 0 0 12 0.0000 0 135 810 1795 1840 024 091 ih\001 -4 0 -1 4 0 0 12 0.0000 0 135 810 1795 2307 135 182 ih\001 -4 0 -1 3 0 0 12 0.0000 0 135 765 2038 1855 000 023 s\001 -4 0 -1 3 0 0 12 0.0000 0 135 810 2038 2086 024 091 ih\001 -4 0 -1 3 0 0 12 0.0000 0 135 735 2038 2320 092 134 t\001 -4 0 -1 3 0 0 12 0.0000 0 135 810 2038 2553 135 182 ih\001 -4 0 -1 2 0 0 12 0.0000 0 135 765 2286 2099 000 046 s\001 -4 0 -1 2 0 0 12 0.0000 0 135 810 2286 2332 046 091 ih\001 -4 0 -1 2 0 0 12 0.0000 0 135 735 2286 2564 092 134 t\001 -4 0 -1 2 0 0 12 0.0000 0 135 810 2286 2799 135 182 ih\001 -4 0 -1 1 0 0 12 0.0000 0 135 810 2530 2577 024 091 ih\001 -4 0 -1 1 0 0 12 0.0000 0 135 810 2530 3045 135 182 ih\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1611 2590 */adapt3.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1855 2836 */adapt4.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2101 3082 */adapt5.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2346 3326 */adapt6.lab\001 -4 0 -1 6 0 0 13 0.0000 0 135 810 1304 1349 103 114 ih\001 -4 0 -1 6 0 0 13 0.0000 0 135 735 1304 1583 114 134 t\001 -4 0 -1 6 0 0 13 0.0000 0 135 810 1304 1816 135 182 ih\001 -4 0 -1 3 0 0 13 0.0000 0 135 735 2038 2320 092 134 t\001 --6 --6 -6 8325 7275 9900 8625 -1 3 0 2 -1 7 3 0 0 0.000 1 0.0000 8416 8279 37 37 8416 8279 8453 8318 -1 3 0 2 -1 7 3 0 0 0.000 1 0.0000 8889 8507 37 37 8889 8507 8927 8545 -4 1 -1 3 0 0 17 0.0000 4 180 555 9609 7484 TMF\001 --6 --6 --6 -4 2 -1 0 0 0 13 0.0000 0 180 915 1119 2099 */adapt1.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1365 2345 */adapt2.lab\001 --6 -4 2 -1 0 0 0 13 0.0000 0 180 915 1119 2099 */adapt1.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1365 2345 */adapt2.lab\001 --6 diff --git a/HTKBook/HTKXFigs/softarch-big.fig b/HTKBook/HTKXFigs/softarch-big.fig deleted file mode 100644 index 95eaae0..0000000 --- a/HTKBook/HTKXFigs/softarch-big.fig +++ /dev/null @@ -1,219 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 6000 5250 7200 5325 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 5250 6000 5250 --6 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 6000 6000 7200 6075 -6 6000 6000 7200 6075 -6 6000 6000 7200 6075 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 6000 6000 6000 --6 --6 --6 -6 1200 975 9750 7725 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 3000 5625 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3600 3000 4425 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3000 3225 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 2400 1800 2400 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3600 1800 3600 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4800 1800 4800 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6000 1800 6000 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7200 1800 7200 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 4500 2400 4500 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3600 6000 3600 6750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 6000 4800 6750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 3000 4800 3750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7650 3825 8925 3825 8925 1800 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5400 6750 5400 7650 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4125 6750 4125 7650 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7650 5325 8550 5325 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7650 4575 8550 4575 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 3000 7200 3000 7200 6750 1200 6750 1200 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 5250 2400 5250 2400 6000 1200 6000 1200 5250 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 6000 2400 6000 2400 6750 1200 6750 1200 6000 -4 0 -1 0 0 0 14 0.0000 4 195 645 2175 1350 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 2250 1575 Data\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 3375 1575 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4575 1575 Models\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 4500 1350 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 5700 1575 Network\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 5625 1350 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 5700 1125 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 6825 1575 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 915 8475 1575 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8625 1350 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 2700 3450 HLabel\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 3975 3450 HLM\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5175 3450 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6300 3450 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 1500 4950 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 1500 5700 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 1500 6450 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 2775 6450 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 3975 6450 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 5100 6450 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6300 6450 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6300 5700 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6300 4950 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 1500 4125 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 1500 3900 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 1500 3675 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 1500 3450 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 8850 4575 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9075 4800 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 8850 5325 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9075 5550 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6300 4050 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6300 4350 HUtil\001 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 3000 2025 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3000 2400 3825 -4 0 -1 0 0 0 14 0.0000 4 150 870 3825 4950 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 5025 8025 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 3825 8250 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 3900 8025 Model\001 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2025 2475 8025 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 5250 1200 5250 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 6000 2400 6000 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3600 3000 3600 3750 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3750 2400 6750 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 6000 6000 6000 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3750 6000 6750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8025 3225 8025 6225 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 6750 8025 6225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3000 6000 3975 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6075 3750 2400 3750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 6000 8025 5475 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7200 4500 8025 3975 8025 4725 7200 5250 7200 4500 7200 4500 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 3000 8025 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3000 6825 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 5250 8025 4725 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 4500 8025 3975 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 3750 8025 3225 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3750 7200 3750 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 4500 7200 4500 7200 5250 6000 5250 6000 4500 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 4500 7200 4500 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8025 2475 8025 3300 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 6000 2400 6000 2400 6750 1200 6750 1200 6000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 5250 2400 5250 2400 6000 1200 6000 1200 5250 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 4500 7200 4500 7200 5250 6000 5250 6000 4500 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7200 4500 8025 3975 8025 4725 7200 5250 7200 4500 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 3000 2400 3000 2400 4500 1200 4500 1200 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 4500 2400 4500 2400 5250 1200 5250 1200 4500 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 1200 3000 2025 2475 3225 2475 2400 3000 1200 3000 1200 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2400 3000 3600 3000 3600 3750 2400 3750 2400 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 2400 3000 3225 2475 4425 2475 3600 3000 2400 3000 2400 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 3750 7200 3750 7200 4500 6000 4500 6000 3750 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7200 3750 8025 3225 8025 3975 7200 4500 7200 3750 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3600 3000 4800 3000 4800 3750 3600 3750 3600 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 4800 3000 6000 3000 6000 3750 4800 3750 4800 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 3000 7200 3000 7200 3750 6000 3750 6000 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3600 3000 4425 2475 5625 2475 4800 3000 3600 3000 3600 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 4800 3000 5625 2475 6825 2475 6000 3000 4800 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 4800 3000 6000 3000 6825 2475 5625 2475 4800 3000 4800 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 6000 3000 6825 2475 8025 2475 7200 3000 6000 3000 6000 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7200 3000 8025 2475 8025 3225 7200 3750 7200 3000 7200 3000 diff --git a/HTKBook/HTKXFigs/softarch.fig b/HTKBook/HTKXFigs/softarch.fig deleted file mode 100644 index 904198e..0000000 --- a/HTKBook/HTKXFigs/softarch.fig +++ /dev/null @@ -1,183 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 diff --git a/HTKBook/HTKXFigs/step10.fig b/HTKBook/HTKXFigs/step10.fig deleted file mode 100644 index df054fd..0000000 --- a/HTKBook/HTKXFigs/step10.fig +++ /dev/null @@ -1,63 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 2925 2850 1125 2850 1125 2175 2925 2175 2925 2850 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5775 2850 3975 2850 3975 2175 5775 2175 5775 2850 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1350 3450 2700 3450 2700 4275 1350 4275 1350 3450 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 2925 6600 1200 6600 1200 5550 2925 5550 2925 6600 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 7275 2925 7275 2925 7950 1200 7950 1200 7275 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 2925 9600 1200 9600 1200 8550 2925 8550 2925 9600 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5775 5175 3975 5175 3975 4500 5775 4500 5775 5175 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5775 6225 3975 6225 3975 5550 5775 5550 5775 6225 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 4875 6225 4875 7575 2925 7575 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 6600 2025 7275 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 4275 2025 5550 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 7950 2025 8550 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 4875 2850 4875 3675 2700 3675 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 2850 2025 3450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 2475 4275 2475 4725 4125 5550 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 4875 4500 4875 4050 2700 4050 -4 0 -1 0 0 0 20 0.0000 4 210 1380 1425 5908 Tied-State\001 -4 0 -1 0 0 0 20 0.0000 4 270 1230 1425 6223 Triphones\001 -4 0 -1 0 0 0 20 0.0000 4 210 450 1425 7725 HR\001 -4 0 -1 0 0 0 16 0.0000 4 225 900 1800 7725 EST (x2)\001 -4 0 -1 0 0 0 20 0.0000 4 210 1380 1425 8908 Tied-State\001 -4 0 -1 0 0 0 20 0.0000 4 270 1230 1425 9223 Triphones\001 -4 0 -1 0 0 0 20 0.0000 4 270 1350 4275 4800 Edit Script\001 -4 0 -1 0 0 0 20 0.0000 4 210 660 1575 3975 HHE\001 -4 0 -1 0 0 0 16 0.0000 4 165 165 2175 3975 D\001 -4 0 -1 0 0 0 20 0.0000 4 270 1230 1425 2475 Triphones\001 -4 0 -1 0 0 0 20 0.0000 4 210 1260 4275 2475 State Occs\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 1575 9492 (hmm15)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 1575 6492 (hmm13)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 1575 2775 (hmm12)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1500 4200 6150 (tiedlist)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1500 4200 5100 (tree.hed)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 4350 2775 (stats)\001 -4 0 -1 0 0 0 20 0.0000 4 210 1410 4200 5850 HMM List\001 diff --git a/HTKBook/HTKXFigs/sysoview.fig b/HTKBook/HTKXFigs/sysoview.fig deleted file mode 100644 index 261df06..0000000 --- a/HTKBook/HTKXFigs/sysoview.fig +++ /dev/null @@ -1,128 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 900 6975 1950 7200 -4 0 -1 0 0 0 20 0.0000 4 210 420 900 7200 HP\001 -4 0 -1 0 0 0 16 0.0000 4 165 615 1275 7200 ARSE\001 --6 -6 3600 5475 4500 5700 -4 0 -1 0 0 0 20 0.0000 4 210 480 3600 5700 HV\001 -4 0 -1 0 0 0 16 0.0000 4 165 390 4050 5700 ITE\001 --6 -6 2025 3225 6300 3525 -4 0 -1 0 0 0 20 0.0000 4 210 450 2025 3450 HC\001 -4 0 -1 0 0 0 16 0.0000 4 165 525 2475 3450 OMP\001 -4 0 -1 0 0 0 20 0.0000 4 270 630 3000 3450 V, H\001 -4 0 -1 0 0 0 16 0.0000 4 165 510 3600 3450 INIT\001 -4 0 -1 0 0 0 20 0.0000 4 270 600 4125 3450 , HR\001 -4 0 -1 0 0 0 16 0.0000 4 165 435 4650 3450 EST\001 -4 0 -1 0 0 0 20 0.0000 4 270 780 5100 3450 , HER\001 -4 0 -1 0 0 0 16 0.0000 4 165 435 5850 3450 EST\001 --6 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 830 6600 1950 6600 1950 7275 830 7275 830 6600 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 2100 6225 600 6225 600 5850 2100 5850 2100 6225 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 2100 5400 600 5400 600 5025 2100 5025 2100 5400 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 750 4275 2025 4275 2025 4650 750 4650 750 4275 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1950 3075 6375 3075 6375 3900 1950 3900 1950 3075 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 4650 4650 3525 4650 3525 4275 4650 4275 4650 4650 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3300 5250 4800 5250 4800 5925 3300 5925 3300 5250 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5025 6825 3150 6825 3150 6450 5025 6450 5025 6825 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3375 7200 4800 7200 4800 7575 3375 7575 3375 7200 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5625 2550 4425 2550 4425 2175 5625 2175 5625 2550 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 4200 2550 2325 2550 2325 2175 4200 2175 4200 2550 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1275 975 2550 975 2550 1800 1275 1800 1275 975 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 900 7275 900 7275 2175 6000 2175 6000 900 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 825 7800 825 7800 2400 7500 2400 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 2550 7800 2550 7800 4125 7500 4125 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 4275 7800 4275 7800 6675 7500 6675 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 6825 7800 6825 7800 7725 7500 7725 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 60.00 120.00 - 6000 1575 5025 1575 5025 2175 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 5025 2550 4650 3075 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 60.00 120.00 - 2550 1350 3300 1350 3300 2175 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 3300 2550 3675 3075 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 1350 4650 1350 5025 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 1 2 - 1 1 2.00 60.00 120.00 - 1350 6225 1350 6600 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 2100 5250 3300 5400 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 2100 6075 3300 5775 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 4050 3900 4050 4275 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 4050 4650 4050 5250 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 4050 5925 4050 6450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 1 2 - 1 1 2.00 60.00 120.00 - 4050 6825 4050 7200 -4 0 -1 0 0 0 20 0.0000 4 210 570 7875 1500 Data\001 -4 0 -1 0 0 0 20 0.0000 4 270 570 7875 1770 Prep\001 -4 0 -1 0 0 0 20 0.0000 4 270 1050 7875 3375 Training\001 -4 0 -1 0 0 0 20 0.0000 4 270 930 7875 5550 Testing\001 -4 0 -1 0 0 0 20 0.0000 4 270 1140 7875 7350 Analysis\001 -4 0 -1 0 0 0 20 0.0000 4 210 960 3675 4575 HMMs\001 -4 0 -1 0 0 0 20 0.0000 4 210 1260 750 6150 Networks\001 -4 0 -1 0 0 0 20 0.0000 4 270 1350 675 5325 Dictionary\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 1350 1275 HLE\001 -4 0 -1 0 0 0 20 0.0000 4 210 750 900 4575 HDM\001 -4 0 -1 0 0 0 16 0.0000 4 165 360 1575 4575 AN\001 -4 0 -1 0 0 0 20 0.0000 4 270 450 6075 2100 HQ\001 -4 0 -1 0 0 0 20 0.0000 4 210 570 6075 1200 HSL\001 -4 0 -1 0 0 0 16 0.0000 4 165 330 6600 1200 AB\001 -4 0 -1 0 0 0 20 0.0000 4 210 450 6075 1500 HC\001 -4 0 -1 0 0 0 20 0.0000 4 210 420 6075 1800 HL\001 -4 0 -1 0 0 0 20 0.0000 4 270 810 4650 2475 Speech\001 -4 0 -1 0 0 0 16 0.0000 4 165 165 1950 1275 D\001 -4 0 -1 0 0 0 20 0.0000 4 210 570 1350 1650 HLS\001 -4 0 -1 0 0 0 16 0.0000 4 165 675 6525 2100 UANT\001 -4 0 -1 0 0 0 16 0.0000 4 165 375 6450 1800 IST\001 -4 0 -1 0 0 0 16 0.0000 4 165 450 6525 1500 OPY\001 -4 0 -1 0 0 0 16 0.0000 4 165 615 1875 1650 TATS\001 -4 0 -1 0 0 0 20 0.0000 4 210 450 3450 7500 HR\001 -4 0 -1 0 0 0 20 0.0000 4 210 420 900 6900 HB\001 -4 0 -1 0 0 0 16 0.0000 4 165 570 1275 6900 UILD\001 -4 0 -1 0 0 0 16 0.0000 4 165 885 3825 7500 ESULTS\001 -4 0 -1 0 0 0 20 0.0000 4 210 390 2325 3825 HS\001 -4 0 -1 0 0 0 16 0.0000 4 165 870 2700 3825 MOOTH\001 -4 0 -1 0 0 0 20 0.0000 4 270 810 3600 3825 , HHE\001 -4 0 -1 0 0 0 16 0.0000 4 165 165 4350 3825 D\001 -4 0 -1 0 0 0 16 0.0000 4 165 630 5325 3825 DAPT\001 -4 0 -1 0 0 0 20 0.0000 4 270 810 4575 3825 , HEA\001 -4 0 -1 0 0 0 20 0.0000 4 270 1800 3225 6750 Transcriptions\001 -4 0 -1 0 0 0 20 0.0000 4 270 1800 2400 2475 Transcriptions\001 diff --git a/HTKBook/HTKXFigs/vtlnpiecewise.fig b/HTKBook/HTKXFigs/vtlnpiecewise.fig deleted file mode 100644 index f73e163..0000000 --- a/HTKBook/HTKXFigs/vtlnpiecewise.fig +++ /dev/null @@ -1,63 +0,0 @@ -#FIG 3.1 -Landscape -Center -Metric -1200 2 -6 2395 2290 2635 2455 -6 2440 2350 2635 2455 -4 0 -1 0 0 0 8 0.0000 4 105 195 2440 2440 orig\001 --6 -4 0 -1 0 0 0 10 0.0000 4 105 60 2395 2395 f\001 --6 -6 825 2345 905 2465 -6 825 2345 905 2465 -4 0 -1 0 0 0 8 0.0000 4 75 45 825 2420 f\001 -4 0 -1 0 0 0 6 0.0000 4 60 60 845 2465 L\001 --6 --6 -6 1835 2355 1925 2470 -4 0 -1 0 0 0 8 0.0000 4 75 45 1835 2430 f\001 -4 0 -1 0 0 0 6 0.0000 4 60 60 1865 2470 U\001 --6 -6 675 1255 905 1355 -4 0 -1 0 0 32 8 0.0000 4 60 90 675 1315 a\001 -4 0 -1 0 0 0 6 0.0000 4 60 150 755 1355 min\001 --6 -6 1300 1805 1555 1900 -4 0 -1 0 0 32 8 0.0000 4 60 90 1300 1865 a\001 -4 0 -1 0 0 0 6 0.0000 4 45 165 1390 1900 max\001 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 1 2 - 0 0 1.00 60.00 120.00 - 450 225 450 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 225 2250 2475 2250 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 225 450 2475 450 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 2250 225 2250 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1575 675 2250 450 -2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 2 - 450 2250 2250 450 -2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 2 - 1575 675 2025 1125 -2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 2 - 900 2025 675 1800 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 450 2250 675 1800 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 450 2250 900 2025 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 900 2025 2025 1125 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 2025 1125 2250 450 2250 495 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 675 1800 1575 675 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 785 1925 785 2405 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 1800 900 1800 2380 -4 0 -1 0 0 0 10 0.0000 4 105 60 515 285 f\001 -4 0 -1 0 0 0 8 0.0000 4 75 315 560 345 scaled\001 diff --git a/HTKBook/Makefile b/HTKBook/Makefile deleted file mode 100644 index aaa7493..0000000 --- a/HTKBook/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -all: htkbook.ps html htkbook.pdf - -maintex = htkbook.tex HTK.tex errors.tex hlmtutorial.tex labels.tex \ - speechio.tex adapt.tex exampsys.tex models.tex \ - train.tex config.tex fundaments.tex netdict.tex decode.tex \ - hlmfiles.tex htkoview.tex openviron.tex discmods.tex \ - hlmfund.tex htkslf.tex refine.tex - -reftex = HTKRef/Cluster.tex HTKRef/HInit.tex HTKRef/HResults.tex \ - HTKRef/LGCopy.tex HTKRef/HBuild.tex HTKRef/HLEd.tex \ - HTKRef/HSGen.tex HTKRef/LGList.tex HTKRef/HCompV.tex \ - HTKRef/HLMCopy.tex HTKRef/HSLab.tex HTKRef/LGPrep.tex \ - HTKRef/HCopy.tex HTKRef/HLStats.tex HTKRef/HSmooth.tex \ - HTKRef/LMerge.tex HTKRef/HDMan.tex HTKRef/HList.tex \ - HTKRef/HVite.tex HTKRef/LPlex.tex \ - HTKRef/HParse.tex HTKRef/LAdapt.tex HTKRef/LSubset.tex \ - HTKRef/HERest.tex HTKRef/HQuant.tex HTKRef/LBuild.tex \ - HTKRef/tools.tex HTKRef/HHEd.tex HTKRef/HRest.tex \ - HTKRef/LFoF.tex HTKRef/HLRescore.tex - -figures = HTKFigs/Blocking.eps HTKFigs/melfbank.eps \ - HTKFigs/Config.eps HTKFigs/memheap.eps \ - HTKFigs/HLMoperation.eps HTKFigs/messencode.eps \ - HTKFigs/HTKFormat.eps HTKFigs/mononet.eps \ - HTKFigs/LTool.eps HTKFigs/muacc.eps \ - HTKFigs/netforcsr.eps HTKFigs/overview.eps \ - HTKFigs/MMFeg.eps HTKFigs/parher.eps \ - HTKFigs/ClassLM.eps HTKFigs/qstree.eps \ - HTKFigs/Spmods.eps HTKFigs/recipe.eps \ - HTKFigs/Tool.decode.eps HTKFigs/recnetlev.eps \ - HTKFigs/digitnets.eps HTKFigs/subsmixrep.eps \ - HTKFigs/dmaker.eps HTKFigs/subword.eps \ - HTKFigs/egsils.eps HTKFigs/sysoview.eps \ - HTKFigs/egtranstie.eps HTKFigs/tcover.eps \ - HTKFigs/endpointer.eps HTKFigs/tiedstate.eps \ - HTKFigs/flatst.eps HTKFigs/tmixeg.eps \ - HTKFigs/headapt.eps HTKFigs/toolkit.eps \ - HTKFigs/headaptrdp.eps HTKFigs/tracc.eps \ - HTKFigs/herestdp.eps HTKFigs/tsubword.eps \ - HTKFigs/hierarch.eps HTKFigs/useforiso.eps \ - HTKFigs/hinitdp.eps HTKFigs/vaacc.eps \ - HTKFigs/hmm1.eps HTKFigs/vitloop.eps \ - HTKFigs/hsetdef.eps HTKFigs/vmatrep.eps \ - HTKFigs/hslab.eps HTKFigs/vqtohmm.eps \ - HTKFigs/htktools.eps HTKFigs/vtlnpiecewise.eps \ - HTKFigs/hvalign.eps HTKFigs/vtrellis.eps \ - HTKFigs/isoprob.eps HTKFigs/wdnet.eps \ - HTKFigs/isoword.eps HTKFigs/wdnet0.eps \ - HTKFigs/itemtree.eps HTKFigs/wdnet1.eps \ - HTKFigs/labegs.eps HTKFigs/wintnet.eps \ - HTKFigs/WordLM.eps HTKFigs/wtacc.eps \ - HTKFigs/markovgen.eps HTKFigs/xwrdnet.eps \ - HTKFigs/wlroper.eps - -htkbook.pdf: $(maintex) $(reftex) $(figures) - sed -e 's/\%\\usepackage\[dvipdfm/\\usepackage\[dvipdfm/' htkbook.tex >htkbook-pdf.tex - latex htkbook-pdf.tex - latex htkbook-pdf.tex - makeindex htkbook-pdf.idx - latex htkbook-pdf.tex - dvipdfm -p a4 -o htkbook.pdf htkbook-pdf.dvi - # If dvipdfm is not installed then try: - # dvipdf htkbook-pdf.dvi htkbook.pdf (but linked references will fail) - -htkbook.ps: htkbook.dvi - dvips -t a4 -K -o htkbook.ps htkbook.dvi - -htkbook.dvi: $(maintex) $(reftex) $(figures) - latex htkbook - latex htkbook - makeindex htkbook.idx - latex htkbook - -html: htkbook.dvi - -mkdir -p htkbook - latex2html -t "HTKBook for HTK3" -address "Back to HTK site
See front page for HTK Authors" -white -transparent -html_version 4.0,frame -dir htkbook htkbook.tex - -all: htkbook.ps htkbook.pdf html - -.PHONY: clean -clean: - -rm -f *.aux *.log *.toc htkbook.i* *.dvi *.ps *.pdf \ - *.ps.gz *.pdf.gz \ - HTKRef/*.aux htkbook-pdf.* - -rm -rf htkbook/ - diff --git a/HTKBook/README b/HTKBook/README deleted file mode 100644 index ef93252..0000000 --- a/HTKBook/README +++ /dev/null @@ -1,12 +0,0 @@ -This directory contains the LaTeX sources of the HTK user -documentation (HTKBook). - -Postscript, pdf and html versions of the HTKBook can be downloaded -from - - http://htk.eng.cam.ac.uk/docs/docs.shtml - -Currently the generation of pdf and html probably only works at CUED, -but we are planning to clean up the LaTeX to make it more portable. - - ge 4.9.2000 diff --git a/HTKBook/adapt.tex b/HTKBook/adapt.tex deleted file mode 100644 index 9a7a732..0000000 --- a/HTKBook/adapt.tex +++ /dev/null @@ -1,915 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -\mychap{HMM Adaptation}{Adapt} - -\sidepic{headapt}{80}{ -Chapter~\ref{c:Training} described how the parameters are estimated -for plain continuous density HMMs within \HTK, primarily using the -embedded training tool \htool{HERest}. Using the training strategy -depicted in figure~\ref{f:subword}, together with other techniques can -produce high performance speaker independent acoustic models for a -large vocabulary recognition system. However it is possible to build -improved acoustic models by tailoring a model set to a specific -speaker. By collecting data from a speaker and training -a model set on this speaker's data alone, the speaker's characteristics -can be modelled more accurately. Such systems are commonly -known as \textit{speaker dependent} systems, and on a typical word -recognition task, may have half the errors of a speaker -independent system. The drawback of speaker dependent systems is that -a large amount of data (typically hours) must be collected in order to -obtain sufficient model accuracy. -} - -Rather than training speaker dependent models, -\textit{adaptation} techniques can be applied. In this case, by using -only a small amount of data from a new speaker, a good speaker -independent system model set can be adapted to better fit the -characteristics of this new speaker. - -Speaker adaptation techniques can be used in various different -modes\index{adaptation!adaptation modes}. If -the true transcription of the adaptation data is known then -it is termed -\textit{supervised adaptation}\index{adaptation!supervised adaptation}, -whereas if the adaptation -data is unlabelled then it is termed -\textit{unsupervised adaptation}\index{adaptation!unsupervised -adaptation}. -In the case where all the adaptation data is available in one block, -e.g. from a speaker enrollment session, then this termed \textit{static -adaptation}. Alternatively adaptation can proceed incrementally as -adaptation data becomes available, and this is termed -\textit{incremental adaptation}. -% \htool{HVite} can provide unsupervised incremental adaptation. - -\HTK\ provides two tools to adapt continuous density HMMs. -\htool{HERest}\index{headapt@\htool{HERest}} -performs offline supervised adaptation using various forms of linear -transformation and/or maximum a-posteriori (MAP) adaptation, while -unsupervised adaptation is supported by \htool{HVite} (using only -linear transformations). In this case \htool{HVite} not only performs -recognition, but simultaneously adapts the model set as the data -becomes available through recognition. Currently, linear -transformation adaptation can be applied in both incremental and -static modes while MAP supports only static adaptation. - -This chapter describes the operation of supervised adaptation with the -\htool{HERest} tools. The first sections of the chapter give an -overview of linear transformation schemes and MAP adaptation and this -is followed by a section describing the general usages of -\htool{HERest} to build simple and more complex adapted systems. The -chapter concludes with a section detailing the various formulae used -by the adaptation tool. The use of \htool{HVite} to perform -unsupervised adaptation is described in the RM Demo. - -\mysect{Model Adaptation using Linear Transformations}{mllr} - -\mysubsect{Linear Transformations}{whatismllr} - -This section briefly discusses the forms of transform available. Note -that this form of adaptation is only available with diagonal -continuous density HMMs. - -The transformation matrices are all obtained by solving a maximisation -problem using the \textit{Expectation-Maximisation} (EM) -technique. Using EM results in the maximisation of a standard -\textit{auxiliary function}. (Full details are available in -section~\ref{s:mllrformulae}.) - -\mysubsub{Maximum Likelihood Linear Regression ({\tt MLLRMEAN})}{mumllr} - -Maximum likelihood linear regression or MLLR\index{adaptation!MLLR} -computes a set of transformations that will reduce the mismatch -between an initial model set and the adaptation data\footnote{ -MLLR can also be used to perform environmental compensation by -reducing the mismatch due to channel or additive noise effects.}. -More specifically MLLR is a model adaptation technique -that estimates a set of linear transformations for the mean and -variance parameters of a Gaussian mixture HMM system. -%The set of -%transformations are estimated so to as to maximise the likelihood of the -%adaptation data. -The effect of these transformations is to shift the -component means and alter the variances in the initial system -so that each state in the HMM system is more likely to generate the -adaptation data. - -The transformation matrix used to give a new estimate of the adapted mean is -given by -\hequation{ - \hat{\bm{\mu}} = \bm{W}\bm{\xi}, -}{mtrans} -where $\bm{W}$ is the $n \times \left( n + 1 \right)$ -transformation matrix (where $n$ is the dimensionality of the data) -and $\bm{\xi}$ is the extended mean vector, -\[ - \bm{\xi} = \left[\mbox{ }w\mbox{ }\mu_1\mbox{ }\mu_2\mbox{ }\dots\mbox{ }\mu_n\mbox{ }\right]^\transpose -\] -where $w$ represents a bias offset whose value is fixed (within \HTK) at 1.\\ -Hence $\bm{W}$ can be decomposed into -\hequation{ - \bm{W} = \left[\mbox{ }\bm{b}\mbox{ }\bm{A}\mbox{ }\right] -}{decompmtrans} -where $\bm{A}$ represents an $n \times n$ -transformation matrix and $\bm{b}$ represents a bias vector. This -form of transform is referred to in the code as {\tt MLLRMEAN}. - -\mysubsub{Variance MLLR ({\tt MLLRVAR} and {\tt MLLRCOV})}{vmllr} - -There are two standard forms of linear adaptation of the variances. The first -is of the form -\[ - \hat{\bm{\Sigma}} = \bm{B}^\transpose\bm{H}\bm{B} -\] -where $\bm{H}$ is the linear transformation to be estimated and -$\bm{B}$ is the inverse of the Choleski factor of $\bm{\Sigma}^{-1}$, -so -\[ - \bm{\Sigma}^{-1} = \bm{C}\bm{C}^\transpose -\] -and -\[ - \bm{B}= \bm{C}^{-1} -\] -This form of transform results in an effective full covariance matrix if -the transform matrix $\bm{H}$ is full. This makes likelihood calculations -highly inefficient. This form of transform is only available with a -diagonal transform and in conjunction with estimating an MLLR transform. The -MLLR transform is used as a parent transform for estimating $\bm{H}$. -This form of transform is referred to in the code as {\tt MLLRVAR}. - -An alternative more efficient form of variance transformation is also available. -Here, the transformation of the covariance matrix is of the form -\hequation{ - \hat{\bm{\Sigma}} = \bm{H}\bm{\Sigma}\bm{H}^\transpose, -}{covtrans} -where $\bm{H}$ is the $n\times n$ covariance transformation matrix. -This form of transformation, referred to in the code as {\tt MLLRCOV} -can be efficiently implemented as a transformation of the means and -the features. -\hequation{ - {\cal N}(\bm{o};\bm{\mu},\bm{H}\bm{\Sigma}\bm{H}) = - \frac{1}{|\bm{H}|}{\cal N}(\bm{H}^{-1}\bm{o};\bm{H}^{-1}\bm{\mu},\bm{\Sigma}) = - {|\bm{A}|}{\cal N}(\bm{A}\bm{o};\bm{A}\bm{\mu},\bm{\Sigma}) -} {covlike} -where $\bm{A}=\bm{H}^{-1}$. -Using this form it is possible to estimate and efficiently apply full transformations. -{\tt MLLRCOV} transformations are normally estimated using {\tt MLLRMEAN} transformations -as the parent transform. - -\mysubsub{Constrained MLLR ({\tt CMLLR})}{cmllr} - -Constrained maximum likelihood linear regression or CMLLR\index{adaptation!CMLLR} -computes a set of transformations that will reduce the mismatch -between an initial model set and the adaptation data\footnote{ -MLLR can also be used to perform environmental compensation by -reducing the mismatch due to channel or additive noise effects.}. -More specifically CMLLR is a feature adaptation technique -that estimates a set of linear transformations for the features. -The effect of these transformations is to shift the -feature vector in the initial system -so that each state in the HMM system is more likely to generate the -adaptation data. -Note that due to computational reasons, CMLLR is only implemented -within \HTK\ for diagonal covariance, continuous density -HMMs. - -The transformation matrix used to give a new estimate of the adapted mean is -given by -\hequation{ - \hat{\bm{o}} = \bm{W}\bm{\zeta}, -}{mtrans2} -where $\bm{W}$ is the $n \times \left( n + 1 \right)$ -transformation matrix (where $n$ is the dimensionality of the data) -and $\bm{\zeta}$ is the extended observation vector, -\[ - \bm{\zeta} = \left[\mbox{ }w\mbox{ }o_1\mbox{ }o_2\mbox{ }\dots\mbox{ }o_n\mbox{ }\right]^\transpose -\] -where $w$ represents a bias offset whose value is fixed (within \HTK) at 1.\\ -Hence $\bm{W}$ can be decomposed into -\hequation{ - \bm{W} = \left[\mbox{ }\bm{b}\mbox{ }\bm{A}\mbox{ }\right] -}{decompmtrans2} -where $\bm{A}$ represents an $n \times n$ -transformation matrix and $\bm{b}$ represents a bias vector. -This form of transform is referred to in the code as {\tt CMLLR}. - -Since multiple \texttt{CMLLR} transforms may be used it is important to -include the Jacobian in the likelihood calculation. -\hequation{ - {\cal L}(\bm{o};\bm{\mu},\bm{\Sigma}, \bm{A}, \bm{b}) = - {|\bm{A}|}{\cal N}(\bm{A}\bm{o}+\bm{b};\bm{\mu},\bm{\Sigma}) -} {cmllrlike} -This is the implementation used in the code. - - -\mysubsect{Input/Output/Parent Transformations}{whattransform} -There are three types of linear transform that may be used with -the HTKTools. -\begin{itemize} - -\item {\it Input transform}: the input transform is used to determine -the forward-backward probabilities, hence the component posteriors, -for estimating model and transform parameters. MLLR transforms can be -iteratively estimated by refining the posteriors using a newly -estimated transform. - -\item {\it Output transform}: the output transform is the transform -that is generated. The form of the transform is specified using the -appropriate configuration options. - -\item {\it Parent transform}: the parent transform determines the -model, or features, on which the model set or transform is to be -generated. For transform estimation this allows {\em cascades} of transforms -to be used to adapt the model parameters. For model estimation this -supports {\em speaker adaptive training}. Note the current implementation -only supports adaptive training with CMLLR. Any parent transform can be -used when generating transforms. -\end{itemize} - -There is no difference in the storage of the transform parameters, whether it is to be a parent transform or an input transform. There is -also no restrictions on the base classes, or regression classes, that -are used for each transform. - -\mysubsect{Base Class Definitions}{base_classes} -The first requirement to allow adaptation is to specify the set of -the components that share the same transform. This is achieved using a -baseclass. The baseclass definition files uses the same syntax for -defining components as the \htool{HHEd} command. However, for -baseclass definitions the components must always be specified. - -\begin{figure}[htbp] -\begin{verbatim} - ~b ``global'' - CUED_WSJ* - MIXBASE - 1 - 1 {*.state[2-4].mix[1-12]} -\end{verbatim} -\caption{Global base class definition} -\label{fig:globbase} -\end{figure} -The simplest form of transform uses a global transformation for all -components. Figure~\ref{fig:globbase} shows a global transformation -for a system where there are upto 3 emitting states and upto 12 -Gaussian components per state. - -\begin{figure}[htbp] -\begin{verbatim} - ~b ``baseclass_4.base'' - CUED_WSJ* - MIXBASE - 4 - 1 {(one,sil).state[2-4].mix[1-12]} - 2 {two.state[2-4].mix[1-12]} - 3 {three.state[2-4].mix[1-12]} - 4 {four.state[2-4].mix[1-12]} -\end{verbatim} -\caption{Four base classes definition} -\end{figure} - -These baseclasses may be directly used to determine which components -share a particular transform. However a more general approach -is to use a regression class tree. - -\mysubsect{Regression Class Trees}{reg_classes} -\index{adaptation!regression tree} -To improve the flexibility of the adaptation process it is possible to -determine the appropriate set of baseclasses depending on the amount -of adaptation data that is available. If a small amount of data is -available then a \textit{global} adaptation transform -\index{adaptation!global transforms} can be generated. A global transform -(as its name suggests) is applied -to every Gaussian component in the model set. However as more -adaptation data becomes available, improved adaptation is possible by -increasing the number of transformations. Each transformation is now -more specific and applied to certain groupings of Gaussian components. -For instance the Gaussian components could be grouped into the broad -phone classes: silence, vowels, stops, glides, nasals, fricatives, etc. -The adaptation data could now be used to construct more specific broad -class transforms to apply to these groupings. - -Rather than specifying static component groupings or classes, a robust -and dynamic method is used for the construction of further transformations -as more adaptation data becomes available. MLLR makes -use of a \textit{regression class tree} to group the Gaussians in the -model set, so that the set of transformations to be estimated can be -chosen according to the amount and type of adaptation data that is -available. The tying of each transformation across a number of mixture -components makes it possible to adapt distributions for which there -were no observations at all. With this process all models can be -adapted and the adaptation process is dynamically refined when more -adaptation data becomes available. - -The regression class tree is constructed so as to cluster together -components that are close in acoustic space, so that similar -components can be transformed in a similar way. Note that the tree is -built using the original speaker independent model set, and is thus -independent of any new speaker. The tree is constructed with a -centroid splitting algorithm, which uses a Euclidean distance -measure. For more details see section~\ref{s:hhedregtree}. The -terminal nodes or leaves of the tree specify the final component -groupings, and are termed the \textit{base (regression) classes}. Each -Gaussian component of a model set belongs to one particular base -class. The tool \htool{HHEd} can be used to build a binary regression -class tree, and to label each component with a base class number. -Both the tree and component base class numbers can be saved as part of -the MMF, or simply stored separately. Please refer to -section~\ref{s:hhedregtree} for further details. - -\sidefig{regtree1}{55}{A binary regression tree}{4}{} -Figure~\ref{f:regtree1} shows a simple example of a binary regression -tree with four base classes, denoted as $\{C_4, C_5, C_6, -C_7\}$. During ``dynamic'' adaptation, the occupation counts are -accumulated for each of the regression base classes. The diagram shows -a solid arrow and circle (or node), indicating that there is -sufficient data for a transformation matrix to be generated using the -data associated with that class. A dotted line and circle indicates -that there is insufficient data. For example neither node 6 or 7 has -sufficient data; however when pooled at node 3, there is sufficient -adaptation data. The amount of data that is ``determined'' as -sufficient is set as a configuration option for \htool{HERest} (see -reference section~\ref{s:HERest}). - -\htool{HERest} uses a top-down approach to traverse the regression -class tree. Here the search starts at the root node and progresses -down the tree generating transforms only for those nodes which -\begin{enumerate} -\item have sufficient data \textbf{and} -\item are either terminal nodes (i.e. base classes) \textbf{or} have -any children without sufficient data. -\end{enumerate} - -In the example shown in figure~\ref{f:regtree1}, transforms are constructed -only for regression nodes 2, 3 and 4, which can be denoted as -${\bf W}_2$, ${\bf W}_3$ and ${\bf W}_4$. Hence when the transformed -model set is required, the transformation matrices (mean and variance) -are applied in the following fashion to the Gaussian components in -each base class:- -\[ - \left\{ - \begin{array}{ccl} - {\bf W}_2 & \rightarrow & \left\{C_5\right\} \\ - {\bf W}_3 & \rightarrow & \left\{C_6, C_7\right\} \\ - {\bf W}_4 & \rightarrow & \left\{C_4\right\} - \end{array} - \right\} -\] - -At this point it is interesting to note that the global adaptation -case is the same as a tree with just a root node, and is in fact -treated as such. - -\begin{center} -\begin{figure} -\begin{verbatim} - ~r "regtree_4.tree" - ~b "baseclass_4.base" - 1 2 2 3 - 2 2 4 5 - 3 2 6 7 - 4 1 1 - 5 1 2 - 6 1 3 - 7 1 4 -\end{verbatim} -\caption{Regression class tree example} -\label{fig:regtree} -\end{figure} -\end{center} -An example of a regression class tree is shown in figure~\ref{fig:regtree}. -This uses the four baseclasses from the baseclass macro ``baseclass\_4.base''. -A binary regression tree is shown, thus there are 4 terminal nodes. - -\mysubsect{Linear Transform Format}{tmfs} - -\htool{HERest} estimates the required transformation statistics and can -either output a set of transformation models, or a single transform -model file (TMF)\index{adaptation!transform model file}. The advantage -in storing the transforms as opposed to an adapted MMF is that the -TMFs are considerably smaller than MMFs (especially triphone -MMFs). This section gives examples of the format that the transforms -are stored in. For a description of the transform definition see -section~\ref{s:hmmdef}. - -\noindent - -\begin{figure}[htbp] -\begin{verbatim} - ~a ``cued'' - BASE - ~b ``global'' - - CMLLR - 1 - 1 5 - - 5 - -0.357 0.001 -0.002 0.132 0.072 - -0.3419 - 2 3 2 - 1 - 3 3 - 0.942 -0.032 -0.001 - -0.102 0.922 -0.015 - -0.016 0.045 0.910 - 2 - 2 2 - 1.028 -0.032 - -0.017 1.041 - - 1 1 -\end{verbatim} -\caption{Example Constrained MLLR transform using hard weights} -\end{figure} -Figure~\ref{fig:hiermllr} shows the format of a single transform. In -the same fashion as HMMs all transforms are stored as macros. The -header information gives how the transform was estimated, currently -either with a regression class tree {\tt TREE} or directly using the -base classes {\tt BASE}. The base class macro is then specified. The -form of transformation is then described in the transformset. The code -currently supports constrained MLLR (illustrated), MLLR mean -adaptation, MLLR full variance adaptation and diagonal variance -adaptation. Arbitrary block structures are allowable. The assignment -of base class to transform number is specified at the end of the file. - -The {\tt LOGDET} value stored with the transform is {\em twice} the -log-determinant of the transform\footnote{There is no advantage in storing -twice the log determininat, however this is maintained for backward -compatibility with internal HTK releases.}. - -\mysubsect{Hierarchy of Transform}{hieradapt} -It is possible to specify a hierarchy of transformations. This results -from using a parent transform during the training process. -\begin{figure}[htbp] -\begin{verbatim} - ~a ``mjfg'' - TREE - ~b ``baseclass_4.base'' - ~a ``cued'' - - MLLRMEAN - 2 - 1 5 - - 5 - -0.357 0.001 -0.002 0.132 0.072 - 2 3 2 - 1 - 3 3 - 0.942 -0.032 -0.001 - -0.102 0.922 -0.015 - -0.016 0.045 0.910 - 2 - 2 2 - 1.028 -0.032 - -0.017 1.041 - 2 5 - - 5 - -0.357 0.001 -0.002 0.132 0.072 - 2 3 2 - 1 - 3 3 - 0.942 -0.032 -0.001 - -0.102 0.922 -0.015 - -0.016 0.045 0.910 - 2 - 2 2 - 1.028 -0.032 - -0.017 1.041 - - 1 1 - 2 1 - 3 1 - 4 2 -\end{verbatim} -\caption{Example of an MLLR transform using with a parent transform} -\label{fig:hiermllr} -\end{figure} -Figure~\ref{fig:hiermllr} shows the use of a set of MLLR transforms -generated using a parent CMLLR transform stored in the macro ``cued''. The -action of this transform is -\begin{enumerate} -\item Apply transform {\tt cued} -\item Apply transform {\tt mjfg} -\end{enumerate} -The parent transform is always applied {\it before} the transform -itself. - -Hierarchy of transforms automatically result from using a parent transform -when estimating a transform. - -\mysubsect{Multiple Stream Systems}{streamadapt} -The specification of the base-class components are given in terms -of the Gaussian component. In HTK this is specified for a particular -stream of the HMM state. When multiple streams are used there are two -situations to consider\footnote{The current code in \htool{HHEd} for -generating decision trees does not support generating trees for multiple -streams. However, the code does support adaptation for hand generated -trees.}. - -First, if the streams have the same number of components, then transforms -may be shared between different streams. For example it may be decided that -the same linear transform is to be used by the static stream, the delta -stream and the delta-delta stream. - -Second, if the streams have different dimensions associated with them. For -this case the root node is a special node for which a transform cannot be -generated. It is required to partition the Gaussian components so that -all subsequent nodes have the same dimensionality associated with them. - - -\mysect{Adaptive Training with Linear Transforms}{adapttrain} -In order to improve the performance of systems when there are multiple -speakers, or acoustic environments, present in the training corpus -adaptive training may be used. Here, rather than using adaptation -transformations only during test, adaptation transforms are estimated -for each training speaker. The model, sometimes referred to as a {\em canonical -model}, is then estimated given the set of speaker transforms. In the -same fashion as standard training, the whole process can then be repeated. - -In the current implementation, adaptive training is only supported -with constrained MLLR as the transform for each speaker. As CMLLR is -implemented as one, or more, feature-space transformations. The -estimation formulae in section~\ref{s:bwformulae} are simplified -modified to accumulate statistics using -$\bm{A}^{(i)}\bm{o}+\bm{b}^{(i)}$ for all the data from speaker $i$ -rather than $\bm{o}$. The update formula for $\bm{\mu}_{jsm}$ then -becomes -\newcommand{\satliksum}[1]{ - \sum_{i=1}^I\sum_{r=1}^{R^i} \sum_{t=1}^{T_r} L^r_{#1}(t) -} -\[ - \hat{\bm{\mu}}_{jsm} = \frac{ - \satliksum{jsm}(\bm{A}^{(i)}\bm{o}^r_{st}+\bm{b}^{(i)})}{\satliksum{jsm}} -\] - -Specifying that adaptive training is to be used simply requires specifying -the parent transform that the model set should be built on. Note that usually -the parent transform will also be used as an input transform. - -Discriminative adaptive training can also be implemented in HTK. The normal -procedure is to adaptively train an ML system as above. Then, fixing the -ML-estimated CMLLR linear transforms, only the canonical model parameters are -discriminativeloy updated. Thus the update formula for the mean would be -(assuming a single stream) -\newcommand{\liksumdiscs}[1]{ - \sum_{i=1}^I\sum_{r=1}^{R_i} \sum_{t=1}^{T_r} (L^{{\tt num}r}_{#1}(t) - L^{{\tt den}r}_{#1}(t)) -} -\begin{eqnarray*} -\hat{\bm{\mu}}_{jm} = \frac{\liksumdiscs{jm}(\bm{A}^{(i)}\bm{o}^r_{t}+\bm{b}^{(i)}) + D_{jm}{\bm{\mu}}_{jm} -+ \tau^{\tt I}{\bm\mu}^{\tt p}_{jm}} -{\liksumdiscs{jm} + D_{jm} + \tau^{\tt I}} -\end{eqnarray*} -For full details of the various options for discriminative training see -section~\ref{s:discriminative}. There is currently no support in HTK for -discriminatively training linear transforms. - -\mysect{Model Adaptation using MAP}{mapadapt} - -Model adaptation can also be accomplished using a maximum a -posteriori (MAP) approach\index{adaptation!MAP}. -This adaptation process is sometimes -referred to as Bayesian adaptation. MAP adaptation involves the use -of prior knowledge about the model parameter distribution. -Hence, if we know what the parameters of the model are -likely to be (before observing any adaptation data) using the prior -knowledge, we might well be able to make good use of the limited -adaptation data, to obtain a decent MAP estimate. This type of prior -is often termed an informative prior. -Note that if the prior -distribution indicates no preference as to what the model parameters -are likely to be (a non-informative prior), then the MAP estimate -obtained will be identical to that obtained using a maximum likelihood -approach. - -For MAP adaptation purposes, the informative priors that are generally -used are the speaker independent model parameters. For mathematical -tractability conjugate priors are used, which results in a simple -adaptation formula. The update formula for a -single stream system for state $j$ and mixture component $m$ is - -\hequation{ -\hat{\bm{\mu}}_{jm} = \frac{ N_{jm} } { N_{jm} + \tau } \bar{\bm{\mu}}_{jm} + - \frac{ \tau } { N_{jm} + \tau } \bm{\mu}_{jm} -}{meanmap} - -where $\tau$ is a weighting of the a priori knowledge to the -adaptation speech data and $N$ is the occupation likelihood of the -adaptation data, defined as, -\[ - N_{jm} = \liksum{jm} -\] - -where $\bm{\mu}_{jm}$ is the speaker independent mean -and $\bar{\bm{\mu}}_{jm}$ is the mean of the observed adaptation -data and is defined as, -\[ - \bar{\bm{\mu}}_{jm} = \frac{ - \liksum{jm}\bm{o}^r_{t}}{\liksum{jm}} -\] - -As can be seen, if the occupation likelihood -of a Gaussian component ($N_{jm}$) is small, then the -mean MAP estimate will remain close to the speaker -independent component mean. -With MAP adaptation, every single mean -component in the system is updated with a MAP estimate, based on the -prior mean, the weighting and the adaptation data. Hence, MAP -adaptation requires a new ``speaker-dependent'' model set to be saved. - -One obvious drawback to MAP adaptation is that it requires more -adaptation data to be effective when compared to MLLR, because MAP -adaptation is specifically defined at the component level. When -larger amounts of adaptation training data become available, MAP -begins to perform better than MLLR, due to this detailed update of -each component (rather than the pooled Gaussian transformation -approach of MLLR). In fact the two adaptation processes can be -combined to improve performance still further, by using the MLLR -transformed means as the priors for MAP adaptation (by replacing -$\bm{\mu}_{jm}$ in equation~\ref{e:meanmap} with the transformed mean -of equation~\ref{e:mtrans}). In this case -components that have a low occupation likelihood in the adaptation -data, (and hence would not change much using MAP alone) have been -adapted using a regression class transform in MLLR. An example usage -is shown in the following section. - -%\pagebreak - -\mysect{Linear Transformation Estimation Formulae}{mllrformulae} - -For reference purposes, this section lists the various formulae -employed within the \HTK\ adaptation tool\index{adaptation!MLLR -formulae}. It is assumed throughout -that single stream data is used and that diagonal covariances are also -used. All are standard and can be found in various literature. - -The following notation is used in this section -\begin{tabbing} -++ \= ++++++++ \= \kill -\> $\mathcal{M}$ \> the model set\\ -\> $\hat{\mathcal{M}}$ \> the adapted model set\\ -\> $T$ \> number of observations \\ -\> $m$ \> a mixture component \\ -\> $\bm{O}$ \> a sequence of $d$-dimensional observations \\ -\> $\bm{o}(t)$ \> the observation at time $t$, $1 \leq t \leq T $\\ -\> $\bm{\zeta}(t)$\> extended observation at time $t$, $1 \leq t \leq T $ -\\ -\> $\bm{\mu}_{m_r}$ \> mean vector for the mixture component $m_r$\\ -\> $\bm{\xi}_{m_r}$ \> extended mean vector for the mixture component $m_r$\\ -\> $\bm{\Sigma}_{m_r}$ \> covariance matrix for the mixture component $m_r$ \\ -\> $L_{m_r}(t)$ \> the occupancy probability for the mixture component $m_r$\\ -\> \> at time $t$ -\end{tabbing} - -To enable robust transformations to be trained, the transform matrices -are tied across a number of Gaussians. The set of Gaussians which -share a transform is referred to as a regression class. For a -particular transform case $\bm{W_r}$, the $M_r$ Gaussian components -$\left\{m_1, m_2, \dots, m_{M_r}\right\}$ will be tied together, as -determined by the regression class tree (see -section~\ref{s:reg_classes}). The standard auxiliary -function shown below is used to estimate the transforms. -\newcommand{\like}{L_{m_r}(t)} -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = -- \frac{1}{2} -\sum_{r=1}^R -\sum_{m_r=1}^{M_r} -\sum_{t=1}^T -\like\left[ -K^{(m)}+\log(|{\hat{\bm\Sigma}}_{m_r}|)+({\bm o}(t)- -{\hat{\bm\mu}}_{m_r})^\transpose{{\hat{\bm\Sigma}}}_{m_r}^{-1}({\bm o}(t)-{\hat{\bm\mu}}_{m_r}) -\right] \nonumber -\end{eqnarray} -where $K^{(m)}$ subsumes all constants and $\like$, the occupation likelihood, is defined as, -\[ - \like = p(q_{m_r}(t)\;|\;\mathcal{M}, \bm{O}_T) -\] -and $q_{m_r}(t)$ indicates the Gaussian component $m_r$ at time $t$, -and $\bm{O}_T = \left\{\bm{o}(1),\dots,\bm{o}(T)\right\}$ is the -adaptation data. The occupation likelihood is obtained from the -forward-backward process described in section~\ref{s:bwformulae}. - - -\mysubsect{Mean Transformation Matrix ({\tt MLLRMEAN})}{mtransest} -Substituting the for expressions for MLLR mean adaptation -\begin{eqnarray} -\hat{\bm{\mu}}_{m_r} = \bm{W}_r\bm{\xi}_{m_r}, \:\:\:\: -\hat{\bm{\Sigma}}_{m_r} = {\bm{\Sigma}}_{m_r} -\end{eqnarray} -into the auxiliary function, and using the fact that the covariance -matrices are diagonal, yields -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = K -- \frac{1}{2} -\sum_{r=1}^R -\sum_{j=1}^d{ -\left({\bm{w}}_{rj}{\bf G}^{(j)}_r{\bm{w}}^\transpose_{rj} -2 {\bm{w}}_{rj}{\bf k}^{(j)\transpose}_r -\right)} \nonumber -\end{eqnarray} -where ${\bm{w}}_{rj}$ is the $j^{th}$ {\em row} of $\bm{W}_r$, -\begin{eqnarray} -{\bf G}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{1}{\sigma_{m_ri}^{2}}{\bm\xi}_{m_r}{\bm\xi}^{\transpose}_{m_r} -\sum_{t=1}^T\like -\label{eq:gi_mllr} -\end{eqnarray} -and -\begin{eqnarray} -{\bf k}^{(i)}_{r} = \sum_{m_r=1}^{M_r}\sum\limits_{t=1}^T -\like\frac{1}{\sigma^{2}_{m_ri}} -o_i(t){\bm\xi}^{T}_{m_r} -\end{eqnarray} -Differentiating the auxiliary function with respect to the transform -${\bm W}_r$ , and then maximising it with respect to the transformed mean -yields the following update -\begin{eqnarray} -{{\bm{w}}}_{ri} = {\bf k}_r^{(i)}{\bf G}_r^{(i)-1} \label{eq:mllrmeansol} -\end{eqnarray} - -The above expressions assume that each base regression class $r$ has a -separate transform. If regression class trees are used then the shared -transform parameters may be simply estimated by combining the -statistics of the base regression classes. The regression class tree -is used to generate the classes dynamically, so it is not known -a-priori which regression classes will be used to estimate the -transform. This does not present a problem, since $\bm{G}^{(i)}$ and -$\bm{k}^{(i)}$ for the chosen regression class may be obtained from its -child classes (as defined by the tree). If the parent node $R$ has -children $\left\{R_1,\dots,R_C\right\}$ then -\[ - {\bf k}^{(i)} = \sum_{c=1}^{C} {\bf k}^{(i)}_{R_c} -\] -and -\[ - {\bf G}^{(i)} = \sum_{c=1}^{C} {\bf G}^{(i)}_{R_c} -\] -The same approach of combining statistics from multiple children can -be applied to all the estimation formulae in this section. - -\mysubsect{Variance Transformation Matrix ({\tt MLLRVAR}, {\tt MLLRCOV})}{vtransest} - -Estimation of the first variance transformation matrices is only available -for diagonal covariance Gaussian systems in the current implementation, -though full transforms can in theory be estimated. The Gaussian covariance is -transformed using\footnote{In the current implementation of the code this -form of transform can only be estimated in addition to the {\tt MLLRMEAN} -transform}, -\[ - \hat{\bm{\mu}}_{m_r} = \bm{\mu}_{m_r}, \:\:\:\: - \hat{\bm{\Sigma}}_{r} = \bm{B}_{m_r}^\transpose\bm{H}_r\bm{B}_{m_r} -\] -where $\bm{H}_m$ is the linear transformation to be estimated and -$\bm{B}_m$ is the inverse of the Choleski factor of $\bm{\Sigma}_{m_r}^{-1}$, -so -\[ - \bm{\Sigma}_{m_r}^{-1} = \bm{C}_{m_r}\bm{C}_{m_r}^\transpose -\] -and -\[ - \bm{B}_{m_r} = \bm{C}_{m_r}^{-1} -\] -After rewriting the auxiliary function, the transform matrix $\bm{H}_m$ -is estimated from, -\[ - \bm{H}_r = \frac{ \sum_{m_r=1}^{M_r}\bm{C}_{m_r}^\transpose \left[ - \like(\bm{o}(t) - \hat{\bm{\mu}}_{m_r}) - (\bm{o}(t) - \hat{\bm{\mu}}_{m_r})^\transpose \right] - \bm{C}_{m_r} } { \like } -\] -Here, $\bm{H}_r$ is forced to be a diagonal transformation by setting -the off-diagonal terms to zero, which ensures that -$\hat{\bm{\Sigma}}_{m_r}$ is also diagonal. - -The alternative form of variance adaptation us supported for full, -block and diagonal transforms. Substituting the for expressions for -variance adaptation -\begin{eqnarray} -\hat{\bm{\mu}}_{m_r} = \bm{\mu}_{m_r}, \:\:\:\: -\hat{\bm{\Sigma}}_{m_r} = {\bm H}_r{\bm{\Sigma}}_{m_r}{\bm H}_r^\transpose -\end{eqnarray} -into the auxiliary function, and using the fact that the covariance -matrices are diagonal yields -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = K + -\sum_{r=1}^R -\beta_r\log({\bf c}_{ri}{\bf a}_{ri}^\transpose)- -\frac{1}{2} -\sum_{j=1}^d{ -\left({\bf a}_{rj}{\bf G}^{(j)}_r{\bf a}^\transpose_{rj} -\right)} \nonumber -\end{eqnarray} -where -\begin{eqnarray} -\beta_r &=& \sum_{m_r=1}^{M_r}\sum_{t=1}^T\like\\ -{\bm A}_r &=& {\bm H}_r^{-1} -\end{eqnarray} -${\bf a}_{ri}$ is $i^{th}$ row of ${\bm -A}_r$, the $1\times n$ row vector ${\bf c}_{ri}$ is the vector of -cofactors of ${\bm A}_r$, $c_{rij}={\mbox{cof}}({\bf A}_{rij})$, -and ${\bf G}^{(i)}_r$ is defined as -\begin{eqnarray} -{\bf G}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{1}{\sigma_{m_ri}^{2}} -\sum_{t=1}^T\like(\bm{o}(t)-\hat{\bm{\mu}}_{m_r}) -(\bm{o}(t)-\hat{\bm{\mu}}_{m_r})^\transpose -\label{eq:gi_mllr2} -\end{eqnarray} -Differentiating the auxiliary function with respect to the transform -${\bm A}_r$ , and then maximising it with respect to the transformed mean -yields the following update -\begin{eqnarray} -{\bf a}_{ri} ={\bf c}_{ri}{\bf G}^{(i)-1}_r -\sqrt{\left(\frac{\beta_r}{{\bf -c}_{ri}{\bf G}_r^{(i)-1}{\bf c}^\transpose_{ri}}\right)} -\end{eqnarray} -This is an iterative optimisation scheme as the cofactors mean the estimate -of row $i$ is dependent on all the other rows (in that block). For the -diagonal transform case it is of course non-iterative and simplifies to -the same form as the {\tt MLLRVAR} transform. - -\mysubsect{Constrained MLLR Transformation Matrix ({\tt CMLLR})}{cmllrest} - -Substituting the for expressions for CMLLR adaptation where\footnote{For -efficiency this transformation is implemented as -\begin{eqnarray} -\hat{\bm o}_r(t) = \bm{A}_r\bm{o}(t) + \bm{b}_r = \bm{W}_r\bm{\zeta}(t) -\end{eqnarray} -} -\begin{eqnarray} -\hat{\bm{\mu}}_{m_r} = \bm{H}_r\bm{\mu}_{m_r} + \tilde{\bm{b}}_r, \:\:\:\: -\hat{\bm{\Sigma}}_{m_r} = {\bm H}_r{\bm{\Sigma}}_{m_r}{\bm H}_r^\transpose -\end{eqnarray} -into the auxiliary function, and using the fact that the covariance -matrices are diagonal yields -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = K + -\sum_{r=1}^R\left[ -\beta\log({\bf p}_{ri}\bm{w}_{ri}^\transpose)- -\frac{1}{2} -\sum_{j=1}^d{ -\left(\bm{w}_{rj}{\bf G}^{(j)}_r\bm{w}^\transpose_{rj} - 2\bm{w}_{rj}{\bf k}^{(j)}_r -\right)}\right] \nonumber -\end{eqnarray} -where -\begin{eqnarray} -\bm{W}_r = \left[\begin{array}{c c} --\bm{A}_r\tilde{\bm{b}}_r & \bm{H}_r^{-1} \end{array} -\right] = \left[\begin{array}{c c} -\bm{b} & \bm{A} \end{array} -\right] -\end{eqnarray} -$\bm{w}_{ri}$ is $i^{th}$ row of $\bm{W}_r$, the $1\times n$ row vector ${\bf p}_{ri}$ is the zero -extended vector of cofactors of ${\bf A}_r$, ${\bf G}^{(i)}_r$ and ${\bf k}^{(i)}_r$ are defined as -\begin{eqnarray} -{\bf G}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{1}{\sigma_{m_ri}^{2}} -\sum_{t=1}^T\like{\bm\zeta}(t){\bm\zeta}^{\transpose}(t) -\label{eq:gi_mllr3} -\end{eqnarray} -and -\begin{eqnarray} -{\bf k}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{\mu_{m_ri}}{\sigma_{m_ri}^{2}} -\sum_{t=1}^T\like{\bm\zeta}^{\transpose}(t) -\label{eq:gi_mllr4} -\end{eqnarray} -Differentiating the auxiliary function with respect to the transform -$\bm{W}_r$ , and then maximising it with respect to the transformed mean -yields the following update -\begin{eqnarray} -\bm{w}_{ri} = \left(\alpha{{\bf p}_{ri}} + {\bf k}^{(i)}_r\right){\bf G}^{(i)-1}_r -\end{eqnarray} -where $\alpha$ satisfies -\begin{eqnarray} -\alpha^2{\bf p}_{ri}{\bf G}^{(i)-1}_r{\bf p}_{ri}^\transpose+ -\alpha{\bf p}_{ri}{\bf G}^{(i)-1}_r{\bf k}^{(i)\transpose}_r - \beta=0\label{eq:alpha_quad} -\end{eqnarray} -There are thus two possible solutions for $\alpha$. The solutions that -yields the maximum increase in the auxiliary function (obtained by -simply substituting in the two options) is used. This is an iterative -optimisation scheme as the cofactors mean the estimate of row $i$ is -dependent on all the other rows (in that block). - -%%% Local Variables: -%%% mode: plain-tex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/config.tex b/HTKBook/config.tex deleted file mode 100644 index 6fc51d2..0000000 --- a/HTKBook/config.tex +++ /dev/null @@ -1,489 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Dave Ollason and Steve Young 11/11/95 -% -% Language modelling details added by Gareth Moore 15-16/01/02 - -\mychap{Configuration Variables}{confvars} - -\index{configuration variables!summary} -This chapter tabulates all configuration variables used in \HTK. - -\mysect{Configuration Variables used in Library Modules}{coninlib} - -%\begin{table}[h] -\begin{center} -\tablecaption{Library Module Configuration Variables} -\tablehead{\hline -Module & Name & Default & Description \\ \hline\hline} -\tabletail{\hline} -\begin{supertabular}{|p{1.8cm}|l|l|p{6.6cm}|} - -% all - & \texttt{TRACE} & \texttt{0} & Trace setting\\ \hline - -% HParm HWave -\htool{HParm} & \texttt{SOURCEFORMAT} & \texttt{HTK} - & File format of source \\ \cline{2-4} -\htool{HWave} & \texttt{TARGETFORMAT} & \texttt{HTK} & File format of target \\ \hline - -% HLabel HAudio HWave HParm -\htool{HLabel} \htool{HAudio} \htool{HWave} \htool{HParm} - & \texttt{SOURCERATE} & \texttt{0.0} & Sample rate of source in 100ns units \\ \hline - -% HParm -\htool{HParm} \htool{HWave} - & \texttt{TARGETRATE} & \texttt{0.0} & Sample rate of target in 100ns units \\ \hline - -% HAudio - & \texttt{LINEOUT} & \texttt{T} & Enable audio output to machine line output \\ \cline{2-4} - & \texttt{PHONESOUT} & \texttt{T} & Enable audio output to machine phones output \\ \cline{2-4} -\htool{HAudio} - & \texttt{SPEAKEROUT} & \texttt{F}& Enable audio output to machine internal speaker \\ \cline{2-4} - & \texttt{LINEIN} & \texttt{T} & Enable audio input from machine line input \\ \cline{2-4} - & \texttt{MICIN} & \texttt{F} & Enable audio input from machine mic input \\ \hline - -% HWave - & \texttt{NSAMPLES} & & Num samples in alien file input via a pipe\\ \cline{2-4} -\htool{HWave} & \texttt{HEADERSIZE} & & Size of header in an alien file\\ \cline{2-4} - & \texttt{BYTEORDER} & & Define byte order \texttt{VAX} or other\\ \cline{2-4} - & \texttt{STEREOMODE} & & Select channel: \texttt{RIGHT} or \texttt{LEFT} \\ \hline - -% HParm - & \texttt{SOURCEKIND} & \texttt{ANON} & Parameter kind of source \\ \cline{2-4} - & \texttt{TARGETKIND} & \texttt{ANON} & Parameter kind of target \\ \cline{2-4} - & \texttt{MATTRANFN } & & Input transformation file \\ \cline{2-4} - & \texttt{SAVECOMPRESSED} & \texttt{F} & Save the output file in compressed form \\ \cline{2-4} - & \texttt{SAVEWITHCRC} & \texttt{T} & Attach a checksum to output parameter file \\ \cline{2-4} -\htool{HParm} - & \texttt{ADDDITHER} & \texttt{0.0} & Level of noise added to input signal \\ \cline{2-4} - & \texttt{ZMEANSOURCE} & \texttt{F} & Zero mean source waveform before analysis \\ \cline{2-4} - & \texttt{WINDOWSIZE} & \texttt{256000.0} & Analysis window size in 100ns units \\ \cline{2-4} - & \texttt{USEHAMMING} & \texttt{T} & Use a Hamming window \\ \cline{2-4} - & \texttt{DOUBLEFFT} & \texttt{F} & Use twice the required size for FFT \\ \cline{2-4} - & \texttt{PREEMCOEF} & \texttt{0.97} & Set pre-emphasis coefficient \\ \cline{2-4} - & \texttt{LPCORDER} & \texttt{12} & Order of LPC analysis \\ \cline{2-4} - & \texttt{NUMCHANS} & \texttt{20} & Number of filterbank channels \\ \cline{2-4} - & \texttt{LOFREQ} & \texttt{-1.0} & Low frequency cut-off in fbank analysis \\ \cline{2-4} - & \texttt{HIFREQ} & \texttt{-1.0} & High frequency cut-off in fbank analysis \\ \cline{2-4} - & \texttt{WARPFREQ} & \texttt{1.0} & Frequency warping factor \\ \cline{2-4} - & \texttt{WARPLCUTOFF} & & Lower frequency threshold for non-linear warping \\ \cline{2-4} - & \texttt{CMEANDIR} & & Directory to find cepstral mean vectors \\ \cline{2-4} - & \texttt{CMEANMASK} & & Filename mask for cepstral mean vectors \\ \cline{2-4} - & \texttt{CMEANPATHMASK} & & Path name mask for cepstral mean vectors, the matched string is used to extend CMEANDIR string \\ \cline{2-4} - & \texttt{VARSCALEDIR} & & Directory to find cepstral variance vectors \\ \cline{2-4} - & \texttt{VARSCALEMASK} & & Filename mask for cepstral variance vectors \\ \cline{2-4} - & \texttt{VARSCALEPATHMASK} & & Path name mask for cepstral variance vectors, the matched string is used to extend VARSCALEDIR string\\ \cline{2-4} - & \texttt{VARSCALEFN} & & Filename of global variance scaling vector \\ \cline{2-4} - & \texttt{COMPRESSFACT} & 0.33 & Amplitude compression factor for PLP \\ \hline - -% HLabel HParm -\htool{HLabel} \htool{HParm} - & \texttt{V1COMPAT} & \texttt{F} & HTK V1 compatibility setting \\ \hline - -%\end{tabular} -%\end{center} -%\caption{Library Module Configuration Variables} -%\end{table} -%\clearpage - -%\begin{table}[h] -%\begin{center} -%\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{1.1cm}|p{6.6cm}|} \hline -%Module & Name & Default & Description \\ \hline\hline - -% HWave HShell -\htool{HWave} - & \texttt{NATURALREADORDER} & \texttt{F} & Enable natural read order for binary files \\ \cline{2-4} -\htool{HShell} - & \texttt{NATURALWRITEORDER} & \texttt{F} & Enable natural write order for binary files \\ \hline - -% HParm - & \texttt{USEPOWER} & \texttt{F} & Use power not magnitude in fbank analysis \\ \cline{2-4} - & \texttt{NUMCEPS} & \texttt{12} & Number of cepstral parameters \\ \cline{2-4} - & \texttt{CEPLIFTER} & \texttt{22} & Cepstral liftering coefficient \\ \cline{2-4} - & \texttt{ENORMALISE} & \texttt{T} & Normalise log energy \\ \cline{2-4} - & \texttt{ESCALE} & \texttt{0.1} & Scale log energy \\ \cline{2-4} - & \texttt{SILFLOOR} & \texttt{50.0} & Energy silence floor in dBs \\ \cline{2-4} - & \texttt{DELTAWINDOW} & \texttt{2} & Delta window size \\ \cline{2-4} - & \texttt{ACCWINDOW} & \texttt{2} & Acceleration window size \\ \cline{2-4} - & \texttt{VQTABLE} & \texttt{NULL} & Name of VQ table \\ \cline{2-4} - & \texttt{SIMPLEDIFFS} & \texttt{F} & Use simple differences for delta calculations \\ \cline{2-4} - & \texttt{RAWENERGY} & \texttt{T} & Use raw energy \\ \cline{2-4} - & \texttt{AUDIOSIG} & \texttt{0} & Audio signal number for remote control \\ \cline{2-4} - & \texttt{USESILDET} & \texttt{F} & Enable speech/silence detector \\ \cline{2-4} - & \texttt{MEASURESIL} & \texttt{T} & Measure background silence level \\ \cline{2-4} -\htool{HParm} - & \texttt{OUTSILWARN} & \texttt{T} & Print a warning message to {\tt stdout} before -measuring audio levels \\ \cline{2-4} - & \texttt{SPEECHTHRESH} & \texttt{9.0} & Threshold for speech above silence level (in dB) \\ \cline{2-4} - & \texttt{SILENERGY} & \texttt{0.0} & Average background noise level (in dB) - will -normally be measured rather than supplied in configuration \\ \cline{2-4} - & \texttt{SPCSEQCOUNT} & \texttt{10} & Window over which speech/silence decision reached \\ \cline{2-4} - & \texttt{SPCGLCHCOUNT} & \texttt{0} & Maximum number of frames marked as silence in window which is - classified as speech whilst expecting start of speech \\ \cline{2-4} - & \texttt{SILSEQCOUNT} & \texttt{100} & Number of frames classified as silence needed to mark end of - utterance \\ \cline{2-4} - & \texttt{SILGLCHCOUNT} & \texttt{2} & Maximum number of frames marked as silence in window which is - classified as speech whilst expecting silence \\ \cline{2-4} - & \texttt{SILMARGIN} & \texttt{40} & Number of extra frames included before and after start and end of - speech marks from the speech/silence detector \\ \hline - -% HLabel - & \texttt{STRIPTRIPHONES} & \texttt{F} & Enable triphone stripping \\ \cline{2-4} - & \texttt{TRANSALT} & \texttt{0} & Filter all but specified label alternative \\ \cline{2-4} -\htool{HLabel} - & \texttt{TRANSLEV} & \texttt{0} & Filter all but specified label level \\ \cline{2-4} - & \texttt{LABELSQUOTE} & \texttt{NULL} & Select method for quoting in label files \\ \cline{2-4} - & \texttt{SOURCELABEL} & \texttt{HTK} & Source label format \\ \cline{2-4} - & \texttt{TARGETLABEL} & \texttt{HTK} & Target label format \\ \hline - -%\end{tabular} -%\end{center} -%\caption{Library Module Configuration Variables (cont)} -%\end{table} - -%\begin{table}[h] -%\begin{center} -%\begin{tabular}{|p{1.4cm}|p{2.6cm}|p{1.5cm}|p{6.6cm}|} \hline -%Module & Name & Default & Description \\ \hline\hline - -% HMem -\htool{HMem} & \texttt{PROTECTSTAKS} & \texttt{F} & Enable stack protection \\ \hline - - -% HModel - & \texttt{CHKHMMDEFS} & \texttt{T} & Check consistency of HMM defs \\ \cline{2-4} - & \texttt{SAVEBINARY} & \texttt{F} & Save HMM defs in binary format \\ \cline{2-4} - & \texttt{KEEPDISTINCT} & \texttt{F} & Keep orphan HMMs in distinct files \\ \cline{2-4} - & \texttt{SAVEGLOBOPTS} & \texttt{T} & Save \hmmt{o} with HMM defs \\ \cline{2-4} - & \texttt{SAVEREGTREE} & \texttt{F} & Save \hmmt{r} macros with HMM defs \\ \cline{2-4} -\htool{HModel} - & \texttt{SAVEBASECLASS} & \texttt{F} & Save \hmmt{b} macros with HMM defs \\ \cline{2-4} - & \texttt{SAVEINPUTXFORM} & \texttt{T} & Save \hmmt{i} macros with HMM defs \\ \cline{2-4} - & \texttt{ORPHANMACFILE} & \texttt{NULL} & Last resort file for new macros \\ \cline{2-4} - & \texttt{HMMSETKIND} & \texttt{NULL} & Kind of HMM Set \\ \cline{2-4} - & \texttt{ALLOWOTHERHMMS} & \texttt{T} & Allow MMFs to contain HMM definitions which are - not listed in the HMM List \\ \cline{2-4} - & \texttt{DISCRETELZERO} & \texttt{F} & Map DLOGZERO to LZERO in output probability - calculations \\ \hline - -% HNet - & \texttt{FORCECXTEXP} & \texttt{F} & Force triphone context expansion to get - model names (is overridden by \texttt{ALLOWCXTEXP}) \\ \cline{2-4} - & \texttt{FORCELEFTBI} & \texttt{F} & Force left biphone - context expansion to get model names ie. don't try triphone names \\ \cline{2-4} - & \texttt{FORCERIGHTBI} & \texttt{F} & Force right biphone - context expansion to get model names ie. don't try triphone names \\ \cline{2-4} -\htool{HNet} - & \texttt{ALLOWCXTEXP} & \texttt{T} & Allow context expansion to get model names \\ \cline{2-4} - & \texttt{ALLOWXWRDEXP} & \texttt{F} & Allow context expansion across words \\ \cline{2-4} - & \texttt{FACTORLM} & \texttt{F} & Factor language model likelihoods throughout words rather - than applying all at transition into word. This can increase accuracy when pruning is tight and - language model likelihoods are relatively high. \\ \cline{2-4} - & \texttt{CFWORDBOUNDARY} & \texttt{T} & In word-internal triphone systems, context-free - phones will be treated as word boundaries \\ \hline - -% HRec -\htool{HRec} - & \texttt{FORCEOUT} & \texttt{F} & Forces the most likely partial hypothesis to be used as - the recognition result even when no token reaches the end of the network by the last frame - of the utterance \\ \hline - -% HShell - & \texttt{ABORTONERR} & \texttt{F} & Causes HError to abort rather than exit \\ \cline{2-4} -\htool{HShell} & \texttt{NONUMESCAPES} & \texttt{F} & Prevent writing in \verb+012+ format \\ \cline{2-4} - & \texttt{MAXTRYOPEN} & \texttt{1} & Maximum number of - attempts which will be made to open the same file \\ \cline{2-4} - & \texttt{EXTENDFILENAMES} & \texttt{T} & Support for extended - filenames \\ \hline - - -% HTrain - & \texttt{MAXCLUSTITER} & \texttt{10} & Maximum number - of cluster iterations \\ \cline{2-4} -\htool{HTrain} & \texttt{MINCLUSTSIZE} & \texttt{3} & Minimum number - of elements in any one cluster \\ \cline{2-4} - & \texttt{BINARYACCFORMAT} & \texttt{T} & Save - accumulator files in binary format \\ \hline - -% HFB -\htool{HFB} & \texttt{HSKIPSTART} & \texttt{-1} & Start of skip over region (debugging only) \\ \cline{2-4} - & \texttt{HSKIPEND} & \texttt{-1} & End of skip over region (debugging only) \\ \hline - -% HFBLat - - & \texttt{MINFORPROB} & \texttt{10.0} & Mixture prunning threshold \\ \cline{2-4} - & \texttt{PROBSCALE} & \texttt{1.0} & Scaling factor for the state acoustic and language model probabilities \\ \cline{2-4} - & \texttt{LANGPROBSCALE} & \texttt{1.0} & Additional scaling factor for language model probabilities \\ \cline{2-4} - & \texttt{LATPROBSCALE} & \texttt{1.0} & Scaling factor for the lattice-arc and language model probabilities \\ \cline{2-4} - & \texttt{PHNINSPEN} & \texttt{0.0} & Insertion penalty for each phone \\ \cline{2-4} -\htool{HFBLat} & \texttt{NOSILENCE} & \texttt{F} & Ignore silence from reference transcription when using \emph{non-exact} MPE \\ \cline{2-4} - & \texttt{QUINPHONE} & \texttt{F} & Support quinphone model. Only available if compiled with the \texttt{SUPPORT\_QUINPHONE} directive \\ \cline{2-4} - & \texttt{EXACTCORRECTNESS} & \texttt{F} & Do \emph{exact} version of MPE/MWE \\ \cline{2-4} - & \texttt{PHONEMEE} & \texttt{T} & Set to \texttt{TRUE} for MPE or MWE \\ \cline{2-4} - & \texttt{CALCASERROR} & \texttt{F} & \\ \cline{2-4} - & \texttt{MWE} & \texttt{F} & Set to \texttt{TRUE} for MWE training \\ \cline{2-4} - & \texttt{MEECONTEXT} & \texttt{F} & Use context when calculating accuracies \\ \cline{2-4} - & \texttt{USECONTEXT} & \texttt{F} & Same as \texttt{MEECONTEXT} \\ \cline{2-4} - & \texttt{INSCORRECTNESS} & \texttt{-1} & Correctness of an inserted phone \\ \cline{2-4} - & \texttt{PDE} & \texttt{F} & Use partial distance elimination \\ \hline - -% HAdapt - & \texttt{USEBIAS} & \texttt{F} & Specify a bias with linear transforms \\ \cline{2-4} - & \texttt{SPLITTHRESH} & \texttt{1000.0} & Minimum occupancy to generate a transform \\ \cline{2-4} - & \texttt{TRANSKIND} & \texttt{{\tt MLLRMEAN}} & Transformation kind \\ \cline{2-4} - & \texttt{ADAPTKIND} & \texttt{{\tt BASE}} & Use regression tree or base classes \\ \cline{2-4} - & \texttt{BLOCKSIZE} & \texttt{full} & Block structure of transform\\ \cline{2-4} - & \texttt{BASECLASS} & \texttt{global} & Macroname of baseclass\\ \cline{2-4} - & \texttt{REGTREE} & \texttt{} & Macroname of regression tree\\ \cline{2-4} - \htool{HAdapt} & \texttt{MAXXFORMITER} & \texttt{10} & Maximum iterations for iteratively estimated transforms \\ \cline{2-4} - & \texttt{MLLRDIAGCOV} & \texttt{F} & Generate a diagonal variance transform with MLLR mean transform \\ \cline{2-4} - & \texttt{SAVESPKRMODELS} & \texttt{F} & Store the adapted model set in addition to the transforms \\ \cline{2-4} - & \texttt{KEEPXFORMDISTINCT} & \texttt{T} & Save transforms separate files rather than a TMF \\ \cline{2-4} - & \texttt{MAXSEMITIEDITER} & \texttt{10} & Maximum iterations of model/transform updates for semitied systems \\ \cline{2-4} - & \texttt{SEMITIEDMACRO} & \texttt{SEMITIED} & Macroname for the semitied transform\\ \cline{2-4} - & \texttt{SEMITIED2INPUTXFORM} & \texttt{F} & Store the semi-tied transform as an input xform\\ \cline{2-4} - & \texttt{INITNUISANCEFR} & \texttt{T} & Initialise nuisance dimensions using Fisher ratios\\ \cline{2-4} - & \texttt{NUMNUISANCEDIM} & 0 & Number of dimensions to remove using HLDA\\ \hline - - - -% HMap - & \texttt{MAPTAU} & \texttt{10} & $\tau$ for use with MAP estimation \\ \cline{2-4} - & \texttt{MINEGS} & \texttt{0} & Minimum observations to update state \\ \cline{2-4} - \htool{HMap} & \texttt{MINVAR} & 0 & minimum variance floor value \\ \cline{2-4} - & \texttt{MIXWEIGHTFLOOR} & 0 & MINMIX times this value is the prior floor \\ \hline - - & \texttt{HWAVEFILTER} & & Filter for waveform file input\\ \cline{2-4} - & \texttt{HPARMFILTER} & & Filter for parameter file input\\ \cline{2-4} - & \texttt{HLANGMODFILTER} & & Filter for language model file input\\ \cline{2-4} - & \texttt{HMMLISTFILTER} & & Filter for HMM list file input\\ \cline{2-4} - & \texttt{HMMDEFFILTER} & & Filter for HMM definition file input\\ \cline{2-4} - & \texttt{HLABELFILTER} & & Filter for Label file input\\ \cline{2-4} - & \texttt{HNETFILTER} & & Filter for Network file input\\ \cline{2-4} - & \texttt{HDICTFILTER} & & Filter for Dictionary file input \\ \cline{2-4} - & \texttt{LGRAMFILTER} & & Filter for gram file input\\ \cline{2-4} - & \texttt{LWMAPFILTER} & & Filter for word map file input\\ \cline{2-4} -\htool{HShell} & \texttt{LCMAPFILTER} & & Filter for class map file input\\ \cline{2-4} - & \texttt{LMTEXTFILTER} & & Filter for text file input\\ \cline{2-4} - & \texttt{HWAVEOFILTER} & & Filter for waveform file output\\ \cline{2-4} - & \texttt{HPARMOFILTER} & & Filter for parameter file output\\ \cline{2-4} - & \texttt{HLANGMODOFILTER}& & Filter for language model file output\\ \cline{2-4} - & \texttt{HMMLISTOFILTER} & & Filter for HMM list file output\\ \cline{2-4} - & \texttt{HMMDEFOFILTER} & & Filter for HMM definition file output\\ \cline{2-4} - & \texttt{HLABELOFILTER} & & Filter for Label file output\\ \cline{2-4} - & \texttt{HNETOFILTER} & & Filter for Network file output\\ \cline{2-4} - & \texttt{HDICTOFILTER} & & Filter for Dictionary file output \\ \cline{2-4} - & \texttt{LGRAMOFILTER} & & Filter for gram file output\\ \cline{2-4} - & \texttt{LWMAPOFILTER} & & Filter for word map file output\\ \cline{2-4} - & \texttt{LCMAPOFILTER} & & Filter for class map file -output\\ -\hline -\htool{LModel} & \texttt{RAWMITFORMAT}& \texttt{F} & Disable \HTK\ escaping for LM tools\\ \cline{2-4} - & \texttt{USEINTID} & \texttt{F} & Use 4 byte ID fields to save binary models \\ -\hline - - & \texttt{INWMAPRAW} & \texttt{F} & Disable \HTK\ escaping for input word lists and maps \\ \cline{2-4} -\htool{LWMap} & \texttt{OUTWMAPRAW} & \texttt{F} & Disable \HTK\ escaping for output word lists and maps \\ \cline{2-4} - & \texttt{STARTWORD} & {\tt } & Set sentence start symbol\\ \cline{2-4} - & \texttt{ENDWORD} & {\tt } & Set sentence end symbol\\ -\hline - - & \texttt{INCMAPRAW} & \texttt{F} & Disable \HTK\ escaping for input class lists and maps \\ \cline{2-4} -\htool{LCMap} & \texttt{OUTCMAPRAW} & \texttt{F} & Disable \HTK\ escaping for output class lists and maps \\ \cline{2-4} - & \texttt{UNKNOWNNAME}& {\tt !!UNK} & Set OOV class symbol\\ \cline{2-4} - & \texttt{UNKNOWNID} & \texttt{1} & Set unknown symbol class ID \\ -\hline - - & \texttt{UNIFLOOR} & {\tt 1} & Unigram floor count \\ \cline{2-4} -\htool{LPCalc} & \texttt{KRANGE} & {\tt 7} & Good-Turing discounting range \\ \cline{2-4} - & \texttt{\textit{n}G\_CUTOFF} & {\tt 1} & \textit{n}-gram cutoff - (eg. \texttt{2G\_CUTOFF})\\ \cline{2-4} - & \texttt{DCTYPE} & \texttt{TG} & Discounting type - (\texttt{TG} for Turing-Good or \texttt{ABS} for Absolute\\ -% or \texttt{LIN} for Linear) - this seems not to have been fully implemented (!) \\ -\hline -\htool{LGBase} & \texttt{CHECKORDER} & \texttt{F} & Check N-gram ordering in files \\ - -\htool{HLVLM} & \texttt{RAWMITFORMAT}& \texttt{F} & Disable \HTK\ escaping for LM tools\\ \hline -\htool{HLVRec} & \texttt{MAXLMLA} & off & Maximum jump in LM lookahead per model \\\cline{2-4} - & \texttt{BUILDLATSENTEND} & F & Build lattice from single token in the SENTEND node \\\cline{2-4} - & \texttt{FORCELATOUT} & T & Always output lattice, even when no token survived \\\cline{2-4} - & \texttt{GCFREQ} & 100 & Garbage collection period, unit is frame. \\\hline - -\end{supertabular} -\end{center} -%\caption{Library Module Configuration Variables (cont)} -%\end{table} -\clearpage - -\newpage -\mysect{Configuration Variables used in Tools}{conintools} - -\begin{center} -\tablecaption{Tool Specific Configuration Variables} -\tablehead{\hline -Module & Name & Default & Description \\ \hline\hline} -\tabletail{\hline} -\begin{supertabular}{|p{1.8cm}|l|l|p{6.6cm}|} - -% HCompV - & \texttt{UPDATEMEANS} & \texttt{F} & Update means \\ \cline{2-4} -\htool{HCompV} & \texttt{SAVEBINARY} & \texttt{F} & Load/Save in binary format \\ \cline{2-4} - & \texttt{MINVARFLOOR} & \texttt{0.0} & Minimum variance floor \\ \hline - -% HCopy - & \texttt{NSTREAMS} & \texttt{1} & Number of streams \\ \cline{2-4} - & \texttt{SAVEASVQ} & \texttt{F} & Save only the VQ indices \\ \cline{2-4} -\htool{HCopy} & \texttt{SOURCEFORMAT} & \texttt{HTK} & File format of source \\ \cline{2-4} - & \texttt{TARGETFORMAT} & \texttt{HTK} & File format of target \\ \cline{2-4} - & \texttt{SOURCEKIND} & \texttt{ANON} & Parameter kind of source \\ \cline{2-4} - & \texttt{TARGETKIND} & \texttt{ANON} & Parameter kind of target \\ \hline - -%HERest -\htool{HERest} - & \texttt{SAVEBINARY} & \texttt{F} & Load/Save in binary format \\ \cline{2-4} - & \texttt{BINARYACFORMAT} & \texttt{T} & Load/Save accumulators in binary format \\ \cline{2-4} - & \texttt{ALIGNMODELMMF} & & MMF file for alignment (2-model reest) \\ \cline{2-4} - & \texttt{ALIGNHMMLIST} & & Model list for alignment (2-model reest) \\ \cline{2-4} - & \texttt{ALIGNMODELDIR} & & Dir containing HMMs for alignment (2-model reest). \\ \cline{2-4} - & \texttt{ALIGNMODELEXT} & & Ext to be used with above Dir (2model-reest) \\ \cline{2-4} - & \texttt{ALIGNXFORMEXT} & & Input transform ext to be used with 2model-reest \\ \cline{2-4} - & \texttt{ALIGNXFORMDIR} & & Input transform dir to be used with 2model-reest \\ \cline{2-4} - & \texttt{INXFORMMASK} & & Input transform mask (default output transform mask) \\ \cline{2-4} - & \texttt{PAXFORMMASK} & & Parent transform mask (default output parent mask) \\ \cline{2-4} - & \texttt{UPDATEMODE} & & with \texttt{-p 0} choose mode: - \texttt{UDATE} update models (default), \texttt{DUMP} dump sum of - accumulators, \texttt{BOTH} do both\\ \cline{2-4} -\hline - -% HHEd -\htool{HHEd} & \texttt{TREEMERGE} & \texttt{T} & After tree splitting, merge leaves \\ \cline{2-4} - & \texttt{TIEDMIXNAME} & \texttt{TM} & Tied mixture base name \\ \cline{2-4} - & \texttt{APPLYVFLOOR} & \texttt{T} & Apply variance floor to model set \\ \cline{2-4} - & \texttt{USELEAFSTATS} & \texttt{T} & Use stats to obtain tied state pdf's \\ \cline{2-4} - & \texttt{MMFIDMASK} & * & Used with RC \htool{HHEd} command \\ - \hline - -% HMMIRest -& \texttt{VARFLOORPERCENTILE} & \texttt{0} & Maximum number of Gaussian components (as the percentage of the total Gaussian components in the system) to undergo variance floor \\ \cline{2-4} -& \texttt{C} & \texttt{1.0} & C value for both component weights and transition probabilities update \\ \cline{2-4} -& \texttt{CW} & \texttt{1.0} & C value for component weights update\\ \cline{2-4} -& \texttt{CT} & \texttt{1.0} & C value for transition probabilities update\\ \cline{2-4} -& \texttt{MINOCC} & \texttt{10} & Minimum occupancy counts for Gaussian means and variances \\ \cline{2-4} -& \texttt{MINOCCTRANS} & \texttt{10} & Minimum occupancy counts for transition probabilities \\ \cline{2-4} -& \texttt{MINOCCWEIGHTS} & \texttt{10} & Minimum occupancy counts for component weights \\ \cline{2-4} -& \texttt{SAVEBINARY} & \texttt{F} & Save HMM models in binary format \\ \cline{2-4} -& \texttt{E} & \texttt{2.0} & Scaling factor for the denominator counts to determine D-smoothing constant value \\ \cline{2-4} -\htool{HMMIRest} -& \texttt{DFACTOROCC} & \texttt{2.0} & Scaling factor for the D-smoothing constant value required to yield positive variances \\ \cline{2-4} -& \texttt{HCRIT} & \texttt{1.0} & Scaling factor for the denominator statistics \\ \cline{2-4} -& \texttt{MPE} & \texttt{F} & Use MPE criterion \\ \cline{2-4} -& \texttt{MWE} & \texttt{F} & Use MWE criterion \\ \cline{2-4} -& \texttt{MEE} & \texttt{F} & Use MWE criterion if MWE is set to \texttt{TRUE} for \htool{HFBLat}. Otherwise, use MPE criterion \\ \cline{2-4} -& \texttt{MLE} & \texttt{F} & Use MLE criterion \\ \cline{2-4} -& \texttt{MMIPRIOR} & \texttt{F} & Use dynamic MMI prior \\ \cline{2-4} -& \texttt{MMITAUI} & \texttt{0.0} & I-smoothing constant value for MMI prior \\ \cline{2-4} -& \texttt{ISMOOTHTAU} & \texttt{0.0} & I-smoothing constant value for Gaussian means and variances \\ \cline{2-4} -& \texttt{ICRITOCC} & \texttt{0.0} & Same as \texttt{ISMOOTHTAU} \\ \cline{2-4} -& \texttt{ISMOOTHTAUT} & \texttt{0.0} & I-smoothing constant value for transition probabilities \\ \cline{2-4} -& \texttt{ISMOOTHTAUW} & \texttt{0.0} & I-smoothing constant value for component weights \\ \cline{2-4} -& \texttt{PRIORTAU} & \texttt{0.0} & Prior smoothing constant value for Gaussian means and variances \\ \cline{2-4} -& \texttt{PRIORTAUW} & \texttt{0.0} & Prior smoothing constant value for component weights \\ \cline{2-4} -& \texttt{PRIORTAUT} & \texttt{0.0} & Prior smoothing constant value for transition probabilities \\ \cline{2-4} -& \texttt{STATICPRIOR} & \texttt{F} & Use a static prior for parameter estimation \\ \cline{2-4} -& \texttt{MIXWEIGHTFLOOR} & \texttt{2.0} & Component weights floor (as the number of times of \texttt{MINMIX}) \\ \cline{2-4} -& \texttt{LATFILEMASK} & \texttt{NULL} & Mask for lattice filename \\ \cline{2-4} -& \texttt{LATMASKNUM} & \texttt{NULL} & Mask for numerator lattice directory \\ \cline{2-4} -& \texttt{LATMASKDEN} & \texttt{NULL} & Mask for denominator lattice directory \\ \cline{2-4} -& \texttt{INXFORMMASK} & \texttt{NULL} & Speaker mask for loading input adaptation transforms \\ \cline{2-4} -& \texttt{PAXFORMMASK} & \texttt{NULL} & Speaker mask for loading parent adaptation transforms \\ \cline{2-4} -& \texttt{USELLF} & \texttt{F} & Load lattices in LLF format \\ \cline{2-4} - & \texttt{UPDATEMODE} & & with \texttt{-p 0} choose mode: - \texttt{UDATE} update models (default), \texttt{DUMP} dump sum of - accumulators, \texttt{BOTH} do both\\ \hline - -% HParse -\htool{HParse} & \texttt{V1COMPAT} & \texttt{F} & Enable compatibility with HTK V1.X \\ \hline - -% HResults - & \texttt{REFLEVEL} & \texttt{0} & Label level to be used as reference \\ \cline{2-4} - & \texttt{TESTLEVEL} & \texttt{0} & Label level to be scored \\ \cline{2-4} - & \texttt{STRIPCONTEXT} & \texttt{F} & Strip triphone contexts \\ \cline{2-4} -\htool{HResults} & \texttt{IGNORECASE} & \texttt{F} & If enabled, - converts labels to uppercase \\ \cline{2-4} - & \texttt{NISTSCORE} & \texttt{F} & Use NIST formatting \\ \cline{2-4} - & \texttt{PHRASELABEL} & \texttt{SENT} & Label for phrase level statistics \\ \cline{2-4} - & \texttt{PHONELABEL} & \texttt{WORD} & Label for word level statistics \\ \cline{2-4} - & \texttt{SPEAKERMASK} & \texttt{NULL} & If set then report on a per - speaker basis \\ \hline - -% HVite - & \texttt{RECOUTPREFIX} & \texttt{NULL} & Prefix for direct - audio output name \\ \cline{2-4} -\htool{HVite} & \texttt{RECOUTSUFFIX} & \texttt{NULL} & Suffix for direct audio output name\\ \cline{2-4} - & \texttt{SAVEBINARY} & \texttt{F} & Save transforms as binary \\ \hline - -% HLStats -\htool{HLStats} & \texttt{DISCOUNT} & \texttt{0.5} & Discount constant - for backoff bigrams\\ \hline - -% HList -\htool{HList} - & \texttt{AUDIOSIG} & \texttt{0} & Audio signal numberfor remote control - \\ \cline{2-4} - & \texttt{SOURCERATE} & \texttt{0.0} & Sample rate of source in 100ns units - \\ \hline - -% all - & \texttt{TRACE} & \texttt{0} & Trace setting\\ \hline - -\htool{HDecode} -& \texttt{USEHMODEL} & F & Use adaptation data structure and likelihood calculation routine of -\htool{HModel} \\\cline{2-4} - & \texttt{STARTWORD} & $<$s$>$ & Word used as the start of network \\\cline{2-4} - & \texttt{ENDWORD} & $<$/s$>$ & Word used as the end of network \\\cline{2-4} - & \texttt{FASTLMLABEAM} & off & Fast language model look ahead beam \\\hline - -\end{supertabular} -\end{center} -%\caption{Tool Specific Configuration Variables} -%\end{table} -\clearpage - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/decode.tex b/HTKBook/decode.tex deleted file mode 100644 index 4e0d5c2..0000000 --- a/HTKBook/decode.tex +++ /dev/null @@ -1,861 +0,0 @@ - -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{Decoding with \htool{HVite}}{decode} - -\sidepic{Tool.decode}{80}{ } -The previous chapter has described how to construct a recognition -network specifying what is allowed to be spoken and how -each word is pronounced. Given such a network, its associated -set of HMMs, and an unknown utterance, the probability of -any path through the network can be computed. The task of a -decoder is to find those paths which are the most likely.\index{decoder} - -As mentioned previously, decoding in \HTK\ is performed by a library -module called \htool{HRec}. \htool{HRec} uses the token passing -paradigm to find the best path and, optionally, multiple alternative -paths. In the latter case, it generates a lattice containing the -multiple hypotheses which can if required be converted to an N-best -list. To drive \htool{HRec} from the command line, \HTK\ provides a -tool called \htool{HVite}. As well as providing basic recognition, -\htool{HVite} can perform forced alignments, lattice rescoring and -recognise direct audio input. - -To assist in evaluating the performance -of a recogniser using a test database and a set of reference transcriptions, -\HTK\ also provides a tool called \htool{HResults} to compute word -accuracy and various related statistics. -The principles and use of these recognition facilities are described -in this chapter. - - -\mysect{Decoder Operation}{decop} - -\index{decoder!operation} -As described in Chapter~\ref{c:netdict} and illustrated by -Fig.~\href{f:recsys}, decoding in \HTK\ is controlled by a recognition -network compiled from a word-level network, a dictionary and a set of -HMMs. The recognition network consists of a set of nodes connected -by arcs. Each node is either a HMM model instance or a word-end. -Each model node is itself a network consisting of states connected by -arcs. Thus, once fully compiled, a recognition -network\index{recognition!network} ultimately -consists of HMM states connected by transitions. However, it can be -viewed at three different levels: word, model and state. -Fig.~\href{f:recnetlev} illustrates this hierarchy. - -\sidefig{recnetlev}{62}{Recognition Network Levels}{2}{ -For an unknown -input utterance with $T$ frames, every path from the start node to the -exit node of the network which passes through exactly $T$ emitting HMM -states is a potential recognition -hypothesis\index{recognition!hypothesis}. -Each of these paths has a log probability which is computed by summing -the log probability of each individual transition in the path and the -log probability of each emitting state generating the corresponding -observation. Within-HMM transitions are determined from the HMM -parameters, between-model transitions are constant and word-end -transitions are determined by the language model likelihoods attached -to the word level networks. - -The job of the decoder is to find those paths through the network -which have the highest log probability. These paths -are found using a \textit{Token Passing} algorithm. A token represents -a partial path through the network extending from time 0 through to time $t$. -At time 0, a token is placed in every possible start node. \index{token passing} -} - -Each time step, -tokens are propagated along connecting transitions stopping whenever they -reach an emitting HMM state. When there are multiple exits from a node, -the token is copied so that all possible paths are explored in parallel. -As the token passes across transitions and through nodes, its log probability -is incremented by the corresponding transition and emission probabilities. -A network node can hold at most $N$ tokens. Hence, at the end of each time step, -all but the $N$ best tokens in any node are discarded. - - -As each token passes through the network it must maintain a history -recording its route. The amount of detail in this history\index{token history} depends -on the required recognition output. Normally, only word sequences -are wanted and hence, only transitions out of word-end nodes\index{word-end nodes} need -be recorded. However, for some purposes, it is useful to know the -actual model sequence and the time of each model to model transition. -Sometimes a description of each path down to the state level -is required. All of this information, whatever level of detail is -required, can conveniently be represented using a lattice structure. - -Of course, the number of tokens allowed per node and the amount of -history information requested will have a significant impact on -the time and memory needed to compute the lattices. The most -efficient configuration is $N=1$ combined with just -word level history information and this is sufficient -for most purposes. - -A large network will have many nodes and one way to make a significant -reduction in the computation needed is to only propagate tokens which -have some chance of being amongst the eventual winners. This process -is called \textit{pruning}. It is implemented at each time step by -keeping a record of the best token overall and de-activating all -tokens whose log probabilities fall more than a \textit{beam-width} -below the best. For efficiency reasons, it is best to implement primary -pruning\index{pruning} at the model rather than the state level. Thus, models -are deactivated when they have no tokens in any state within the beam and -they are reactivated whenever active tokens are propagated into them. -State-level pruning is also implemented by replacing any token by a -null (zero probability) token if it falls outside of the beam. -If the pruning beam-width\index{beam width} is set too small then the most likely -path might be pruned before its token reaches the end of the utterance. -This results in a \textit{search error}. Setting the beam-width is -thus a compromise between speed and avoiding search errors. - -When using word loops with bigram probabilities, tokens emitted from -word-end nodes will have a language model probability added to them -before entering the following word. Since the range of language -model probabilities is relatively small, a narrower beam can be -applied to word-end nodes without incurring additional -search errors\index{search errors}. -This beam is calculated relative to the best word-end token and -it is called a \textit{word-end beam}. In the case, of a recognition -network with an arbitrary topology, word-end pruning may still be -beneficial but this can only be justified empirically. - -Finally, a third type of pruning control is provided. An upper-bound -on the allowed use of compute resource can be applied by setting -an upper-limit on the number of models in the network which can -be active simultaneously. When this limit is reached, the pruning -beam-width is reduced in order to prevent it being exceeded. - - -\mysect{Decoder Organisation}{decorg} - -The decoding process itself is performed by a set of core functions -provided within the library module \htool{HRec}\index{hrec@\htool{HRec}}. The process -of recognising a sequence of utterances is illustrated in -Fig.~\href{f:decflow}. - -\index{decoder!organisation} -The first stage is to create a \textit{recogniser-instance}. This is -a data structure containing the compiled recognition network and -storage for storing tokens. The point of encapsulating all of the -information and storage needed for recognition into a single object is -that \htool{HRec}\index{hrec@\htool{HRec}} is re-entrant and can support -multiple recognisers\index{multiple recognisers} -simultaneously. Thus, although this facility is not utilised in the -supplied recogniser \htool{HVite}\index{hvite@\htool{HVite}}, it does provide applications -developers with the capability to have multiple recognisers running -with different networks. - -Once a recogniser has been created, each unknown input is -processed by first executing a \textit{start recogniser} call, and then -processing each observation one-by-one. When all input observations -have been processed, recognition is completed by generating a lattice. -This can be saved to disk as a standard lattice format (SLF) file or -converted to a transcription. - -The above decoder organisation is extremely flexible and this is -demonstrated by the \HTK\ tool \htool{HVite} which is a simple -shell program designed to allow \htool{HRec} to be driven from -the command line. - -Firstly, input -control in the form of a recognition network allows three distinct modes -of operation - -\sidefig{decflow}{62}{Recognition Processing}{2}{ -\begin{enumerate} -\item \textit{Recognition} \\ -This is the conventional case in which the recognition network -is compiled from a task level word network.\index{decoder!recognition mode} - -\item \textit{Forced Alignment} \\ -In this case, the recognition network -is constructed from a word level transcription (i.e.\ orthography) -and a dictionary. The compiled network may include optional silences -between words and pronunciation variants. Forced alignment is often useful -during training to automatically derive phone level transcriptions. -It can also be used in automatic annotation systems. -\index{decoder!alignment mode} - -\item \textit{Lattice-based Rescoring} \\ -In this case, the input network is compiled from a lattice generated -during an earlier recognition run. This mode of operation can be -extremely useful for recogniser development since rescoring can be -an order of magnitude faster than normal recognition. The required -lattices are usually generated by a basic recogniser running with -multiple tokens, the idea being to generate a lattice containing both -the correct transcription plus a representative number of confusions. -Rescoring can then be used to quickly evaluate the performance of more -advanced recognisers and the effectiveness of new recognition techniques. -\index{decoder!rescoring mode} - -\end{enumerate} - -The second source of flexibility lies in the provision of multiple -tokens and recognition output -in the form of a lattice. In addition to providing a mechanism -for rescoring, lattice output can be used as a source of multiple -hypotheses either for further recognition processing or input -to a natural language processor. Where convenient, lattice output -can easily be converted into N-best lists. -} - -Finally, since \htool{HRec} is explicitly driven step-by-step at the -observation level, it allows fine control over the recognition process and a -variety of traceback and on-the-fly output possibilities. - -For application developers, \htool{HRec} and the \HTK\ library modules -on which it depends can be linked directly into applications. It -will also be available in the form of an industry standard API. However, -as mentioned earlier the \HTK\ toolkit -also supplies a tool called \htool{HVite} which is a shell program -designed to allow \htool{HRec} to be driven from the command line. -The remainder of this chapter will therefore explain the various facilities -provided for recognition from the perspective of \htool{HVite}. - -\mysect{Recognition using Test Databases}{hvrec} - -When building a speech recognition system or investigating speech -recognition algorithms, performance must be monitored by testing -on databases of test utterances for which reference transcriptions -are available. To use \htool{HVite} for this purpose it is -invoked with a command line of the form -\begin{verbatim} - HVite -w wdnet dict hmmlist testf1 testf2 .... -\end{verbatim} -where \texttt{wdnet} is an SLF file containing the word level network, -\texttt{dict} is the pronouncing dictionary and hmmlist contains -a list of the HMMs to use. The effect of this command is that -\htool{HVite} will use \htool{HNet} to compile the word level network -and then use \htool{HRec} to recognise each test file. The parameter kind -of these test files must match exactly with that used to train the HMMs. -For evaluation purposes, test files are normally stored in parameterised -form but only the basic static coefficients are saved on disk. For example, -delta parameters are normally computed during loading. As explained in -Chapter~\ref{c:speechio}, \HTK\ can perform a range of parameter conversions -on loading and these are controlled by configuration variables. Thus, -when using \htool{HVite}, it is normal to include a configuration file -via the \texttt{-C} option in which the required target parameter kind -is specified. Section~\ref{s:recaudio} below on processing direct -audio input explains the use of configuration files in more detail. -\index{decoder!evaluation} - -In the simple -default form of invocation given above, \htool{HVite} would -expect to find each HMM definition in a separate file in the current -directory and each -output transcription would be written to a separate file in the current directory. -Also, of course, there will typically be a large number of test files. - -In practice, it is much more convenient to store HMMs in master macro files (MMFs), -store transcriptions in master label files (MLFs) and list data files -in a script file. Thus, a more common form of the above invocation would -be -\begin{verbatim} - HVite -T 1 -S test.scp -H hmmset -i results -w wdnet dict hmmlist -\end{verbatim} -where the file \texttt{test.scp} contains the list of test file names, -\texttt{hmmset} is an MMF containing the HMM definitions\footnote{ -Large HMM sets will often be distributed across a number of MMF files, -in this case, the \texttt{-H} option will be repeated for each file.}, -and \texttt{results} is the MLF for storing the recognition output. - -\index{decoder!progress reporting} -As shown, it is usually a good idea to enable basic progress reporting -by setting the trace option as shown. This will cause the recognised -word string to be printed after processing each file. For example, -in a digit recognition task the trace output might look like -\begin{verbatim} - File: testf1.mfc - SIL ONE NINE FOUR SIL - [178 frames] -96.1404 [Ac=-16931.8 LM=-181.2] (Act=75.0) -\end{verbatim} -where the information listed after the recognised string is the total -number of frames in the utterance, the average -log probability\index{average log probability} per frame, -the total acoustic likelihood, the total language model likelihood and -the average number of active models.\index{decoder!trace output} - -The corresponding transcription -written to the output MLF form will contain an entry of the form -\index{decoder!output MLF} - -\begin{verbatim} - "testf1.rec" - 0 6200000 SIL -6067.333008 - 6200000 9200000 ONE -3032.359131 - 9200000 12300000 NINE -3020.820312 - 12300000 17600000 FOUR -4690.033203 - 17600000 17800000 SIL -302.439148 - . -\end{verbatim} -This shows the start and end time of each word and the total log probability. -The fields output by \htool{HVite} can be controlled using -the \texttt{-o}. For example, the option \texttt{-o ST} would suppress -the scores and the times to give -\begin{verbatim} - "testf1.rec" - SIL - ONE - NINE - FOUR - SIL - . -\end{verbatim} - -In order to use \htool{HVite} effectively and efficiently, it is important to -set appropriate values for its pruning\index{pruning} thresholds and the language model -scaling parameters. The main pruning beam is set by the \texttt{-t} option. -Some experimentation will be necessary to determine appropriate levels -but around 250.0 is usually a reasonable starting point. Word-end pruning -(\texttt{-v}) and the maximum model limit\index{maximum model limit} (\texttt{-u}) can also be set -if required, but these are not mandatory and their effectiveness will -depend greatly on the task. - -The relative levels of insertion -and deletion errors\index{deletion errors} -\index{insertion errors} can be controlled -by scaling the language model\index{language model scaling} likelihoods using the \texttt{-s} option -and adding a fixed \textit{penalty} using the \texttt{-p} option. -For example, setting \texttt{-s 10.0 -p -20.0} would mean that every language -model log probability $x$ would be converted to $10x - 20$ before being -added to the tokens emitted from the corresponding word-end node. As -an extreme example, setting \texttt{-p 100.0} -caused the digit recogniser above to output -\begin{verbatim} - SIL OH OH ONE OH OH OH NINE FOUR OH OH OH OH SIL -\end{verbatim} -where adding 100 to each word-end transition has resulted in a large number of -insertion errors. The word inserted is ``oh'' primarily because it is the -shortest in the vocabulary. -Another problem which may occur during recognition is the inability to arrive -at the final node in the recognition network after processing the whole -utterance. \index{forceout@\texttt{FORCEOUT}} The user is made aware of the -problem by the message ``No tokens survived to final node of network''. The -inability to match the data against the recognition network is usually caused -by poorly trained acoustic models and/or very tight pruning beam-widths. In -such cases, partial recognition results can still be obtained by setting the -\htool{HRec} configuration variable \texttt{FORCEOUT} true. -\index{partial results} The results will be based on the most likely partial -hypothesis found in the network. - -\mysect{Evaluating Recognition Results}{receval} - -\index{decoder!results analysis} -Once the test data has been processed by the recogniser, the next step is to -analyse the results. The tool \index{hresults@\htool{HResults}} -\htool{HResults} is provided for this purpose. \htool{HResults} compares -the transcriptions output by \htool{HVite} with the original reference -transcriptions and then outputs various statistics. \htool{HResults} matches -each of the recognised and reference label sequences by performing an optimal -string match\index{string matching} using dynamic programming. Except when -scoring word-spotter output as described later, it does not take any notice of -any boundary timing information stored in the files being compared. The -optimal string match works by calculating a score for the match with respect to -the reference such that identical labels match with score 0, a label insertion -carries a score of 7, a deletion carries a score of 7 and a substitution -carries a score of 10\footnote{The default behaviour of \htool{HResults} is -slightly different to the widely used US NIST scoring software which uses -weights of 3,3 and 4 and a slightly different alignment algorithm. Identical -behaviour to NIST can be obtained by setting the -n option.}. The optimal -string match is the label alignment which has the lowest possible score. - -Once the optimal alignment has been found, the number of substitution -errors ($S$), deletion errors ($D$) and insertion errors ($I$) can be -calculated. The percentage correct is then -\begin{equation} - \mbox{Percent Correct} = \frac{N-D-S}{N} \times 100\% -\end{equation} -where $N$ is the total number of labels in the reference transcriptions. -Notice that this measure ignores insertion errors. For many purposes, -the percentage accuracy defined as -\begin{equation} - \mbox{Percent Accuracy} = \frac{N-D-S-I}{N} \times 100\% -\end{equation} -is a more representative figure of -recogniser performance\index{recogniser performance}. - -\htool{HResults} outputs both of the above measures. As with all -\HTK\ tools it can process individual label files and files stored in MLFs. -Here the examples will assume that both reference and test transcriptions -are stored in MLFs. - -As an example of use, suppose that the MLF \texttt{results} contains -recogniser output transcriptions, \texttt{refs} contains -the corresponding reference transcriptions and \texttt{wlist} -contains a list of all labels appearing in these files. Then typing the command -\begin{verbatim} - HResults -I refs wlist results -\end{verbatim} -would generate something like the following -\begin{verbatim} - ====================== HTK Results Analysis ======================= - Date: Sat Sep 2 14:14:22 1995 - Ref : refs - Rec : results - ------------------------ Overall Results -------------------------- - SENT: %Correct=98.50 [H=197, S=3, N=200] - WORD: %Corr=99.77, Acc=99.65 [H=853, D=1, S=1, I=1, N=855] - =================================================================== -\end{verbatim} -The first part shows the date and the names of the files being used. -The line labelled \texttt{SENT} shows the total number of -complete sentences which were recognised correctly. The second line -labelled \texttt{WORD} -gives the -recognition statistics\index{recognition!statistics} for the individual words\footnote{ -All the examples here will assume that each label corresponds to a word -but in general the labels could stand for any recognition unit such as -phones, syllables, etc. \htool{HResults} does not care what the labels -mean but for human consumption, the labels \texttt{SENT} -and \texttt{WORD} can be changed using the \texttt{-a} and \texttt{-b} -options.}. - -It is often useful to visually inspect the -recognition errors\index{recognition!errors}. Setting the -\texttt{-t} option causes aligned test and reference transcriptions to -be output for all sentences containing errors. For example, a typical -output might be -\begin{verbatim} - Aligned transcription: testf9.lab vs testf9.rec - LAB: FOUR SEVEN NINE THREE - REC: FOUR OH SEVEN FIVE THREE -\end{verbatim} -here an ``oh'' has been inserted by the recogniser and ``nine'' -has been recognised as ``five'' - -If preferred, results output can be formatted in an identical -manner to NIST scoring software\index{NIST scoring software} by setting the {\tt -h} option. -For example, the results given above would appear as follows in -NIST format\index{NIST format} -\begin{verbatim} - ,-------------------------------------------------------------. - | HTK Results Analysis at Sat Sep 2 14:42:06 1995 | - | Ref: refs | - | Rec: results | - |=============================================================| - | # Snt | Corr Sub Del Ins Err S. Err | - |-------------------------------------------------------------| - | Sum/Avg | 200 | 99.77 0.12 0.12 0.12 0.35 1.50 | - `-------------------------------------------------------------' -\end{verbatim} - -When computing recognition results it is sometimes -inappropriate to distinguish certain labels. For example, to assess -a digit recogniser used for voice dialling it might be required to -treat the alternative vocabulary items ``oh'' and ``zero'' as being -equivalent. This can be done by making them equivalent using the -\texttt{-e} option, that is -\begin{verbatim} - HResults -e ZERO OH ..... -\end{verbatim} -If a label is equated to the special label \verb+???+, then it -is ignored. Hence, for example, if the recognition output had -silence marked by \texttt{SIL}, the setting the option -\verb+-e ??? SIL+ would cause all the \texttt{SIL} labels to be -ignored.\index{word equivalence} - -\htool{HResults} contains a number of other options. -Recognition statistics can be generated for each file -individually by setting the {\tt -f} option and a -confusion matrix\index{confusion matrix} -can be generated by setting the {\tt -p} option. -When comparing phone recognition results, \htool{HResults} will -strip any triphone contexts by setting the {\tt -s} option. -\htool{HResults} can also process N-best recognition output. -Setting the option \texttt{-d N} causes \htool{HResults} to -search the first \texttt{N} alternatives of each test output -file to find the most accurate match with the reference labels. - -When analysing the performance of a speaker independent recogniser -it is often useful to obtain accuracy figures on a per speaker basis. -This can be done using the option \texttt{-k mask} where \texttt{mask} -is a pattern used to extract -the speaker identifier\index{speaker identifier} from the test label file name. -The pattern consists of a string of characters which can include -the pattern matching metacharacters -\texttt{*} and \texttt{?} to match zero or more characters and a single character, -respectively. -The pattern -should also contain a string of one or more \texttt{\%} characters which -are used as a mask to identify the speaker identifier. - -For example, -suppose that the test filenames had the following structure -\begin{verbatim} - DIGITS_spkr_nnnn.rec -\end{verbatim} -where \texttt{spkr} is a 4 character speaker id and \texttt{nnnn} -is a 4 digit utterance id. Then executing \htool{HResults} by -\begin{verbatim} - HResults -h -k '*_%%%%_????.*' .... -\end{verbatim} -would give output of the form -\begin{verbatim} - ,-------------------------------------------------------------. - | HTK Results Analysis at Sat Sep 2 15:05:37 1995 | - | Ref: refs | - | Rec: results | - |-------------------------------------------------------------| - | SPKR | # Snt | Corr Sub Del Ins Err S. Err | - |-------------------------------------------------------------| - | dgo1 | 20 | 100.00 0.00 0.00 0.00 0.00 0.00 | - |-------------------------------------------------------------| - | pcw1 | 20 | 97.22 1.39 1.39 0.00 2.78 10.00 | - |-------------------------------------------------------------| - ...... - |=============================================================| - | Sum/Avg | 200 | 99.77 0.12 0.12 0.12 0.35 1.50 | - `-------------------------------------------------------------' -\end{verbatim} - -In addition to string matching, \htool{HResults} can also -analyse the results of a recogniser configured for word-spotting. -In this case, there is no DP alignment. Instead, each recogniser -label $w$ is compared with the reference transcriptions. -If the start and end times of $w$ lie either side of the mid-point -of an identical label in the reference, then that recogniser label -represents a \textit{hit}, otherwise it is a \textit{false-alarm} (FA). - -The recogniser output must include the log likelihood scores as -well as the word boundary information. \index{Figure of Merit} -These scores are used to compute the \textit{Figure of Merit} (FOM) -defined by NIST which is an upper-bound estimate on word spotting -accuracy averaged over 1 to 10 false alarms per hour. -The FOM\index{FOM} is calculated as follows where it is assumed that the -total duration of the test speech is $T$ hours. For each word, all of -the spots are ranked in score order. The percentage of true hits -$p_i$ found before the $i$'th false alarm is then calculated for -$i = 1 \ldots N+1$ where $N$ is the first integer $\ge 10T - 0.5$. -The figure of merit is then defined as -\hequation{ -\mbox{FOM} = \frac{1}{10T}(p_1 + p_2 + \ldots + p_N + a p_{N+1}) -}{nistfom} -where $a = 10T - N$ is a factor that interpolates to 10 false -alarms per hour. - -Word spotting analysis is enabled by setting the \texttt{-w} option -and the resulting output has the form -\begin{verbatim} - ------------------- Figures of Merit -------------------- - KeyWord: #Hits #FAs #Actual FOM - BADGE: 92 83 102 73.56 - CAMERA: 20 2 22 89.86 - WINDOW: 84 8 92 86.98 - VIDEO: 72 6 72 99.81 - Overall: 268 99 188 87.55 - --------------------------------------------------------- -\end{verbatim} -If required the standard time unit of 1 hour as used in the above -definition of FOM can be changed using the \texttt{-u option}. - - -\mysect{Generating Forced Alignments}{falign} - -\index{decoder!forced alignment} -\sidefig{hvalign}{55}{Forced Alignment}{-4}{ -\htool{HVite} can be made to compute forced alignments by not -specifying a network with the \texttt{-w} option but by specifying -the \texttt{-a} option instead. In this mode, \htool{HVite} -computes a new network for each input utterance using the word -level transcriptions and a dictionary. By default, the output -transcription will just contain the words and their boundaries. -One of the main uses of forced alignment\index{forced alignment}, -however, is to -determine the actual pronunciations used in the utterances -used to train the HMM system in this case, the \texttt{-m} -option can be used to generate model level output transcriptions. -} -This type of forced alignment is usually part of a \textit{bootstrap} -process, initially models are trained on the basis of one fixed -pronunciation per \index{hled@\htool{HLEd}} -\index{ex@\texttt{EX} command}word\footnote{ -The \htool{HLEd} \texttt{EX} command can be used to compute phone -level transcriptions when there is only one possible -phone transcription -per word}. -Then \htool{HVite} is used in forced alignment mode -to select the best matching pronunciations. The new phone level -transcriptions can then be used to retrain the HMMs. Since training -data may have leading and trailing silence, it is usually -necessary to insert a silence model at the start and end of the -recognition network. The \texttt{-b} option can be used to do this. - -As an illustration, executing -\begin{verbatim} - HVite -a -b sil -m -o SWT -I words.mlf \ - -H hmmset dict hmmlist file.mfc -\end{verbatim} -would result in the following sequence of events (see Fig.~\href{f:hvalign}). -The input file name \texttt{file.mfc} would have its extension replaced by -\texttt{lab} and then a label file of this name would be searched for. -In this case, the MLF file \texttt{words.mlf} has been loaded. -Assuming that this file contains a word level transcription called -\texttt{file.lab}, this transcription along with the dictionary \texttt{dict} -will be used to construct a network equivalent to \texttt{file.lab} -but with alternative pronunciations included in parallel. Since \texttt{-b} -option has been set, the specified \texttt{sil} model will be inserted -at the start and end of the network. The decoder then finds the best -matching path through the network and constructs a lattice which -includes model alignment information. Finally, the lattice is converted -to a transcription and output to the label file \texttt{file.rec}. -As for testing on a database, alignments will normally be computed on -a large number of input files so in practice the input files would be listed -in a \texttt{.scp} file and the output transcriptions would be written -to an MLF using the \texttt{-i} option. - -When the \texttt{-m} option is used, the transcriptions output by \htool{HVite} -would by default contain both the model level and -word level transcriptions -\index{transcriptions!word level}. -\index{transcriptions!model level} -\index{transcriptions!phone level} -For example, a typical fragment of the output might be -\begin{verbatim} - 7500000 8700000 f -1081.604736 FOUR 30.000000 - 8700000 9800000 ao -903.821350 - 9800000 10400000 r -665.931641 - 10400000 10400000 sp -0.103585 - 10400000 11700000 s -1266.470093 SEVEN 22.860001 - 11700000 12500000 eh -765.568237 - 12500000 13000000 v -476.323334 - 13000000 14400000 n -1285.369629 - 14400000 14400000 sp -0.103585 -\end{verbatim} -Here the score alongside each model name is the acoustic score for that segment. -The score alongside the word is just the language model score. - -Although the above information can be useful for some purposes, for example -in bootstrap training, only the model names are required. -The formatting option \texttt{-o SWT} in the above suppresses all output -except the model names.\index{decoder!output formatting} - -\mysect{Recognition using Direct Audio Input}{recaudio} - -\index{decoder!live input} -In all of the preceding discussion, it has been assumed that input was -from speech files stored on disk. These files would normally have -been stored in parameterised form so that little or no conversion -of the source speech data was required. When \htool{HVite} -is invoked with no files listed on the command line, it assumes that -input is to be taken directly from the audio input. In this case, -configuration variables must be used to specify firstly how the -speech waveform is to be captured and secondly, how the captured -waveform is to be converted to parameterised form. - -Dealing with waveform capture\index{waveform capture} first, as described in -section~\ref{s:audioio}, \HTK\ provides two main forms of control over speech -capture: signals/keypress and an automatic speech/silence -detector\index{speech/silence detector}. To use the speech/silence detector -alone, the configuration file would contain the following -\begin{verbatim} - # Waveform capture - SOURCERATE=625.0 - SOURCEKIND=HAUDIO - SOURCEFORMAT=HTK - USESILDET=T - MEASURESIL=F - OUTSILWARN=T - ENORMALISE=F -\end{verbatim} - -where the source sampling rate is being set to 16kHz. Notice that the -\texttt{SOURCEKIND}\index{sourcekind@\texttt{SOURCEKIND}} must be set to -\texttt{HAUDIO} and the \texttt{SOURCEFORMAT} must be set to -\texttt{HTK}. Setting the Boolean variable -\texttt{USESILDET}\index{usesildet@\texttt{USESILDET}} causes the -speech/silence detector to be used, and the -\texttt{MEASURESIL}\index{measuresil@\texttt{MEASURESIL}} -\texttt{OUTSILWARN}\index{outsilwarn@\texttt{OUTSILWARN}} -variables result in a measurement being taken of the background silence level -prior to capturing the first utterance. To make sure that each input utterance -is being captured properly, the \htool{HVite} option \texttt{-g} can be set to -cause the captured wave to be output after each recognition attempt. Note that -for a live audio input system, the configuration variable -\texttt{ENORMALISE} should be explicitly set to \texttt{FALSE} both when training models and when performing recognition. Energy normalisation cannot -be used with live audio input, and the default setting for this variable -is \texttt{TRUE}. - -As an alternative to using the speech/silence detector, a -signal\index{signals!for recording control} can be used to start and stop -recording. For example, -\begin{verbatim} - # Waveform capture - SOURCERATE=625.0 - SOURCEKIND=HAUDIO - SOURCEFORMAT=HTK - AUDIOSIG=2 -\end{verbatim} -would result in the Unix interrupt signal (usually the Control-C key) being -used as a start and stop control\footnote{ The underlying signal number must be -given, \HTK\ cannot interpret the standard Unix signal names such as -\texttt{SIGINT} }. Key-press control of the audio input can be obtained by -setting \texttt{AUDIOSIG} to a negative number. - -Both of the above can be used together, in this case, audio capture is disabled -until the specified signal is received. From then on control is in the hands -of the speech/silence detector. - -The captured waveform must be converted to the required -target parameter kind. Thus, the configuration file must define -all of the parameters needed to control the -conversion of the waveform to the required target kind. -This process is described in detail in Chapter~\ref{c:speechio}. -As an example, the following parameters would allow conversion -to Mel-frequency cepstral coefficients with delta and acceleration -parameters. -\begin{verbatim} - # Waveform to MFCC parameters - TARGETKIND=MFCC_0_D_A - TARGETRATE=100000.0 - WINDOWSIZE=250000.0 - ZMEANSOURCE=T - USEHAMMING = T - PREEMCOEF = 0.97 - USEPOWER = T - NUMCHANS = 26 - CEPLIFTER = 22 - NUMCEPS = 12 -\end{verbatim} -Many of these variable settings are the default settings -and could be omitted, they are included explicitly here as a reminder -of the main configuration options available. - -When \htool{HVite} is executed in direct audio input mode, -it issues a prompt prior to each input and it is normal to enable -basic tracing so that the recognition results can be seen. -A typical terminal output might be -\begin{verbatim} - READY[1]> - Please speak sentence - measuring levels - Level measurement completed - DIAL ONE FOUR SEVEN - == [258 frames] -97.8668 [Ac=-25031.3 LM=-218.4] (Act=22.3) - - READY[2]> - CALL NINE TWO EIGHT - == [233 frames] -97.0850 [Ac=-22402.5 LM=-218.4] (Act=21.8) - - etc -\end{verbatim} -If required, a transcription of each spoken input can be output -to a label file or an MLF in the usual way by setting the \texttt{-e} option. -However, to do this -a file name must be synthesised. This is done by using a counter -prefixed by the value of the -\htool{HVite} configuration variable -\texttt{RECOUTPREFIX}\index{recoutprefix@\texttt{RECOUTPREFIX}} and -suffixed by the value of \texttt{RECOUTSUFFIX} -\index{recoutsuffix@\texttt{RECOUTSUFFIX}}. -For example, with the settings -\begin{verbatim} - RECOUTPREFIX = sjy - RECOUTSUFFIX = .rec -\end{verbatim} -then the output transcriptions would be stored as -\texttt{sjy0001.rec}, \texttt{sjy0002.rec} etc. - - -\mysect{N-Best Lists and Lattices}{nbest} - -\index{decoder!N-best} -As noted in section~\ref{s:decop}, \htool{HVite} can generate -lattices\index{lattice generation} -and N-best\index{N-best} outputs. To generate an N-best list, the \texttt{-n} option -is used to specify the number of N-best tokens to store per state and -the number of N-best hypotheses to generate. The result is that -for each input utterance, a multiple alternative -transcription\index{multiple alternative transcriptions} is generated. -For example, setting \texttt{-n 4 20} with a digit -recogniser would generate an output of the form -\begin{verbatim} - "testf1.rec" - FOUR - SEVEN - NINE - OH - /// - FOUR - SEVEN - NINE - OH - OH - /// - - etc -\end{verbatim} - - -The lattices from which the N-best lists are generated can be output by setting -the option \texttt{-z ext}. In this case, a lattice called \texttt{testf.ext} will -be generated for each input test file \texttt{testf.xxx}. By default, these lattices -will be stored in the same directory as the test files, but they can be redirected -to another directory using the \texttt{-l} option. - -\index{output lattice format} -The lattices generated by \htool{HVite} have the following general form -\begin{verbatim} - VERSION=1.0 - UTTERANCE=testf1.mfc - lmname=wdnet - lmscale=20.00 wdpenalty=-30.00 - vocab=dict - N=31 L=56 - I=0 t=0.00 - I=1 t=0.36 - I=2 t=0.75 - I=3 t=0.81 - ... etc - I=30 t=2.48 - J=0 S=0 E=1 W=SILENCE v=0 a=-3239.01 l=0.00 - J=1 S=1 E=2 W=FOUR v=0 a=-3820.77 l=0.00 - ... etc - J=55 S=29 E=30 W=SILENCE v=0 a=-246.99 l=-1.20 -\end{verbatim} - -The first 5 lines comprise a header which records names of the files used to -generate the lattice along with the settings of the language model scale and -penalty factors. Each node in the lattice represents a point in time measured in -seconds and each arc represents a word spanning the segment of the input -starting at the time of its start node and ending at the time of its end node. -For each such span, \texttt{v} gives the number of the pronunciation used, -\texttt{a} gives the acoustic score and \texttt{l} gives the language model -score. - -The language model scores in output lattices do not include the scale factors -and penalties. These are removed so that the lattice can be used as a -constraint network for subsequent recogniser testing. When using \htool{HVite} -normally, the word level network file is specified using the \texttt{-w} -option. When the \texttt{-w} option is included but no file name is included, -\htool{HVite} constructs the name of a lattice file from the name of the test -file and inputs that. Hence, a new recognition network is created for each -input file and recognition is very fast. For example, this is an efficient way -of experimentally determining optimum values for the language -model scale\index{lattice!language model scale factor} and -penalty factors. - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/discmods.tex b/HTKBook/discmods.tex deleted file mode 100644 index 0012a77..0000000 --- a/HTKBook/discmods.tex +++ /dev/null @@ -1,443 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{Discrete and Tied-Mixture Models}{discmods} - -\sidepic{Tool.disc}{80}{ -Most of the discussion so far has focused on using \HTK\ -to model sequences of continuous-valued vectors. In contrast, this chapter -is mainly concerned with using \HTK\ to model sequences of discrete -symbols. -Discrete symbols arise naturally in modelling many types of -data, for example, letters and words, bitmap images, and DNA sequences. -Continuous signals can also be converted to discrete symbol sequences -by using a quantiser and in particular, speech vectors can be -\textit{vector quantised} as described in section~\ref{s:vquant}. -In all cases, \HTK\ expects a set of $N$ discrete symbols to be represented by -the contiguous sequence of integer numbers from 1 to $N$. -}\index{discrete HMMs} - -In \HTK\ discrete probabilities are regarded as being closely analogous -to the mixture weights of a continuous density system. As a consequence, -the representation and processing of discrete HMMs shares a great deal -with continuous density models. It follows from this that most of the -principles and practice developed already are equally applicable to -discrete systems. As a consequence, this chapter can be quite brief. - -The first topic covered concerns building HMMs for discrete -symbol sequences. The use of discrete HMMs with speech is then -presented. The tool \htool{HQuant} is described and the method -of converting continuous speech vectors to discrete symbols is -reviewed. This is -followed by a brief discussion of tied-mixture systems which can be -regarded as a compromise between continuous and discrete density systems. -Finally, the use of the \HTK\ tool \htool{HSmooth} for -parameter smoothing by deleted interpolation is presented. - -\mysect{Modelling Discrete Sequences}{discseq} - -Building HMMs for discrete symbol sequences is essentially the same -as described previously for continuous density systems. -Firstly, a prototype HMM definition must be specified in order -to fix the model topology. For example, the following -is a 3 state ergodic HMM in which the emitting states -are fully connected. -\begin{verbatim} - ~o 1 1 - ~h "dproto" - - 5 - 2 10 - 5461*10 - 3 10 - 5461*10 - 4 10 - 5461*10 - 5 - 0.0 1.0 0.0 0.0 0.0 - 0.0 0.3 0.3 0.3 0.1 - 0.0 0.3 0.3 0.3 0.1 - 0.0 0.3 0.3 0.3 0.1 - 0.0 0.0 0.0 0.0 0.0 - -\end{verbatim} -As described in chapter~\ref{c:HMMDefs}, the notation for discrete -HMMs borrows heavily on that used for continuous density models -by equating mixture components with symbol indices. Thus, -this definition assumes that each training data sequence contains -a single stream of symbols indexed from 1 to 10. In this example, -all symbols in each state have been set to be equally likely\footnote{ -Remember that discrete probabilities are scaled such that -32767 is equivalent to a probability of 0.000001 and 0 is -equivalent to a probability of 1.0 -}. If prior information is available then this can of course be used -to set these initial values. - -The training data needed to build a discrete HMM can take one of two forms. It -can either be discrete (\texttt{SOURCEKIND=DISCRETE}) in which case it consists -of a sequence of 2-byte integer symbol indices. Alternatively, it can consist -of continuous parameter vectors with an associated VQ codebook. This latter -case is dealt with in the next section. Here it will be assumed that the data -is symbolic and that it is therefore stored in discrete form.\index{discrete -data} Given a set of training files listed in the script file -\texttt{train.scp}, an initial HMM could be estimated using -\begin{verbatim} - HInit -T 1 -w 1.0 -o dhmm -S train.scp -M hmm0 dproto -\end{verbatim} -This use of \htool{HInit} is identical to that which would be -used for building whole word HMMs where no associated label file is -assumed and the whole of each training sequence is used to estimate -the HMM parameters. Its effect is to read in the prototype -stored in the file \texttt{dproto} and then use the training examples -to estimate initial values for the output distributions -and transition probabilities. This is done by firstly uniformly -segmenting the data and for each segment counting the number of occurrences -of each symbol. These counts are then normalised to provide output distributions -for each state. \htool{HInit} then uses the Viterbi algorithm to resegment -the data and recompute the parameters. This is repeated until convergence -is achieved or an upper limit on the iteration count is reached. -The transition probabilities at each step are estimated simply by -counting the number of times that each transition is made in the Viterbi alignments -and normalising. The final model is renamed \texttt{dhmm} and stored in -the directory \texttt{hmm0}. - -When building discrete HMMs, it is important to floor the discrete -probabilities so that no symbol has a zero probability. This is -achieved using the \texttt{-w} option which specifies a floor value -as a multiple of a global constant called \texttt{MINMIX} whose -value is $10^{-5}$. - -The initialised HMM created by \htool{HInit} -can then be further refined if desired by using \htool{HRest} -to perform Baum-Welch re-estimation. It would be invoked in a similar -way to the above except that there is now no need to rename the model. -For example, -\begin{verbatim} - HRest -T 1 -w 1.0 -S train.scp -M hmm1 hmm0/dhmm -\end{verbatim} -would read in the model stored in \texttt{hmm0/dhmm} and write out a new -model of the same name to the directory \texttt{hmm1}. - -\mysect{Using Discrete Models with Speech}{speechvq} - -As noted in section~\ref{s:vquant}, discrete HMMs can be used to model -speech by using a vector quantiser to map continuous density vectors into -discrete symbols. A vector quantiser depends on a so-called \textit{codebook} -which defines a set of partitions of the vector space. Each partition -is represented by the mean value of the speech vectors belonging -to that partition and optionally a variance representing the spread. -Each incoming speech vector is then -matched with each partition and assigned the index corresponding -to the partition which is closest using a Mahalanobis distance metric. - -In \HTK\ such a codebook can be built using the tool \htool{HQuant}. This tool -takes as input a set of continuous speech vectors, clusters them and uses -the centroid and optionally the variance of each cluster to define -the partitions. \htool{HQuant} can build both linear and tree structured -codebooks. To build a linear codebook, all training vectors are initially -placed in one cluster and the mean calculated. The mean is then perturbed -to give two means and the training vectors are partitioned according to -which mean is nearest to them. The means are then recalculated and the -data is repartitioned. At each cycle, the total distortion (i.e. total -distance between the cluster members and the mean) is recorded and repartitioning -continues until there is no significant reduction in distortion. The whole -process then repeats by perturbing the mean of the cluster with the highest -distortion. This continues until the required number of clusters have been -found. - -Since all training vectors are reallocated at every cycle, this is an -expensive algorithm to compute. The maximum number of iterations within -any single cluster increment can be limited using the configuration -variable \texttt{MAXCLUSTITER}\index{maxclustiter@\texttt{MAXCLUSTITER}} -and although this can speed-up the computation -significantly, the overall training process is still computationally expensive. -Once built, vector quantisation is performed by scanning all codebook -entries and finding the nearest entry. Thus, if a large codebook is used, -the run-time VQ look-up operation can also be expensive. - -As an alternative to building a linear codebook, a tree-structured codebook -can be used. The algorithm for this is essentially the same as above -except that every cluster is split at each stage so that the first cluster -is split into two, they are split into four and so on. At each stage, the -means are recorded so that when using the codebook for vector quantising -a fast binary search can be used to find the appropriate leaf cluster. -Tree-structured codebooks are much faster to build since there is no -repeated reallocation of vectors and much faster in use since only $O(\log_2 N)$ -distance need to be computed where $N$ is the size of the codebook. -Unfortunately, however, tree-structured codebooks will normally incur higher -VQ distortion for a given codebook size. - -When delta and acceleration coefficients are used, it is usually best -to split the data into multiple streams (see section~\ref{s:streams}. -In this case, a separate codebook is built for each stream. - -As an example, the following invocation of \htool{HQuant} would -generate a linear codebook in the file \texttt{linvq} using -the data stored in the files listed in \texttt{vq.scp}. -\begin{verbatim} - HQuant -C config -s 4 -n 3 64 -n 4 16 -S vq.scp linvq -\end{verbatim} -Here the configuration file \texttt{config} specifies the \texttt{TARGETKIND} -as being \texttt{MFCC\_E\_D\_A} i.e.\ static coefficients plus deltas plus -accelerations plus energy. The \texttt{-s} options requests that this -parameterisation be split into -4 separate streams. By default, each individual codebook has 256 entries, however, -the \texttt{-n} option can be used to specify alternative sizes. - -If a tree-structured codebook was wanted rather than a linear codebook, -the \texttt{-t} option would be set. -Also the default is to use Euclidean distances both for building the -codebook and for subsequent coding. Setting the \texttt{-d} option -causes a diagonal covariance Mahalanobis metric to be used and -the \texttt{-f} option causes a full covariance Mahalanobis metric -to be used. - -\index{hcopy@\htool{HCopy}} -\sidefig{vqtohmm}{55}{VQ Processing}{-4}{ -Once the codebook is built, normal speech vector files can be -converted to discrete files using \htool{HCopy}. -This was explained -previously in section~\ref{s:vquant}. The basic mechanism is to -add the qualifier \texttt{\_V} to the -\texttt{TARGETKIND}.\index{qualifiers!aaav@\texttt{\_V}} This causes -\htool{HParm} to append a codebook index to each constructed observation -vector. If the configuration variable \texttt{SAVEASVQ} is set true, then -the output routines in \htool{HParm} will discard the original vectors -and just save the VQ indices in a \texttt{DISCRETE} file. -Alternatively, \HTK\ will regard any speech vector with \texttt{\_V} set -as being compatible with discrete HMMs. Thus, it is not necessary -to explicitly create a database of discrete training files if -a set of continuous speech vector parameter files already exists. -Fig.~\href{f:vqtohmm} illustrates this process. -}\index{saveasvq@\texttt{SAVEASVQ}} -\index{targetkind@\texttt{TARGETKIND}} - -Once the training data has been configured for discrete HMMs, the -rest of the training process is similar to that previously described. -The normal sequence is to build a set of monophone models and then -clone them to make triphones. As in continuous density systems, -state tying can be used to improve the -robustness of the parameter estimates. However, in the case of discrete HMMs, -alternative methods based on interpolation are possible. These are discussed -in section~\ref{s:psmooth}. - -\mysect{Tied Mixture Systems}{tiedmix} - -\index{tied-mixtures} -Discrete systems have the advantage of low run-time computation. However, -vector quantisation reduces accuracy and this can lead to poor performance. -As a intermediate between discrete and continuous, a fully tied-mixture -system can be used. -Tied-mixtures are conceptually just another example of the general parameter tying -mechanism built-in to \HTK. However, to use them effectively in -speech recognition systems a number of storage and computational -optimisations must be made. Hence, they are given special treatment in \HTK. - -When specific mixtures are tied as in -\begin{verbatim} - TI "mix" {*.state[2].mix[1]} -\end{verbatim} -then a Gaussian mixture component is shared across all of the owners -of the tie. In this example, all models will share the same Gaussian -for the first mixture component of state 2. However, if the mixture -component index is missing, then all of the mixture components participating in -the tie are {\it joined} rather than tied. More specifically, the commands -\begin{verbatim} - JO 128 2.0 - TI "mix" {*.state[2-4].mix} -\end{verbatim} -has the following effect. All of the mixture components in states 2 to 4 of -all models are collected into a pool. If the number of components -in the pool exceeds 128, as set by the preceding join command -\texttt{JO}\index{jo@\texttt{JO} command}, then -components with the smallest weights are removed until the pool size is exactly -128. Similarly, if the size of the initial pool is less than 128, then mixture -components are split using the same algorithm as for the Mix-Up \texttt{MU} -command.\index{mixture tying} All states then share all of the -mixture components in this pool. The new mixture weights are chosen to be proportional -to the log probability of the corresponding new mixture component mean with -respect to the original distribution for that state. The log is used here -to give a wider spread of mixture weights. All mixture weights are floored -to the value of the second argument of the \texttt{JO} command times -\texttt{MINMIX}\index{minmix@\texttt{MINMIX}}. - -The net effect of the above two commands is to create a set of \texttt{tied-mixture} -HMMs\footnote{Also called {\it semi-continuous} HMMs in the the literature.} -where the same set of mixture components is shared across all states of -all models. However, the type of the HMM set so created will still be -\texttt{SHARED} and the internal representation will be the same as for -any other set of parameter tyings. To obtain the optimised representation -of the tied-mixture weights -described in section~\ref{s:tmix}, the following \htool{HHEd} -\texttt{HK}\index{hk@\texttt{HK} command} command must be issued -\begin{verbatim} - HK TIEDHS -\end{verbatim} -This will convert the internal representation to the special tied-mixture -form in which all of the tied mixtures are stored in a global table and -referenced implicitly instead -of being referenced explicitly using pointers. - -Tied-mixture HMMs work best if the information relating to different sources -such as delta coefficients and energy are separated into distinct data streams. -This can be done by setting up multiple data stream HMMs from the outset. -However, it is simpler to use the -\texttt{SS}\index{ss@\texttt{SS} command} -command in \htool{HHEd} to split the data streams of the currently loaded HMM set. -Thus, for example, the command -\begin{verbatim} - SS 4 -\end{verbatim} -would convert the currently loaded HMMs to use four separate data streams -rather than one. When used in the construction of tied-mixture HMMs -this is analogous to the use of multiple codebooks in discrete density -HMMs. - -The procedure for building a set of tied-mixture HMMs may be summarised -as follows\index{tied-mixtures!build procedure} -\begin{enumerate} -\item Choose a {\it codebook} size for each data stream and then - decide how many Gaussian components will be needed from an initial set of - monophones to approximately fill this codebook. - For example, suppose that there are 48 three state monophones. If - codebook sizes of 128 are chosen for streams 1 and 2, and - a codebook size of 64 is chosen for stream 3 then single Gaussian - monophones would provide enough mixtures in total to fill the codebooks. -\item Train the initial set of monophones. -\item Use \htool{HHEd} to first split the HMMs into the required number of - data streams, tie - each individual stream and then convert the tied-mixture HMM set to - have the kind \texttt{TIEDHS}. - A typical script to do this for four streams would be -\begin{verbatim} - SS 4 - JO 256 2.0 - TI st1 {*.state[2-4].stream[1].mix} - JO 128 2.0 - TI st2 {*.state[2-4].stream[2].mix} - JO 128 2.0 - TI st3 {*.state[2-4].stream[3].mix} - JO 64 2.0 - TI st4 {*.state[2-4].stream[4].mix} - HK TIEDHS -\end{verbatim} -\item Re-estimate the models using \htool{HERest} in the normal way. -\end{enumerate} -Once the set of retrained tied-mixture models has been produced, context -dependent models can be constructed using similar methods to those -outlined previously. - -When evaluating probabilities in tied-mixture systems, it is often -sufficient to sum just the most likely mixture components since for any -particular input vector, its probability with respect to many of the Gaussian -components will be very low.\index{pruning!in tied mixtures} -\HTK\ tools recognise \texttt{TIEDHS} -HMM sets as being special in the sense that additional optimisations -are possible. When full tied-mixtures are used, then an additional layer of pruning -is applied. At each time frame, the log probability of the current observation -is computed for each mixture component. Then only those components which lie within -a threshold of the most likely component are retained. This -pruning is controlled by the \texttt{-c} option in -\htool{HRest}, \htool{HERest} and \htool{HVite}. - -\mysect{Parameter Smoothing}{psmooth} - -When large sets of context-dependent triphones are built using -discrete models or -tied-mixture models, under-training\index{under-training} can be a -severe problem since each -state has a large number of mixture weight parameters to estimate. -The \HTK\ tool \htool{HSmooth} allows these discrete probabilities or -mixture component weights -to be smoothed with the monophone weights using a technique called -deleted interpolation\index{deleted interpolation}. - -\htool{HSmooth} is used in combination with \htool{HERest} -working in parallel mode. The training data is split -into blocks and each block is used separately to re-estimate the -HMMs. However, since \htool{HERest} is in parallel mode, it outputs a dump -file of accumulators instead of updating the models. \htool{HSmooth} is then -used in place of the second pass of \htool{HERest}. It reads in the -accumulator information from each of the blocks, performs deleted -interpolation smoothing on the accumulator values and then outputs -the re-estimated HMMs in the normal way. - -\htool{HSmooth}\index{hsmooth@\htool{HSmooth}} implements a -conventional deleted interpolation scheme. -However, optimisation of the smoothing weights uses a fast -binary chop\index{binary chop} scheme -rather than the more usual Baum-Welch approach. -The algorithm for finding the optimal interpolation weights for a given -state and stream is as follows where the description is given in terms -of tied-mixture weights but the same applies to discrete probabilities. - -Assume that \htool{HERest} -has been set-up to output $N$ separate blocks of accumulators. -Let $w_i^{(n)}$ be the $i$'th -mixture weight based on the accumulator blocks $1$ to $N$ but excluding -block $n$, and let $\bar{w}_i^{(n)}$ be the corresponding context -independent weight. Let $x_i^{(n)}$ be the $i$'th mixture weight -count for the deleted block $n$. The derivative of the log -likelihood of the deleted block, given the probability distribution with -weights $c_i = \lambda w_i + (1 - \lambda) \bar{w}_i$ is given by -\begin{equation} - D(\lambda) = \sum_{n=1}^N \sum_{i=1}^M x_i^{(n)} - \left[ \frac{w_i^{(n)} - \bar{w}_i^{(n)}}{ - \lambda w_i^{(n)} + (1 - \lambda ) \bar{w}_i^{(n)}} - \right] -\end{equation} -Since the log likelihood is a convex function of $\lambda$, this derivative -allows the optimal value of $\lambda$ to be found by a simple -binary chop algorithm, viz. -\begin{verbatim} - function FindLambdaOpt: - if (D(0) <= 0) return 0; - if (D(1) >= 0) return = 1; - l=0; r=1; - for (k=1; k<=maxStep; k++){ - m = (l+r)/2; - if (D(m) == 0) return m; - if (D(m) > 0) l=m; else r=m; - } - return m; -\end{verbatim} - -\htool{HSmooth} is invoked in a similar way to \htool{HERest}. -For example, suppose that the directory \texttt{hmm2} contains a set of -accumulator files output by the first pass of \htool{HERest} running in parallel -mode using as source the HMM definitions listed in \texttt{hlist} and -stored in \texttt{hmm1/HMMDefs}. Then the command -\begin{verbatim} - HSmooth -c 4 -w 2.0 -H hmm1/HMMDefs -M hmm2 hlist hmm2/*.acc -\end{verbatim} -would generate a new smoothed HMM set in \texttt{hmm2}. Here the \texttt{-w} -option is used to set the minimum mixture component weight in any state to -twice the value of \texttt{MINMIX}\index{minmix@\texttt{MINMIX}}. -The \texttt{-c} option sets the maximum -number of iterations of the binary chop procedure to be 4. - - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/errors.tex b/HTKBook/errors.tex deleted file mode 100644 index 98907c6..0000000 --- a/HTKBook/errors.tex +++ /dev/null @@ -1,1583 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Julian Odell and Steve Young 15/11/95 -% -% This chapter added to by Gareth Moore 17/01/02 - -\mychap{Error and Warning Codes}{errors} -\index{errors!full listing}\index{warning codes!full listing} - -When a problem occurs in any \HTK\ tool, either -error\index{error message!format} -or warning messages\index{warning message!format} are printed. - -If a warning occurs then a message is sent to standard output and -execution continues. The format of this warning message is as follows: -\begin{verbatim} - WARNING [-nnnn] Function: 'Brief Explanation' in HTool -\end{verbatim} - -The message consists of four parts. On the first line is the tool -name and the error number\index{error number!structure of}. Positive -error numbers are fatal, whilst negative numbers are warnings and -allow execution to continue. On the second line is the function in -which the problem occurred and a brief textual explanation. The -reason for sending warnings to standard output is so that they are -synchronised with any trace output. - -If an error occurs a number of error messages may be produced on -standard error. Many of the functions in the \HTK\ Library do not exit -immediately when an error condition occurs, but instead print a message and return a failure -value back to their calling function. This process may be repeated several -times. When the \HTK\ Tool that called the function receives the failure -value, it exits the program with a fatal error message. Thus the -displayed output has a typical format as follows: - -\begin{verbatim} - ERROR [+nnnn] FunctionA: 'Brief explanation' - ERROR [+nnnn] FunctionB: 'Brief explanation' - ERROR [+nnnn] FunctionC: 'Brief explanation' - FATAL ERROR - Terminating program HTool -\end{verbatim} - -Error numbers in \HTK\ are allocated on a module by module -and tool by tool basis in blocks of 100 as shown by the table shown -overleaf. -Within each block of 100 numbers the first 20 (0 - 19) -and the final 10 (90-99) are reserved for standard types -of error which are common to all tools and library -modules. - -All other codes are module or tool specific. - -\mysect{Generic Errors}{generr} - -\begin{itemize} -\erno{+??00} Initialisation failed \\ - The initialisation procedure for the tool produced an - error. This could be due to errors in the command line - arguments or configuration file. -\erno{+??01} Facility not implemented \\ - HTK does not support the operation requested. - -\erno{+??05} Available memory exhausted \\ - The operation requires more memory than is available. -\erno{+??06} Audio not available \\ - The audio device is not available, either there is no driver for - the current machine, the library was compiled with \texttt{NO\_AUDIO} - set or another process has exclusive access to the audio device. - -\begin{center} -\begin{tabular}{|c|c|c|c|} -\hline -HCopy & 1000-1099 & HShell & 5000-5099 \\ -HList & 1100-1199 & HMem & 5100-5199 \\ -HLEd & 1200-1299 & HMath & 5200-5299 \\ -HLStats & 1300-1399 & HSigP & 5300-5399 \\ -HDMan & 1400-1499 & & \\ -HSLab & 1500-1599 & HAudio & 6000-6099 \\ - & & HVQ & 6100-6199 \\ - & & HWave & 6200-6299 \\ -HCompV & 2000-2099 & HParm & 6300-6399 \\ -HInit & 2100-2199 & HLabel & 6500-6599 \\ -HRest & 2200-2299 & & \\ -HERest & 2300-2399 & HGraf & 6800-6899 \\ -HSmooth & 2400-2499 & & \\ -HQuant & 2500-2599 & HModel & 7000-7099 \\ -HHEd & 2600-2699 & HTrain & 7100-7199 \\ - & & HUtil & 7200-7299 \\ - & & HFB & 7300-7399 \\ - & & HAdapt & 7400-7499 \\ -HBuild & 3000-3099 & & \\ -HParse & 3100-3199 & HDict & 8000-8099 \\ -HVite & 3200-3299 & HLM & 8100-8199 \\ -HResults & 3300-3399 & HNet & 8200-8299 \\ -HSGen & 3400-3499 & HRec & 8500-8599 \\ -HLRescore& 4000-4100 & HLat & 8600-8699 \\ -\hline -LCMap & 15000-15099 & LAdapt & 16400-16499 \\ -LWMap & 15100-15199 & LPlex & 16600-16699 \\ -LUtil & 15200-15299 & HLMCopy & 16900-16999 \\ -LGBase & 15300-15399 & Cluster & 17000-17099 \\ -LModel & 15400-15499 & LLink & 17100-17199 \\ -LPCalc & 15500-15599 & LNewMap & 17200-17299 \\ -LPMerge & 15600-15699 & & \\ -\hline -\end{tabular} -\end{center} - -\erno{+??10} Cannot open file for reading \\ - Specified file could not be opened for reading. The file may not - exist or the filter through which it is read may not be set correctly. -\erno{+??11} Cannot open file for writing \\ - Specified file could not be opened for writing. The directory may - not exist or be writable by the user or the filter through which the - file is written may not be set correctly. -\erno{+??13} Cannot read from file \\ - Cannot read data from file. The file may have been truncated, - incorrectly formatted or the filter process may have died. -\erno{+??14} Cannot write to file \\ - Cannot write data to file. The file system is full or the filter - process has died. - -\erno{+??15} Required function parameter not set \\ - You have called a library routine without setting one of the arguments. -\erno{+??16} Memory heap of incorrect type \\ - Some library routines require you to pass them a heap of a particular - type. - -\erno{+??19} Command line syntax error \\ - The command line is badly formed, refer to the manual or the command - summary printed when the command is executed without arguments. - -\erno{+??9?} Sanity check failed \\ - Several functions perform checks that structures are self consistent - and that everything is functioning correctly. When these sanity checks - fail they indicate the code is not functioning as intended. These - errors should not occur and are not correctable by the user. -\end{itemize} - -\mysect{Summary of Errors by Tool and Module}{errsum} - -\begin{itemize} - -\module{\htool{HCopy}} - -\begin{itemize} -\erno{+1030} Non-existent part of file specified\\ - \htool{HCopy} needed to access a non-existent part of the input file. - Check that the times are specified correctly, that the label file - contains enough labels and that it corresponds to the data file. - -\erno{\pm 1031} Label file formatted incorrectly\\ - \htool{HCopy} is only able to properly copy label files with the - same number of levels/alternatives. When using labels with multiple - alternatives only the first one is used to determine segment - boundaries. - -\erno{+1032} Appending files of different type/size/rate\\ - Files that are joined together must have the same parameter kind and - sample rate. - -\erno{-1089} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HList}} - -\module{\htool{HLEd}} - -\begin{itemize} -\erno{+1230} Edit script syntax error\\ - The \htool{HLEd} command script contains a syntax error, check the - input script against the descriptions of each command in - section~\ref{s:HLEd} or obtained by running \texttt{HLEd -Q}. - -\erno{\pm 1231} Operation invalid\\ - You have either exceeded \htool{HLEd} limits on the number of - boundaries that can be specified, tried to perform an operation on - a non-existent level or tried to sort an auxiliary level into time - order. None of these operations are supported. - -\erno{+1232} Cannot find pronunciation\\ - The dictionary does not contain a valid pronunciation (only occurs - when attempting expansion from a dictionary). - -\erno{-1289} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HLStats}} - -\begin{itemize} -\erno{+1328} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{\pm 1330} No operation specified\\ - You have invoked \htool{HLStats} but have not specified an operation - to be performed. - -\erno{-1389} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HDMan}} - -\begin{itemize} -\erno{\pm 1430} Limit exceeded\\ - \htool{HDMan} has several built in limits on the number of different - pronunciation, phones, contexts and command arguments. This error - occurs when you try to exceed one of them. - -\erno{\pm 1431} Item not found\\ - Could not find item for deletion. Check that it actually occurs in the - dictionary. - -\erno{\pm 1450} Edit script file syntax error\\ - The \htool{HDMan} command script contains a syntax error, check the - input script against the descriptions of each command in - section~\ref{s:HDMan} or obtained by running \texttt{HDMan -Q}. - -\erno{\pm 1451} Dictionary file syntax error\\ - One of the input dictionaries contained a syntax error. Ensure that - it is in a \HTK\ readable form (see section~\ref{s:usehdman}). - -\erno{\pm 1452} Word out of order in dictionary error\\ - Entries in the dictionary must be sorted into alphabetical (ASCII) order. - -\end{itemize} - -\module{\htool{HSLab}} - -\begin{itemize} -\erno{-1589} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HCompV}} - -\begin{itemize} -\erno{+2020} HMM does not appear in HMMSet\\ - Supplied HMM filename does not appear in HMMSet. Check - correspondence between HMM filename and HMMSet. - -\erno{+2021} Not enough data to calculate variance\\ - There are not enough frames of data to evaluate a - reliable estimate of variance. Use more data. - -\erno{+2028} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+2030} Needs continuous models\\ - HCompV can only operate on models with an HMM set kind - of \texttt{PLAINHS} or \texttt{SHAREDHS}. - -\erno{+2039} Speaker pattern matching failure\\ - The specified speaker pattern could not be matched against a - given utterance file name. - -\erno{+2050} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\erno{-2089} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HInit}} - -\begin{itemize} -\erno{+2120} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2121} Too little data\\ - Not enough data to reliably estimate parameters. Use more - training data. - -\erno{+2122} Segment with fewer frames than model states\\ - Segment may be too short to be matched to model, do not use - this segment for training. - -\erno{+2123} Cannot mix covariance kind in a single mix\\ - Covariance kind of all mixture components in any one state must be - the same. - -\erno{+2124} Bad covariance kind\\ - Covariance kind of mixture component must be either - \texttt{FULLC} or \texttt{DIAGC}. - -\erno{+2125} No best mix found\\ - The Viterbi mixture component allocation failed to find a most likely - component with this data. Check that data is not corrupt and - that parameter values produced by the initial uniform segmentation - are reasonable. - -\erno{+2126} No path through segment\\ - The Viterbi segmentation failed to find a path through - model with this data. Check that data is not corrupt and that - a valid path exists through the model. - -\erno{+2127} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{+2128} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+2129} HMM not found\\ - HMM missing from HMMSet. Check that the HMMSet is complete and - has not been corrupted. - -\erno{+2150} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\erno{+2170} Index out of range\\ - Trying to access a mixture component or VQ index beyond the - range in the current HMM. - -\erno{-2189} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HRest}} - -\begin{itemize} -\erno{+2220} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2221} Too few training examples\\ - There are fewer training examples than the minimum set by the - \texttt{-m} option (default 3). Either reduce the value specified - by \texttt{-m} or use more training examples. - -\erno{+2222} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{+2223} Floor too high\\ - Mix weight floor has been set so high that the sum over all - mixture components exceeds unity. Reduce the floor value. - -\erno{-2225} Defunct Mix X.Y.Z \\ - Not enough training data to re-estimate the covariance vector of - mixture component Z in stream Y of state X. The weight of the mixture - component is set to 0.0 and it will never recover even with further - training. - -\erno{+2226} No training data\\ - None of the supplied training data could be used to - re-estimate the model. Data may be corrupt or has been floored. - -\erno{+2228} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+2250} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\erno{-2289} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HERest}} - -\begin{itemize} -\erno{+2320} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2321} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{-2326} No transitions\\ - No transition out of an emitting state, ensure that - there is a transition path from beginning to end of model. - -\erno{+2327} Floor too high\\ - Mix weight floor has been set so high that the sum over all - mixture components exceeds unity. Reduce the floor value. - -\erno{+2328} No mixtures above floor\\ - None of the mixture component weights are greater than the floor value, - reduce the floor value. - -\erno{-2330} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{-2331} Not enough training examples\\ - Model was not updated as there were not enough training examples. - Either reduce the minimum specified by \texttt{-m} or - use more data. - -\erno{-2389} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HSmooth}} - -\begin{itemize} -\erno{+2420} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2421} Invalid HMM set kind\\ - \htool{HSmooth} can only be used if HMM set kind is either - \texttt{DISCRETE} or \texttt{TIED}. - -\erno{+2422} Too many monophones in list\\ - \htool{HSmooth} is limited to HMMSets containing fewer than - 500 monophones. - -\erno{+2423} Different number of states for smoothing\\ - Monophones and context-dependent models have differing - numbers of states. - -\erno{-2424} No transitions\\ - No transition out of an emitting state, ensure that - there is a transition path from beginning to end of model. - -\erno{+2425} Floor too high\\ - Mix weight floor has been set so high that the sum over all - mixture components exceeds unity. Reduce the floor value. - -\erno{-2427} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{-2428} Not enough training examples\\ - Model was not updated as there were not enough training examples. - Either reduce the minimum specified by \texttt{-m} or - use more data. - -\erno{+2429} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\end{itemize} - -\module{\htool{HQuant}} - -\begin{itemize} -\erno{+2530} Stream widths invalid\\ - The chosen stream widths are invalid. Check that these match the - parameter kind and are specified correctly. - -\erno{+2531} Data does not match codebook\\ - Ensure that the parameter kind of the data matches that of the codebook - being generated. - -\end{itemize} - -\module{\htool{HHEd}} - -\begin{itemize} - -\erno{+2628} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{\pm 2630} Tying null or different sized items\\ - You have executed a tie command on items which do not have the - appropriate structure or the structures are not matched. Ensure - that the item list refers only to the items that you wish to tie - together. - -\erno{-2631} Performing operation on no items\\ - The item list was empty, no operation is performed. - -\erno{+2632} Command parameter invalid\\ - The parameters to the command are invalid either because they - refer to parts of the model that do not exist (for instance a - state that does not appear in the model) or because they - do not represent an acceptable value (for instance HMMSet kind - is not \texttt{PLAINHS}, \texttt{SHAREDHS}, \texttt{TIEDHS} or - \texttt{DISCRETEHS}). - -\erno{+2634} Join parameters invalid or not set\\ - Make sure than the join parameters (set by the \texttt{JO} command) - are reasonable. In particular take care that the floor is low enough - to ensure that when summed over all the mixture - components the sum is below 1.0. - -\erno{+2635} Cannot find matching item\\ - Search for specified item was unsuccessful. When this occurs with - the \texttt{CL} or \texttt{MT} commands ensure that the appropriate - monophone/biphone models are in the current HMMSet. - -\erno{-2637} Small gConst\\ - A small gConst indicates a very low variance in that particular - Gaussian. This could be indicative of over-training of the models. - -\erno{-2638} No typical state\\ - When tying states together a search is performed for the distribution - with largest variance and all tied states share this distribution. If - this cannot be found the first in the list will be used instead. - -\erno{-2639} Long macro name\\ - In general macro names should not exceed 20 characters in length. - -\erno{+2640} Not implemented\\ - You have asked \htool{HHEd} to perform a function that is not - implemented. - -\erno{+2641} Invalid stream split\\ - The specified number/width of the streams does not agree with the - parameter kind/vector size of the models. - -\erno{+2650} Edit script syntax error\\ - The \htool{HHEd} command script contains a syntax error, check the - input script against the descriptions of each command in - section~\ref{s:HHEd} or obtained by running \texttt{HHEd -Q}. - -\erno{+2651} Command range error\\ - The value specified in the command script is out of range. Ensure that - the specified state exists and the the value given is valid. - -\erno{\pm 2655} Stats file load error\\ - Either loading occupation statistics for the second time or executing - an operation that needs the statistics loaded without loading them. - -\erno{+2660} Trees file syntax error\\ - The trees file format did not correspond to that expected. Ensure that - the file is complete and has not been corrupted. - -\erno{+2661} Trees file macro/question not recognised\\ - The question or macro referred to does not exist. Ensure that the file - is complete and has not been corrupted. - -\erno{+2662} Trying to synthesize for unknown model\\ - There is no tree or prototype model for the new context. Ensure that a - tree has been constructed for the base phone. - -\erno{\pm 2663} Invalid types to tree cluster\\ - Tree clustering will only work for single Gaussian diagonal - covariance untied models of similar topology. - -\end{itemize} - -\module{\htool{HBuild}} - -\begin{itemize} -\erno{\pm 3030} Mismatch between command line and language model\\ - Ensure that the \texttt{!ENTER} and \texttt{!EXIT} words are correctly - defined and that the supplied files are of the appropriate type. - -\erno{\pm 3031} Unknown word\\ - Ensure that the word list corresponds to the language model/lattice - supplied. - -\end{itemize} - -\module{\htool{HParse}} - -\begin{itemize} -\erno{\pm 3130} Variable not defined\\ - You have referenced a network that has not yet been defined. Check - that all networks are defined before they are referenced. - -\erno{\pm 3131} Loop or word expansion error\\ - There is either a mismatch between the \texttt{WD\_BEGIN WD\_END} - pairs or a triphone loop is badly formed. - -\erno{\pm 3132} Dictionary error\\ - When generating a dictionary a word exceeded the maximum number of - phones, a word occurred twice or no dictionary was produced. - -\erno{\pm 3150} Syntax error in HParse file\\ - The \htool{HParse} network definition contains a syntax error, check - the input file against the network description in - section~\ref{s:HParse}. - -\end{itemize} - -\module{\htool{HVite}} - -\begin{itemize} - -\erno{+3228} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{\pm 3230} Unsupported operation\\ - \htool{HVite} is not able to perform the operation requested - -\erno{\pm 3231} Data does not match HMMs\\ - There is a mismatch between the data file and the HMMSet. Ensure that - the data is parameterised in the correct format and the configuration - parameters match those used during training. - -\erno{+3232} MMF Load Error\\ - The HMMSet does not contain a well-formed regression class tree. - -\erno{+3233} Transcription empty\\ - In alignment mode a segment had an empty transcription and no - boundary word was specified. - -\erno{-3289} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HResults}} - -\begin{itemize} -\erno{-3330} Empty file\\ - The file was empty and will be skipped. - -\erno{+3331} Unknown label\\ - The label did not appear in the list supplied to HResults. - This error will only occur if calculating confusion matrices so - normally the contents of the word list file will have no effect - on results. - -\erno{+3332} Too many labels\\ - \htool{HResults} will only generate confusion statistics for a small - number of labels. - -\erno{\pm 3333} Cannot calculate word spot results\\ - When calculating word spotting results the label files need to have - both times and scores present. - -\erno{-3389} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HSGen}} - -\begin{itemize} -\erno{-3420} Network malformed\\ - The word network is malformed. The information in a node (word - and following arcs) is set incorrectly. - -\end{itemize} - -\module{\htool{HLRescore}} - -\begin{itemize} - -\erno{-4089} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HShell}} - -\begin{itemize} -\erno{+5020} Command line processing error -\erno{+5021} Command line argument type error -\erno{+5022} Command line argument range error\\ - The command line is badly formed. Ensure that it matches the - syntax and values expected by the command (check the manual - page or the syntax obtained by running \htool{HTool} without any - arguments). - -\erno{+5050} Configuration file format error\\ - \htool{HShell} was unable to parse the configuration. Check that - it is of the format described in section~\ref{s:config}. - -\erno{+5051} Script file format error\\ - Check that the script file is just a list of file names and that - if any file names are quoted that the quotes occur in pairs. - -\erno{+5070} Module version syntax error\\ - A module registered with HShell with an incorrectly formatted - version string (which should be of the form - \texttt{"!HVER!HModule: Vers.str [WHO DD/MM/YY]"}). - -\erno{+5071} Too many configuration parameters\\ - The size of the buffer used by one of the tools or modules to read - its configuration parameters was exceeded. Either reduce the total - number of configuration parameters in the file or make more of then - specific to their particular module rather than global. - -\erno{+5072} Configuration parameter of wrong type\\ - The configuration parameter is of the wrong type. Check that its type - agrees with that shown in chapter~\ref{c:confvars}. - -\erno{+5073} Configuration parameter out of range\\ - The configuration parameter is out of range. - -\end{itemize} - -\module{\htool{HMem}} - -\begin{itemize} -\erno{+5170} Heap parameters invalid\\ - You have tried to create a heap with unreasonable parameters. Adjust - these so that the growth factor is positive and the initial block - size is no larger than the maximum. For \texttt{MSTAK} the element - size should be 1. - -\erno{+5171} Heap not found\\ - The specified heap could not be found, ensure that it has not been - deleted or memory overwritten. - -\erno{+5172} Heap does not support operation\\ - The heap is of the wrong type to support the requested operation. In - particular it is not possible to \texttt{Reset} or \texttt{Delete} a - \texttt{CHEAP}. - -\erno{+5173} Wrong element size for MHEAP\\ - You have tried to allocate an item of the wrong size from a - \texttt{MHEAP}. All items on a \texttt{MHEAP} must be of the same size. - -\erno{+5174} Heap not initialised\\ - You have tried to allocate an item on a heap that has not yet been - created. Ensure that \texttt{CreateHeap} is called to initialise - the heap before any items are allocated from it. - -\erno{+5175} Freeing unseen item\\ - You have tried to free an item from the wrong heap. This can occur - if the wrong heap is specified, the item pointer has been corrupted - or the item has already been freed implicitly by a - \texttt{Reset/DeleteHeap} call. - -\end{itemize} - -\module{\htool{HMath}} - -\begin{itemize} -\erno{+5220} Singular covariance matrix\\ - The covariance matrix was not invertible. This may indicate a lack - of training data or linearly dependent parameters. - -\erno{+5270} Size mismatch\\ - The input parameters were of incompatible sizes. - -\erno{+5271} Log of negative\\ - Result would be logarithm of a negative number. - -\end{itemize} - -\module{\htool{HSigP}} - -\begin{itemize} -\erno{+5320} No results for WaveToLPC\\ - Call did not include Vectors for the results. - -\erno{+5321} Vector size mismatch\\ - Input vectors were of mismatched sizes. - -\erno{-5322} Clamped samples during zero mean\\ - During a zero mean operation samples were clipped as they were outside - the allowable range. - -\end{itemize} - -\module{\htool{HAudio}} - -\begin{itemize} -\erno{+6020} Replay buffer not active\\ - Attempt to access a replay buffer when one was not attached. - -\erno{+6021} Cannot StartAudio without measuring silence\\ - An attempt was made to start audio input through the silence detector - without first measuring or supplying the background silence values. - -\erno{+6070} Audio frame size/rate invalid\\ - The choice of frame period and window duration are invalid. Check - both these and the sample rate. - -\erno{-6071} Setting speech threshold below silence\\ - The thresholds used in the speech detector have been set so that the - threshold for detecting speech is set below that of detecting silence. - -\end{itemize} - -\module{\htool{HVQ}} - -\begin{itemize} -\erno{+6150} VQ file format error\\ - The VQ file was incorrectly formatted. Ensure that the file is - complete and has not been corrupted. - -\erno{+6151} VQ file range error\\ - A value from the VQ file was out of range. Ensure that the file is - complete and has not been corrupted. - -\erno{+6170} Magic number mismatch\\ - The VQ magic number (normally based on parameter kind) does not match - that expected. Check that the parameter kind used to quantise the data - and create the VQ table matches the current parameter kind. - -\erno{+6171} VQ table already exists\\ - All VQ tables must have distinct names. This error will occur if you - try to create or load a VQ table with the same name as one already - loaded. - -\erno{+6172} Invalid covariance kind\\ - Entries in VQ tables must have either \texttt{NULLC}, \texttt{FULLC} or - \texttt{INVDIAGC} covariance kind. - -\erno{+6173} Node not in table\\ - A node was missing from the VQ table. Ensure that the VQ table was - properly created or that the file was complete. - -\erno{+6174} Stream codebook mismatch\\ - The number or size of streams in the VQ table does not match that - requested. - -\end{itemize} - -\module{\htool{HWave}} - -\begin{itemize} -\erno{+6220} Cannot fseek/ftell\\ - Unless the wave file is read through a pipe fseek and ftell are - expected to work correctly so that \htool{HWave} can calculate the - file size. If this error occurs when using an input pipe, supply - the number of samples in the file using the configuration variable - \texttt{NSAMPLES}. - -\erno{+6221} File appears to be a infinite\\ - \htool{HWave} cannot determine the size of the file. - -\erno{+6230} Config parameter not set\\ - A necessary configuration parameter has not been set. Determine the - correct value and place this in the configuration file before - re-invoking the tool. - -\erno{+6250} Premature end of header\\ - \htool{HWave} could not read the complete file header. - -\erno{+6251} Header contains invalid data\\ - \htool{HWave} was unable to successfully parse the header. The header - is invalid, of the wrong type or be a variation that \htool{HWave} does - not handle. - -\erno{+6252} Header missing essential data\\ - The header was missing a piece of information necessary for - \htool{HWave} to load the file. Check the processing of the - input file and re-process if necessary. - -\erno{+6253} Premature end of data\\ - The file ended before all the data was read correctly. Check that the - file is complete, has not been corrupted and where necessary - \texttt{NSAMPLES} is set correctly. - -\erno{+6254} Data formated incorrectly\\ - The data could not be decoded properly. Check that the file was - complete and processed correctly. - -\erno{+6270} File format invalid\\ - The file format is not valid for the operation requested. - -\erno{+6271} Attempt to read outside file\\ - You have tried to read a sample outside of the waveform file. - -\end{itemize} - -\module{\htool{HParm}} - -\begin{itemize} -\erno{+6320} Configuration mismatch\\ - The data file does not match the configuration. Check the - configuration file is correct. - -\erno{+6321} Invalid parameter kind\\ - Parameter kind is not valid. Check the configuration file. - -\erno{+6322} Conversion not possible\\ - The specified conversion is not possible. Check the configuration is - correct and re-code the data from waveform files if necessary. - -\erno{+6323} Audio error\\ - An audio error has been detected. Check the \htool{HAudio} - configuration and the audio device. - -\erno{+6324} Buffer not initialised\\ - Ensure that the buffer is used in the correct manner. - -\erno{+6325} Silence detection failed\\ - The silence detector was not initialised correctly before use. - -\erno{+6328} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+6350} CRC error\\ - The CRC does not match that of the data. Check the data file is - complete and has not been corrupted. - -\erno{-6351} Byte swapping not possible\\ - \htool{HParm} will attempt to byte swap parameter files but this - may not work if the floating point representation of the machine - that generated the file is different from that which is reading it. - -\erno{+6352} File too short to parameterise\\ - The file does not contain enough data to produce a single observation. - Check the file is complete and not corrupt. If it is, it should be - discarded. - -\erno{+6370} Unknown parameter kind\\ - The specified parameter kind is not recognised. Refer to - section~\ref{s:spiosum} for a list of allowable parameter kinds - and qualifiers. - -\erno{+6371} Invalid parameters for coding\\ - The chosen parameters are not valid for coding. Choose different ones. - -\erno{+6372} Stream widths not valid\\ - Cannot split the data into the specified number of streams. Check that - the parameter kind is correct and matches any models used. - -\erno{+6373} Buffer/observation mismatch\\ - The observation parameter kind should match that of the input buffer. - Check that the configuration parameter kind is correct and matches - that of any models used. - -\erno{+6374} Buffer size too small for window\\ - Calculation of delta parameters requires a window larger than the - buffer size chosen. Increase the size of the buffer. - -\erno{+6375} Frame not in buffer\\ - An attempt was made to access a frame that does not appear in the - buffer. Make sure that the file actually contains the specified frame. - -\erno{+6376} Mean/Variance normalisation failed\\ - The mean or variance normalisation vector from the file - specified by the normalisation dir and mask cannot be applied. - Make sure the file format is correct and the vectors are of - the right dimension. - -\end{itemize} - -\module{\htool{HLabel}} - -\begin{itemize} -\erno{+6520} MLF index out of range\\ - An attempt was made to access an MLF that has not been loaded or to - load too many MLFs. - -\erno{+6521} fseek/ftell not possible\\ - \htool{HLabel} needs random access to MLFs. This error is generated - when this is not possible (for instance if access is via a pipe). - -\erno{+6550} HTK format error -\erno{+6551} MLF format error -\erno{+6552} TIMIT format error -\erno{\pm 6553} ESPS format error -\erno{+6554} SCRIBE format error\\ - A label file was formatted incorrectly. Label - file formats are described in chapter~\ref{c:labels}. - -\erno{+6570} Level out of range\\ - Attempted to access a non-existent label level. Check that the correct - label file has been loaded. - -\erno{+6571} Label out of range\\ - Attempted to access a non-existent label. Check that the correct - label file has been loaded and that the correct level is being - accessed. - -\erno{+6572} Invalid format\\ - The specified file format is not valid for the particular operation. - -\end{itemize} - -\module{\htool{HModel}} - -\begin{itemize} -\erno{+7020} Cannot find physical HMM\\ - No physical HMM exists for a particular logical model. Check that the - HMMSet was loaded or created correctly. - -\erno{+7021} INVDIAG internal format\\ - Attempts to load or save models with \texttt{INVDIAG} covariance kind - will fail as this is a purely internal model format. - -\erno{\pm 7023} varFloor should be variance floor\\ - \htool{HModel} reserves the macro name \texttt{varFloorN} as the - variance floor for stream \texttt{N}. These should be variance - macros (type \texttt{v}) of the correct size for the particular stream. - -\erno{+7024} Variance tending to 0.0\\ - A variance has become too low. Start using a variance floor or - increase the amount of training data. - -\erno{+7025} Bad covariance kind\\ - The particular functionality does not support the covariance - kind of the mixture component. - -\erno{+7030} HMM set incomplete or inconsistent\\ - The HMMSet contained missing or inconsistent data. Check that the - file is complete and has not been corrupted. - -\erno{+7031} HMM parameters inconsistent\\ - Some model parameters were inconsistent. Check that the file is - complete and has not been corrupted. - -\erno{\pm 7032} Option mismatch\\ - All HMMs in a particular set must have consistent options. - -\erno{+7035} Unknown macro\\ - Macro does not exist. Check that the name is correct and appears - in the HMMSet. - -\erno{+7036} Duplicate macro\\ - Attempted to create a macro with the same name as one already present. - Choose a different name. - -\erno{+7037} Invalid macro\\ - Macro had invalid type. See section~\ref{s:HMMmac} describes the - allowable macro types. - -\erno{+7050} Model file format error -\erno{+7060} HMM List format error\\ - The file was formated incorrectly. Check the file is complete and - has not been corrupted. - -\erno{+7070} Invalid HMM kind\\ - Invalid HMMSet kind. Check that this is specified correctly. - -\erno{+7071} Observation not compatible with HMMSet\\ - Attempted to calculate an observation likelihood for an observation - not compatible with the HMMSet. Check that the parameter kind is - set correctly. - -\end{itemize} - -\module{\htool{HTrain}} - -\begin{itemize} -\erno{+7120} Clustering failed\\ - Almost certainly due to a lack of data, reduce the - number of clusters requested or increase amount of data. - -\erno{+7150} Accumulator file format error\\ - Cannot read an item from an accumulator file. Check - that file is complete and not corrupted. - -\erno{+7170} Unsupported covariance kind\\ - Covariance kind must be either \texttt{FULLC}, \texttt{DIAGC} or - \texttt{INVDIAGC}. - -\erno{+7171} Item out of range\\ - Attempt made to access data beyond expected range. Check that - the item number is correct. - -\erno{+7172} Tree size must be power of 2\\ - Requested codebook size must be a power of 2 when - using tree based clustering. - -\erno{-7173} Segment empty\\ - Empty data segment in file. Check that file has not - become corrupted and that the start and end segment times - are correct. - -\end{itemize} - -\module{\htool{HUtil}} - -\begin{itemize} -\erno{+7220} HMMSet empty\\ - A scan was initiated for a HMMSet with no members. - -\erno{+7230} Item list parse error\\ - The item list syntax was incorrect. Check the item list specification - in section~\ref{s:HHEd}. - -\erno{+7231} Item list type error\\ - Each item in a particular list should be of the same type and size. - -\erno{+7250} Stats file format error\\ - Stats file is of wrong format. Note the format of the stats file has - changed in HTK\_V2.0 and old files will need converting to the new - format. - -\erno{+7251} Stats file model error\\ - A model name encountered in the stats file is invalid check that the - model set corresponds to that used to generate the stats file and that - the stats file is complete and has not been corrupted. - -\erno{+7270} Accessing non-existent macro\\ - Attempt to perform operation on non-existent macro. - -\erno{+7271} Member id out of range\\ - Attempt to perform set operation on out of range member. - -\end{itemize} - -\module{\htool{HFB}} - -\begin{itemize} - -\erno{+7321} Unknown model\\ - Model in HMM List not found in HMMSet, check that the - correct HMM List is being used. - -\erno{+7322} Invalid output probability\\ - Mixture component probability has not been set. This should - not occur in normal use. - -\erno{+7323} Beta prune failed on taper\\ - Utterance is possibly too short for minimum duration - of model sequence. Check transcription. - -\erno{-7324} No path through utterance\\ - No path was found on the beta training pass, relax the - pruning threshold. - -\erno{-7325} Empty label file\\ - No labels found in label file, check label file. - -\erno{+7326} Single-pass retraining data mismatch\\ - Paired training files must contain the same number of observations. - Use original data to re-parameterise. - -\erno{\pm 7332} HMM with unreachable states\\ - HMM has an unreachable state, check transition matrix.\\ - -\erno{-7333} Transition matrix with discontinuity\\ - Check transition matrix.\\ - -\erno{+7350} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\end{itemize} - -\module{\htool{HDict}} - -\begin{itemize} -\erno{+8050} Dictionary file format error\\ - The dictionary file is not correctly formatted. - Section~\ref{s:usehdman} describes the HTK dictionary file format. - -\end{itemize} - -\module{\htool{HLM}} - -\begin{itemize} -\erno{+8150} LM syntax error\\ - The language model file was formatted incorrectly. Check the file is - complete and has not been corrupted. - -\erno{\pm 8151} LM range error\\ - The specified value(s) for the language model probability are not - valid. Check the input files are correct. - -\end{itemize} - -\module{\htool{HNet}} - -\begin{itemize} -\erno{+8220} No such word\\ - The specified word does not exist or does not have a valid - pronunciation. - -\erno{-8221} Duplicate pronunciations removed\\ - During network generations duplicate identical pronunciations - of the same word are removed. - -\erno{+8230} Contexts not consistent\\ - \htool{HNet} can only deal with the standard HTK method for specifying - context \texttt{left-phone+right} and will only allow context free - phones if they are context independent and only form part of the word. - This may be indicative of an inconsistency between the symbols in the dictionary - and the hmms as defined. There may be a model/phone in the dictionary that has - not been defined in the HMM list or may not have a corresponding model. - See also section~\ref{s:netexpand} on context expansion. - - -\erno{+8231} No such model\\ - A particular model could not be found. Make sure that the network is - being expanded in the correct fashion and then ensure that your HMM - list will cover all required contexts. - -\erno{+8232} Lattice badly formed\\ - Could not convert lattice to network. The lattice should have a single - well defined start and a single well defined end. When cross word - expansion is being performed the number of \texttt{!NULL} words that - can be concatenated in a string is limited. - -\erno{+8250} Lattice format error\\ - The lattice file is formatted incorrectly. Ensure that the lattice - is of the format described in chapter~\ref{c:htkslf}. - -\erno{+8251} Lattice file data error\\ - The value specified in the lattice file is invalid. - -\erno{+8252} Lattice file with multiple start/end nodes\\ - A lattice should have only one well defined start node and one - well defined end node. - -\erno{+8253} Lattice with invalid sub lattices\\ - The sub lattices referred to by the main lattices are - malformed. - -\end{itemize} - - -\module{\htool{HRec}} - -\begin{itemize} -\erno{\pm 8520} Invalid HMM\\ - One of the HMMs in the network is invalid. Check that the HMMSet - has been correctly initialised. - -\erno{+8521} Network structure invalid\\ - The network is incorrectly structured. Take care to avoid loops - that can be traversed without consuming observations (this may occur - if you introduce any 'tee' words in which all the models making up that - word contain tee-transitions). Also ensure that the recogniser and - the network have been created and initialised correctly. - -\erno{+8522} Lattice structure invalid\\ - The lattice was incorrectly formed. Ensure that the lattice was - created properly. - -\erno{\pm 8570} Recogniser not initialised correctly\\ - Ensure the recogniser is initialised and used correctly. - -\erno{+8571} Data does not match HMMs\\ - The observation does not match the HMM structure. Check the parameter - kind of the data and ensure that the data is matched to the HMMs. - -\end{itemize} - - -\module{\htool{HLat}} - -\begin{itemize} - -\erno{8621} Lattice incompatible with dictionary\\ - The lattice refers to a pronunciation variant (filed - \texttt{v=}) that doesn't exist in the current dictionary. - -\erno{\pm 8622} Lattice structure invalid\\ - The lattice does not meet the requirements for some operation. - All lattices must have unique start and end nodes and for many - operations the lattices need to be acyclic (i.e.\ be a - Directed Acyclic Graph). - -\erno{8623} Start or end word not found\\ - The specified lattice start or end word could not be found in - the dictionary. - -\erno{8624} Lattice end node label invalid\\ - The lattice end node must either be labelled with \verb|!NULL| - or the specified end word (default: \verb|!SENT_END|) - -\erno{-8630} LLF file not found\\ - The specified LLF file could not be found or isn't in the - right format. - -\erno{8631} Lattice not found in LLF file\\ - A lattice couldn't be found in the LLF file. Note that the - order in the LLF file must correspond to the order of processing. - -\erno{8632} Lattice not found\\ - The specified lattice file could not be opened. - -\erno{8690} Lattice operation not supported\\ - The requested operation is not supported, yet. -\erno{8691} Lattice processing sanity check failed\\ - During processing an internal sanity check failed. This should - never happen.. - -\end{itemize} - - -\module{\htool{HGraf}} - -\begin{itemize} -\erno{+6870} X11 error\\ - Ensure that the \texttt{DISPLAY} variable is set and that the - X11 window system is configured correctly. - -\end{itemize} - - -% Language modelling libraries and tools - -% LCMap -\module{\htool{LCMap}} - -\begin{itemize} -\erno{+15050} Unlikely num map entries[\texttt{n}] in \texttt{XYZ}\\ - A negative or infeasibly large number of class map entries - have been specified. - -\erno{+15051} ReadMapHeader: UNKxxx configs must be set for hdrless map\\ - There is no header on the map so you must set UNKNOWNID and UNKNOWNNAME. - -\erno{+15052} No name in \texttt{XYZ}\\ - No NAME header in class map. - -\erno{+15053} Unknown escmode \texttt{XYZ} in \texttt{XYZ}\\ - ESCMODE header must specify either HTK or RAW. - -\erno{+15054} Class name \texttt{XYZ} duplicate in \texttt{XYZ}\\ - Two classes in the class map have the same name, which is not allowed. - -\erno{+15055} Bad index \texttt{n} for class \texttt{XYZ} in \texttt{XYZ}\\ - A class index less than 1 or greater than or equal to BASEWORDNDX (defined - at compile time in \htool{LWMap} - default is 65536) was found - in the class map. If you need more than \htool{BASEWORDNDX} - classes then you must recompile \HTK\ with a new base word - value. - -\erno{+15056} Number of entries = \texttt{n} for class \texttt{XYZ} in \texttt{XYZ}\\ - There must be at least one member in each class - empty - classes are not allowed. - -\erno{+15057} Bad type \texttt{XYZ} for class \texttt{XYZ} in \texttt{XYZ}\\ - Classes must be defined using either IN or NOTIN. - -\erno{+15058} A class is in its own exclusive list. This typically happens when a class map - is specified as a plain list of words. Such list is by default assumed to be - a list of words excluded from class !!UNK. The error is triggered when !!UNK - is in the word list. !!UNK must be removed from the list. - -\end{itemize} - - -% LWMap -\module{\htool{LWMap}} - -\begin{itemize} -\erno{+15150} Word list/word map file format error\\ - Check that the word list/word map file is correctly formatted. - -\erno{+15151} Unlikely num map entries[\texttt{n}] in \texttt{XYZ}\\ - A negative or infeasibly large number of word map entries - have been specified. - -\erno{+15152} No NAME header in \texttt{XYZ}\\ - No NAME header in word map. - -\erno{+15153} No SEQNO header in \texttt{XYZ}\\ - No SEQNO header in word map. - -\erno{+15154} Unknown escmode \texttt{XYZ} in \texttt{XYZ}\\ - ESCMODE header must specify either HTK or RAW. - -\erno{+15155} Word name \texttt{XYZ} is duplicated in \texttt{XYZ}\\ - There are duplicate words in the word map, which is not allowed. - -\end{itemize} - - -% LUtil -\module{\htool{LUtil}} - -\begin{itemize} -\erno{+15250} Header format error\\ - Ensure that word maps and/or n-gram files used by the program start - with the appropriate header. -\end{itemize} - - -% LGBase -\module{\htool{LGBase}} - -\begin{itemize} -\erno{+15330} n-gram file consistency check failure\\ - The n-gram file is incompatible with other resources used by the - program. - -\erno{+15340} File \texttt{XYZ} is \texttt{n}-gram but inset is \texttt{n}-gram\\ - The specified input gram file is not of the expected gram size. - -\erno{+15341} Requested N[\texttt{n}] greater than gram size [\texttt{n}]\\ - An n-gram was requested which was larger than any of those - supplied in the input files. - -\erno{+15345} n-grams out of order\\ - The input gram file is not correctly sorted. - -\erno{+15350} n-gram file format error\\ - Ensure that n-gram files used by the program are formatted correctly - and start with the appropriate header. -\end{itemize} - - -% LModel -\module{\htool{LModel}} - -\begin{itemize} -\erno{+15420} Cannot find n-gram component\\ - The internal structure of the language model is corrupted. This error - is usually caused when an n-gram $(a,b,c)$ is encountered without - the presence of n-gram $(a,b)$. -\erno{+15430} Incompatible probability kind in conversion\\ - The currently used language model does not allow the required - conversion operation. This error is caused by attempting to prune a - model stored in the ultra file format. -\erno{+15440} Cannot prune models in ultra format\\ - Pruning of language models stored in {\em ultra} file format is not - supported. -\erno{+15445} Word ID size error\\ - Language models with vocabularies of over 65,536 words require the - use of larger word identifiers. This is a sanity check error. -\erno{-15450} Word \texttt{XYZ} not in unigrams - skipping n-gram.\\ - There should be a unigram count for each word in other length grams. -\erno{+15450} Language model file format error\\ - The language model file is formatted incorrectly. Check the file is - complete and has not been corrupted. -\erno{-15451} Extraneous line warning\\ - Extra lines were found on the end of a file and are being ignored. -\erno{-15460} Model order reduced\\ - Due to the effects of pruning the model order is automatically reduced. -\end{itemize} - - -% LPCalc -\module{\htool{LPCalc}} - -\begin{itemize} -\erno{+15520} Unable to find FLEntry to attach\\ - Indicates that the LM data structures are corrupt. This is normally caused - by NGram files which have not been sorted. -\erno{+15525} Attempt to overwrite entries when attaching\\ - Indicates that the LM structure is corrupt. Ensure that the word map file - used is suitable for decoding the NGram database files. -\erno{-15540} \texttt{n}-gram cutoff out of range\\ - An inapplicable cutoff was ignored. -\erno{+15540} Pruning error\\ - The pruning parameters specified are not compatible with the parameters - of the language model. -\end{itemize} - - -% LPMerge -\module{\htool{LPMerge}} - -\begin{itemize} -\erno{+15620} Unable to find word in any model\\ - Indicates that the target model vocabulary contains a word which cannot - be found in any of the source models. -\end{itemize} - - - -% LPlex -\module{\htool{LPlex}} - -\begin{itemize} -\erno{+16620} symbol {\tt XYZ} not in word list\\ - The sentence start symbol, sentence end symbol and OOV symbol (only if - OOVs are to be included in the perplexity calculation) must be in the - language model's vocabulary. Note that the vocabulary list is either - specified with the {\tt -w} option or is implicitly derived from the - language model. - -\erno{+16625} Unable to find word {\tt XYZ} in any model\\ - Ensure that all words in the vocabulary list specified with the {\tt -w} - option are present in at least one of the language models. - -\erno{+16630} Maximum number of unique OOVs reached\\ - Too many OOVs encountered in the input text. - -\erno{-16635} Transcription file {\tt fn} is empty\\ - The label file does not contain any words. - -\erno{-16640} Word too long, will be split: {\tt XYZ}\\ - The word read from the input stream is of over 200 characters. - -\erno{-16645} Text buffer size exceeded ({\tt n})\\ - The maximum number of words allowed in a single utterance has been - reached. - -\erno{+16650} Maximum utterance length in a label file exceeded (limit - is compiled to be {\tt n} tokens)\\ - No label file utterance end has been encountered within - {\tt n} tokens -- perhaps this is a text file and you forgot - to pass the {\tt -t} option? -\end{itemize} - - -% HLMCopy -\module{\htool{HLMCopy}} - -\begin{itemize} -\erno{+16920} Maximum number of phones reached\\ - When \htool{HLMCopy} is used to copy dictionaries, the target dictionary's - phone table is composed by combining the phone tables of all source - dictionaries. Check that the number of different phones resulting from - combining the phone tables of the source dictionaries does not exceed the - internally set limit. - -\erno{+16930} Cannot find definition for word {\tt XYZ}\\ - When copying dictionaries, ensure that each word in the vocabulary list - occurs in at least one source dictionary. -\end{itemize} - - -% Cluster -\module{\htool{Cluster}} - -\begin{itemize} -\erno{+17050} Word {\tt XYZ} found in class map but not in word map\\ - All words in the class map must be found in the word map too. - -\erno{-17051} Unknown word token {\tt XYZ} was explicitly given with -u, but - does not occur in the word map\\ - This warning appears if you specify an unknown word token - which is not found in the word map. - -\erno{+17051} Token not found in word list\\ - Sentence start, end and unknown (if used) tokens must be found - in the word map. - -\erno{+17052} Not all words were assigned to classes\\ - A classmap was imported which did not include all words in the - word map. - -\erno{-17053} Word {\tt XYZ} is in word map but not in any gram files\\ - The stated word will remain in whichever class it is already - in - either as defaulted to or supplied via the input class map. -\end{itemize} - - -\end{itemize} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/exampsys.tex b/HTKBook/exampsys.tex deleted file mode 100644 index 09d62ea..0000000 --- a/HTKBook/exampsys.tex +++ /dev/null @@ -1,2167 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% -% revised by JBA and VV - -\mychap{A Tutorial Example of Using HTK}{exampsys} - -\sidepic{recipe}{80}{ -This final chapter of the tutorial part of the book will describe the -construction of a recogniser for simple voice dialling applications. This -recogniser will be designed to recognise continuously spoken digit strings and -a limited set of names. It is sub-word based so that adding a new name to the -vocabulary involves only modification to the pronouncing dictionary and task -grammar. The HMMs will be continuous density mixture Gaussian tied-state -triphones with clustering performed using phonetic decision trees. Although -the voice dialling task itself is quite simple, the system design is -general-purpose and would be useful for a range of applications. -} - -In addition to the construction of a simple voice-dialling system, examples for -using more advanced options, such as decorrelating transforms, the large -vocabulary decoder and discriminative training, are also given. These sections -do not necessarily link fully with the other parts of the tutorial, but aim to -give the user an idea of the form of command-lines and steps that might be -involved in using these options. - -The system will be built from scratch even to the extent of recording training -and test data using the \HTK\ tool \htool{HSLab}. To make this tractable, the -system will be speaker dependent\footnote{A stage of the tutorial deals -with adapting the speaker dependent models for new speakers}, but the same design -would be followed to build a speaker independent system. The only difference being -that data would be required from a large number of speakers and there would -be a consequential increase in model complexity. - -Building a speech recogniser from scratch involves a number of inter-related -subtasks and pedagogically it is not obvious what the best order is to present -them. In the presentation here, the ordering is chronological so that in effect -the text provides a recipe that could be followed to construct a similar -system. The entire process is described in considerable detail in order give a -clear view of the range of functions that \HTK\ addresses and thereby to -motivate the rest of the book. - -The \HTK\ software distribution also contains an example of constructing a -recognition system for the 1000 word ARPA Naval Resource Management Task. This -is contained in the directory \texttt{RMHTK} of the \HTK\ distribution. -Further demonstration of \HTK's capabilities can be found in the directory -\texttt{HTKDemo}. Some example scripts that may be of assistance during the -tutorial are available in the \texttt{HTKTutorial} directory. - -At each step of the tutorial presented in this chapter, the user is advised to -thoroughly read the entire section before executing the commands, and also to -consult the reference section for each \HTK\ tool being introduced -(chapter~\ref{c:toolref}), so that all command line options and arguments are -clearly understood. - -\mysect{Data Preparation}{egdataprep} - -The first stage of any recogniser development project is data preparation. -\index{data preparation} Speech data is needed both for training and for -testing. In the system to be built here, all of this speech will be recorded -from scratch and to do this scripts are needed to prompt for each sentence. In -the case of the test data, these prompt scripts will also provide the reference -transcriptions against which the recogniser's performance can be measured and a -convenient way to create them is to use the task grammar as a random generator. -In the case of the training data, the prompt scripts will be used in -conjunction with a pronunciation dictionary to provide the initial phone level -transcriptions needed to start the HMM training process. Since the application -requires that arbitrary names can be added to the recogniser, training data -with good phonetic balance and coverage is needed. Here for convenience the -prompt scripts needed for training are taken from the TIMIT acoustic-phonetic -database. - -It follows from the above that before the data can be recorded, a phone set -must be defined, a dictionary must be constructed to cover both training and -testing and a task grammar must be defined. - -\subsection{Step 1 - the Task Grammar} - -The goal of the system to be built here is to provide a voice-operated -interface for phone dialling. Thus, the recogniser must handle digit strings -and also personal name lists. Examples of typical inputs might be -\begin{quote} -Dial three three two six five four - -Dial nine zero four one oh nine - -Phone Woodland - -Call Steve Young -\end{quote} - -\HTK\ provides a grammar definition language for -specifying simple task grammars\index{task grammar} such as this. It consists -of a set of variable definitions followed by a regular -expression describing the words to recognise. For the -voice dialling application, a suitable grammar might be -\begin{verbatim} - $digit = ONE | TWO | THREE | FOUR | FIVE | - SIX | SEVEN | EIGHT | NINE | OH | ZERO; - $name = [ JOOP ] JANSEN | - [ JULIAN ] ODELL | - [ DAVE ] OLLASON | - [ PHIL ] WOODLAND | - [ STEVE ] YOUNG; - ( SENT-START ( DIAL <$digit> | (PHONE|CALL) $name) SENT-END ) -\end{verbatim} -where the vertical bars denote alternatives, the square brackets denote -optional items and the angle braces denote one or more repetitions. The -complete grammar can be depicted as a network as shown in -Fig.~\href{f:dialnet}. - -\centrefig{dialnet}{110}{Grammar for Voice Dialling} - -\sidefig{step1}{25}{Step 1}{-4}{ -The above high level representation of a task grammar -is provided for user convenience. The \HTK\ recogniser actually -requires a -word network to be defined using a low level notation -called \HTK\ Standard Lattice Format\index{standard lattice format} (SLF) -\index{SLF} -in which each word instance and each word-to-word transition -is listed explicitly. This word network can be created -automatically from the grammar above using -the \htool{HParse} -tool, thus assuming that the file \texttt{gram} contains the -above grammar, executing -}\index{hparse@\htool{HParse}} -\begin{verbatim} - HParse gram wdnet -\end{verbatim} -will create an equivalent word network in -the file \texttt{wdnet} (see Fig~\href{f:step1}). - - -\subsection{Step 2 - the Dictionary} - -The first step in building a dictionary is to create a sorted list of the -required words. -In the telephone dialling task pursued here, it is quite easy to create a list -of required words by hand. However, if the task were more complex, it would be -necessary to build a word list from the sample sentences present in the training -data. Furthermore, to build robust acoustic models, it is necessary to train -them on a large set of sentences containing many words and preferably -phonetically balanced. For these reasons, the training data will consist of -English sentences unrelated to the phone recognition task. Below, a short -example of creating a word list from sentence prompts will be given. As noted -above the training sentences given here are extracted from some prompts used -with the TIMIT database\index{TIMIT database} and for convenience reasons they -have been renumbered. For example, the first few items might be as follows -\vspace{1cm} -\begin{verbatim} - S0001 ONE VALIDATED ACTS OF SCHOOL DISTRICTS - S0002 TWO OTHER CASES ALSO WERE UNDER ADVISEMENT - S0003 BOTH FIGURES WOULD GO HIGHER IN LATER YEARS - S0004 THIS IS NOT A PROGRAM OF SOCIALIZED MEDICINE - etc -\end{verbatim} -The desired training word list\index{word list} (\texttt{wlist}) could then be -extracted automatically from these. Before using HTK, one would need to edit -the text into a suitable format. For example, it would be necessary to change -all white space to newlines and then to use the UNIX utilities \texttt{sort} -and \texttt{uniq} to sort the words into a unique alphabetically ordered set, -with one word per line. The script \texttt{prompts2wlist} from the -\texttt{HTKTutorial} directory can be used for this purpose. - -The dictionary\index{dictionary!construction}\index{dictionary!format} -itself can be built from a standard source -using \htool{HDMan}\index{hdman@\htool{HDMan}}. -For this example, the British English BEEP pronouncing dictionary will be -used\footnote{Available by anonymous ftp from -\texttt{svr-ftp.eng.cam.ac.uk/pub/comp.speech/dictionaries/beep.tar.gz}. -Note that items beginning with unmatched quotes, found at the start -of the dictionary, should be removed.}. -Its phone set will be adopted without modification except that -the stress marks will be removed and a short-pause (\texttt{sp}) will -be added to the end of every pronunciation. If the dictionary contains any -silence markers then the \texttt{MP} command will merge the \texttt{sil} and -\texttt{sp} phones into a single \texttt{sil}. These changes can be applied -using \htool{HDMan} and an edit script (stored in \texttt{global.ded}) -containing the three commands -\begin{verbatim} - AS sp - RS cmu - MP sil sil sp -\end{verbatim} -where \texttt{cmu} refers to a style of stress marking\index{stress marking} in which -the lexical stress level is -marked by a single digit appended to the phone name (e.g.\ \texttt{eh2} means -the phone \texttt{eh} with level 2 stress). - -\centrefig{step2}{100}{Step 2} - -\noindent -The command -\begin{verbatim} - HDMan -m -w wlist -n monophones1 -l dlog dict beep names -\end{verbatim} -will create a new dictionary called \texttt{dict} by searching the source -dictionaries \texttt{beep} and \texttt{names} to find pronunciations for each -word in \texttt{wlist} (see Fig~\href{f:step2}). Here, the \texttt{wlist} in -question needs only to be a sorted list of the words appearing in the task -grammar given above. - -Note that \texttt{names} is a manually constructed file containing -pronunciations for the proper names used in the task grammar. The option -\texttt{-l} instructs \htool{HDMan} to output a log file \texttt{dlog} which -contains various statistics about the constructed dictionary. In particular, -it indicates if there are words missing. \htool{HDMan} can also output a list -of the phones used, here called \texttt{monophones1}. Once training and test -data has been recorded, an HMM will be estimated for each of these phones. - -The general format of each dictionary entry\index{dictionary!entry} is -\begin{verbatim} - WORD [outsym] p1 p2 p3 .... -\end{verbatim} -which means that the word \texttt{WORD} is pronounced as the sequence of phones -\texttt{p1 p2 p3 ...}. The string in square brackets specifies the string to -output when that word is recognised. If it is omitted then the word itself is -output. If it is included but empty, then nothing is output. - -To see what the dictionary is like, here are a few entries. -\begin{verbatim} - A ah sp - A ax sp - A ey sp - CALL k ao l sp - DIAL d ay ax l sp - EIGHT ey t sp - PHONE f ow n sp - SENT-END [] sil - SENT-START [] sil - SEVEN s eh v n sp - TO t ax sp - TO t uw sp - ZERO z ia r ow sp -\end{verbatim} -Notice that function words such as \texttt{A} and \texttt{TO} -have multiple pronunciations. -The entries for \texttt{SENT-START} and \texttt{SENT-END} have a silence -model \texttt{sil} as their pronunciations and null output symbols. - -\subsection{Step 3 - Recording the Data} - -The\index{recording speech} training and test data will be recorded using the -\HTK\ tool \htool{HSLab}\index{hslab@\htool{HSLab}}. This is a combined -waveform recording and labelling tool. In this example \htool{HSLab} will be -used just for recording, as labels already exist. However, if you do not have -pre-existing training sentences (such as those from the TIMIT database) you can -create them either from pre-existing text (as described above) or by labelling -your training utterances using \htool{HSLab}. \htool{HSLab} is invoked by typing -\begin{verbatim} - HSLab noname -\end{verbatim} -This will cause a window to appear with a waveform display area in the upper -half and a row of buttons, including a record button in the lower half. When -the name of a normal file is given as argument, \htool{HSLab} displays its -contents. Here, the special file name \texttt{noname} indicates that new data -is to be recorded. \htool{HSLab} makes no special provision for prompting the -user. However, each time the record button is pressed, it writes the -subsequent recording alternately to a file called \verb|noname_0.| and to a -file called \verb|noname_1.|. Thus, it is simple to write a shell script -which for each successive line of a prompt file, outputs the prompt, waits for -either \verb|noname_0.| or \verb|noname_1.| to appear, and then renames -the file to the name prepending the prompt (see Fig.~\href{f:step3}). -\index{extensions!wav@\texttt{wav}} - -While the prompts for training sentences already were provided for above, the -prompts for test sentences need to be generated before recording them. -The tool\index{prompt script!generationof}\index{hsgen@\htool{HSGen}} -\htool{HSGen} can be used to do this by randomly traversing a word network and -outputting each word encountered. For example, typing -\begin{verbatim} - HSGen -l -n 200 wdnet dict > testprompts -\end{verbatim} -would generate 200 numbered test utterances, the first few of which would look something like: -\begin{verbatim} - 1. PHONE YOUNG - 2. DIAL OH SIX SEVEN SEVEN OH ZERO - 3. DIAL SEVEN NINE OH OH EIGHT SEVEN NINE NINE - 4. DIAL SIX NINE SIX TWO NINE FOUR ZERO NINE EIGHT - 5. CALL JULIAN ODELL - ... etc -\end{verbatim} -These can be piped to construct the prompt file \texttt{testprompts} for -the required test data. - -\subsection{Step 4 - Creating the Transcription Files} - -\sidefig{step3}{50}{Step 3}{-4}{} -To train a set of HMMs, every file of training data must have an associated -phone level transcription. Since there is no hand labelled data to bootstrap a -set of models, a flat-start scheme will be used instead. To do this, two sets -of phone transcriptions will be needed. The set used initially will have no -short-pause (\texttt{sp}) models between words. Then once reasonable phone -models have been generated, an \texttt{sp} model will be inserted between words -to take care of any pauses introduced by the speaker.\index{flat start} - -The starting point for both sets of phone transcription is an -orthographic\index{transcription!orthographic} transcription in \HTK\ label -format. This can be created fairly easily using a text editor or a scripting -language. -An example of this is found in the RM Demo at point 0.4. Alternatively, the -script \texttt{prompts2mlf} has been provided in the \texttt{HTKTutorial} -directory. -The effect should be to convert the prompt utterances exampled above into the -following form: -\begin{verbatim} - #!MLF!# - "*/S0001.lab" - ONE - VALIDATED - ACTS - OF - SCHOOL - DISTRICTS - . - "*/S0002.lab" - TWO - OTHER - CASES - ALSO - WERE - UNDER - ADVISEMENT - . - "*/S0003.lab" - BOTH - FIGURES - (etc.) -\end{verbatim} -As can be seen, the prompt labels need to be converted into path names, each -word should be written on a single line and each utterance should be terminated -by a single period on its own. The first line of the file just identifies the -file as a \textit{Master Label File} (MLF). This is a single file containing a -complete set of transcriptions. \HTK\ allows each individual transcription to -be stored in its own file but it is more efficient to use an MLF. -\index{master label files}\index{MLF} - -The form of the path name used in the MLF deserves some explanation since it is -really a \textit{pattern} and not a name.\index{master label files!patterns} -When \HTK\ processes speech files, it expects to find a transcription (or -{\it label file}) with the same name but a different extension. Thus, if the file -\texttt{/root/sjy/data/S0001.wav} was being processed, \HTK\ would look for a -label file called \texttt{/root/sjy/data/S0001.lab}. When MLF files are used, -\HTK\ scans the file for a pattern which matches the required label file name. -However, an asterix will match any character string and hence the pattern used -in the example is in effect path independent. It therefore allows the same -transcriptions to be used with different versions of the speech data to be -stored in different locations. - -Once the word level MLF has been created, phone level MLFs can be generated -using the label editor \htool{HLEd}\index{hled@\htool{HLEd}}. For example, -assuming that the above word level MLF is stored in the file -\texttt{words.mlf}, the command -\begin{verbatim} - HLEd -l '*' -d dict -i phones0.mlf mkphones0.led words.mlf -\end{verbatim} -will generate a phone level transcription of the following form -where the \texttt{-l} option is needed to generate the path '\verb+*+' in the -output patterns. -\begin{verbatim} - #!MLF!# - "*/S0001.lab" - sil - w - ah - n - v - ae - l - ih - d - .. etc -\end{verbatim} -This process is illustrated in Fig.~\href{f:step4}. - -The \htool{HLEd} edit script \texttt{mkphones0.led} -contains the following commands -\begin{verbatim} - EX - IS sil sil - DE sp -\end{verbatim} -The expand \texttt{EX} command replaces each word in \texttt{words.mlf} -by the corresponding pronunciation in the dictionary file \texttt{dict}. -The \texttt{IS} -command inserts a silence model \texttt{sil} at the start and end of -every utterance. Finally, the delete \texttt{DE} command deletes all -short-pause \texttt{sp} labels, which are not wanted in the transcription -labels at this point. - -\centrefig{step4}{60}{Step 4} - -\subsection{Step 5 - Coding the Data} - -The final stage of data preparation is to parameterise the raw speech -waveforms into sequences of feature vectors. \HTK\ support both -FFT-based\index{analysis!FFT-based} -and LPC-based\index{analysis!LPC-based} analysis. -Here Mel Frequency Cepstral Coefficients (MFCCs)\index{MFCC coefficients}, -which are derived from FFT-based log spectra, will be used. - -Coding can be performed using the tool \htool{HCopy}\index{hcopy@\htool{HCopy}} -configured to\index{coding} -automatically convert its input into MFCC vectors. To do this, a configuration -file (\texttt{config}) is needed which specifies all of the conversion -parameters\index{parameterisation}. -Reasonable settings for these are as follows -\begin{verbatim} - # Coding parameters - TARGETKIND = MFCC_0 - TARGETRATE = 100000.0 - SAVECOMPRESSED = T - SAVEWITHCRC = T - WINDOWSIZE = 250000.0 - USEHAMMING = T - PREEMCOEF = 0.97 - NUMCHANS = 26 - CEPLIFTER = 22 - NUMCEPS = 12 - ENORMALISE = F -\end{verbatim} -Some of these settings are in fact the default setting, but they -are given explicitly here for completeness. In brief, they specify -that the target parameters are to be MFCC using $C_0$ as the energy -component, the frame period is 10msec (\HTK\ uses units of 100ns), -the output should be saved in compressed format, and a crc checksum should -be added. The FFT should use a Hamming window and the signal should -have first order preemphasis applied using a coefficient of 0.97. -The filterbank should have 26 channels and 12 MFCC coefficients should -be output. -The variable \texttt{ENORMALISE} is by default true and performs energy -normalisation on recorded audio files. It cannot be used with live audio and -since the target system is for live audio, this variable should be set to -false. - -Note that explicitly creating coded data files is not necessary, as coding can -be done "on-the-fly" from the original waveform files by specifying the -appropriate configuration file (as above) with the relevant HTK tools. However, -creating these files reduces the amount of preprocessing required during -training, which itself can be a time-consuming process. - -To run \htool{HCopy}, a list of -each source file and its corresponding output file is needed. For example, -the first few lines might look like\index{extensions!mfc@\texttt{mfc}} -\begin{verbatim} - /root/sjy/waves/S0001.wav /root/sjy/train/S0001.mfc - /root/sjy/waves/S0002.wav /root/sjy/train/S0002.mfc - /root/sjy/waves/S0003.wav /root/sjy/train/S0003.mfc - /root/sjy/waves/S0004.wav /root/sjy/train/S0004.mfc - (etc.) -\end{verbatim} -Files containing lists of files are referred to as script files\footnote{ -Not to be confused with files containing \textit{edit} scripts. -} -and\index{extensions!scp@\texttt{scp}} -by convention are given the extension \texttt{scp} (although -\HTK\ does not demand this). Script files are specified using the standard -\texttt{-S} option and their contents are read simply as extensions -to the command line. Thus, they avoid the need for command lines with -several thousand arguments\footnote{ -Most UNIX shells, especially the C shell, only allow a limited and -quite small number of arguments.}. -\index{command line!arguments}\index{command line!script files} - -\centrefig{step5}{100}{Step 5} - -\noindent -Assuming that the above script is stored in the file \texttt{codetr.scp}, -the training data would be coded by executing -\begin{verbatim} - HCopy -T 1 -C config -S codetr.scp -\end{verbatim} -This is illustrated in Fig.~\href{f:step5}. A similar procedure is -used to code the test data (using \verb|TARGETKIND = MFCC_0_D_A| in -config) after which all of the pieces are in place to start training -the HMMs. - - -\mysect{Creating Monophone HMMs}{egcreatmono} - -In this section, the creation of a well-trained set of single-Gaussian -monophone HMMs will be described. The starting point will be -a set of identical monophone HMMs in which every mean and variance is -identical. These are then retrained, short-pause models are -added and the silence model is extended slightly. The monophones -are then retrained. - -Some of the dictionary entries have multiple pronunciations. However, -when \htool{HLEd} was used to expand the word level MLF to create the -phone level MLFs, it arbitrarily selected the first pronunciation it found. -Once reasonable monophone HMMs have been created, the recogniser tool -\htool{HVite} can be used to perform a \textit{forced alignment} -of\index{forced alignment} -the training data. By this means, a new phone level MLF is created in which -the choice of pronunciations depends on the acoustic evidence. This new -MLF can be used to perform a final re-estimation of the monophone HMMs. -\index{monophone HMM!construction of} - -\subsection{Step 6 - Creating Flat Start Monophones} - -The first step in HMM training is to define a prototype model. The -parameters of this model are not important, its purpose is to -define the model topology. For phone-based systems, a good -topology to use is 3-state left-right with no skips such as the following -\begin{verbatim} - ~o 39 - ~h "proto" - - 5 - 2 - 39 - 0.0 0.0 0.0 ... - 39 - 1.0 1.0 1.0 ... - 3 - 39 - 0.0 0.0 0.0 ... - 39 - 1.0 1.0 1.0 ... - 4 - 39 - 0.0 0.0 0.0 ... - 39 - 1.0 1.0 1.0 ... - 5 - 0.0 1.0 0.0 0.0 0.0 - 0.0 0.6 0.4 0.0 0.0 - 0.0 0.0 0.6 0.4 0.0 - 0.0 0.0 0.0 0.7 0.3 - 0.0 0.0 0.0 0.0 0.0 - -\end{verbatim} -where each ellipsed vector is of length 39. This number, 39, is computed from -the length of the parameterised static vector (\texttt{MFCC\_0} = 13) plus -the delta coefficients (+13) plus the acceleration coefficients (+13). - -The \HTK\ tool \htool{HCompV}\index{hcompv@\htool{HCompV}} will scan a set of data files, compute -the global mean and variance and set all of the Gaussians in a given HMM -to have the same mean and variance.\index{flat start} -Hence, assuming that a list of all the training files is stored in -\texttt{train.scp}, the command -\begin{verbatim} - HCompV -C config -f 0.01 -m -S train.scp -M hmm0 proto -\end{verbatim} -will create a new version of \texttt{proto} in the directory \texttt{hmm0} -in which the zero means and unit variances above have been replaced -by the global speech means and variances. -Note that the prototype HMM defines the parameter kind as \texttt{MFCC\_0\_D\_A} (Note: 'zero' not 'oh'). -This means that delta and acceleration coefficients are to be computed and -appended to the static MFCC coefficients computed and stored during the -coding process described above. To ensure that these are computed during loading, -the configuration file \texttt{config} should be modified -to change the target kind, i.e.\ the configuration file entry for -\texttt{TARGETKIND} should be changed to -\begin{verbatim} - TARGETKIND = MFCC_0_D_A -\end{verbatim} -\htool{HCompV} has a number of options specified for it. The -\texttt{-f} option causes a variance floor -macro\index{variance floor macros} (called \texttt{vFloors}) to be generated which -is equal to 0.01 times the global variance. This is a vector -of values which will be used to set a floor on the variances estimated -in the subsequent steps. The \texttt{-m} option asks for means to be computed -as well as variances. Given this -new prototype model stored in the directory -\texttt{hmm0}, a \textit{Master Macro File}\index{master macro files} -(MMF) called \texttt{hmmdefs} \index{MMF} -containing a copy for each of the required monophone HMMs is constructed -by manually copying the prototype and relabelling it for each required -monophone (including ``sil''). -The format of an MMF is similar to that -of an MLF and it serves a similar purpose in that it avoids having -a large number of individual HMM definition files\index{HMM!definition files} -(see Fig.~\href{f:MMFeg}). - -\centrefig{MMFeg}{85}{Form of Master Macro Files} - -The flat start monophones stored in the directory \texttt{hmm0} are -re-estimated using the embedded re-estimation\index{embedded re-estimation} -tool \htool{HERest}\index{herest@\htool{HERest}} -invoked as follows -\begin{verbatim} - HERest -C config -I phones0.mlf -t 250.0 150.0 1000.0 \ - -S train.scp -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monophones0 -\end{verbatim} -The effect of this is to load all the models in \texttt{hmm0} which are -listed in -the model list \texttt{monophones0} (\texttt{monophones1} less the short -pause (\texttt{sp}) model). These are then re-estimated them using the data -listed in \texttt{train.scp} and the new model set is stored in the -directory \texttt{hmm1}. -Most of the files used in this invocation of \htool{HERest} have -already been described. The exception is the file \texttt{macros}. -This should contain a so-called \textit{global options} macro and -the variance floor macro \texttt{vFloors} generated earlier. The global options macro -simply defines the HMM parameter kind and the vector size i.e. -\begin{verbatim} - ~o 39 -\end{verbatim} -See Fig.~\href{f:MMFeg}. This can be combined with \texttt{vFloors} into a text file -called \texttt{macros}. - -\centrefig{step6}{85}{Step 6} - -The \texttt{-t} option sets the pruning\index{pruning} thresholds to be used during -training. Pruning limits the range of state alignments that the -forward-backward algorithm includes in its summation and it -can reduce the amount of computation required by an -order of magnitude. For most training files, a very tight pruning threshold -can be set, however, some training files will provide poorer acoustic -matching and in consequence a wider pruning beam is needed. \htool{HERest} -deals with this by having an auto-incrementing pruning threshold. In the -above example, pruning is normally 250.0. If re-estimation fails on any -particular file, the threshold is increased by 150.0 and the file is -reprocessed. This is repeated until either the file is successfully -processed or the pruning limit of 1000.0 is exceeded. At this point it -is safe to assume that there -is a serious problem with the training file and hence the fault should be fixed -(typically it will be an incorrect transcription) or the training file should be discarded. -The process leading to the initial set of monophones in the directory -\texttt{hmm0} is illustrated in Fig.~\href{f:step6}. - -Each time \htool{HERest} is run it performs a single re-estimation. Each new -HMM set is stored in a new directory. Execution of \htool{HERest} should be -repeated twice more, changing the name of the input and output directories (set -with the options \texttt{-H} and \texttt{-M}) each time, until the directory -\texttt{hmm3} contains the final set of initialised monophone HMMs. - -\subsection{Step 7 - Fixing the Silence Models} - -\sidefig{egsils}{55}{Silence Models}{-4}{ -The previous step has generated a 3 state left-to-right HMM for each -phone and also a HMM for the silence model\index{silence model} \texttt{sil}. The -next step is to add extra transitions from states 2 to 4 and from -states 4 to 2\index{transitions!adding them} -in the silence model. The idea here is to make the model more robust -by allowing individual states to absorb the various -impulsive noises in the training data. The backward skip allows this to happen -without committing the model to transit to the following word. - -Also, at this point, a 1 state -short pause\index{short pause} \texttt{sp} model should be created. -This should be a so-called \textit{tee-model}\index{tee-models} -which has a direct transition from entry to exit node. -This \texttt{sp} has its emitting state tied to the centre state of the silence model. -The required topology of the two silence models is shown in Fig.~\href{f:egsils}. -} - -These silence models can be created in two stages -\begin{itemize} -\item -Use a text editor on the file \texttt{hmm3/hmmdefs} to copy the centre state of -the \texttt{sil} model to -make a new \texttt{sp} model and store the resulting MMF \texttt{hmmdefs}, which -includes the new \texttt{sp} model, in the new directory \texttt{hmm4}. - -\item Run the HMM editor \htool{HHEd}\index{hhed@\htool{HHEd}} to add -the extra transitions required -and tie the \texttt{sp} state to the centre \texttt{sil} state -\end{itemize} - -\htool{HHEd} works in a similar way to \htool{HLEd}. It applies a set of commands in -a script to modify a set of HMMs. In this case, it is executed as follows -\begin{verbatim} - HHEd -H hmm4/macros -H hmm4/hmmdefs -M hmm5 sil.hed monophones1 -\end{verbatim} -where \texttt{sil.hed} contains the following commands -\begin{verbatim} - AT 2 4 0.2 {sil.transP} - AT 4 2 0.2 {sil.transP} - AT 1 3 0.3 {sp.transP} - TI silst {sil.state[3],sp.state[2]} -\end{verbatim} -The \texttt{AT}\index{at@\texttt{AT} command} commands add transitions to the -given transition matrices and the final \texttt{TI}\index{ti@\texttt{TI} -command} command creates a tied-state called \texttt{silst}. The parameters of -this tied-state are stored in the \texttt{hmmdefs} file and within each silence -model, the original state parameters are replaced by the name of this -macro\index{macros}. Macros are described in more detail below. For now it is -sufficient to regard them simply as the mechanism by which -\HTK\ implements parameter sharing. -Note that the phone list used here has been changed, because the original list -\texttt{monophones0} has been extended by the new \texttt{sp} model. The new -file is called \texttt{monophones1} and has been used in the above \htool{HHEd} -command. - -\centrefig{step7}{110}{Step 7} - -Finally, another two passes of \htool{HERest} are applied using the phone -transcriptions with \texttt{sp} models between words. This leaves the -set of monophone HMMs created so far in the directory \texttt{hmm7}. -This step is illustrated in Fig.~\href{f:step7} - -\subsection{Step 8 - Realigning the Training Data} - -As noted earlier, the dictionary contains multiple pronunciations for -some words, particularly function words. The phone models created so -far can be used to \textit{realign} the training data and create new -transcriptions. This can be done with a single invocation of the\index{realignment} -\HTK\ recognition tool \htool{HVite}\index{hvite@\htool{HVite}}, viz -\begin{verbatim} - HVite -l '*' -o SWT -b silence -C config -a -H hmm7/macros \ - -H hmm7/hmmdefs -i aligned.mlf -m -t 250.0 -y lab \ - -I words.mlf -S train.scp dict monophones1 -\end{verbatim} -This command uses the HMMs stored in \texttt{hmm7} to transform the input -word level transcription \texttt{words.mlf} to the new phone level transcription -\texttt{aligned.mlf} using the pronunciations stored in the dictionary -\texttt{dict} (see Fig~\href{f:step8}). The key difference between this -operation and the original word-to-phone mapping performed by \htool{HLEd} -in step 4 is that the recogniser considers all pronunciations for each -word and outputs the pronunciation that best matches the acoustic data. -\index{phone alignment}\index{phone mapping} - -In the above, the \texttt{-b} option is used to insert a silence model\index{silence model} -at the start and end of each utterance. The name \texttt{silence} is used -on the assumption that the dictionary contains an entry -\begin{verbatim} - silence sil -\end{verbatim} -Note that the dictionary should be sorted firstly by case (upper case first) and secondly -alphabetically. The \texttt{-t} option sets a pruning level of 250.0 and the \texttt{-o} -option is used to suppress the printing of scores, word names and time -boundaries in the output MLF. - -\centrefig{step8}{85}{Step 8} - -Once the new phone alignments have been created, another 2 passes -of \htool{HERest} can be applied to reestimate the HMM set parameters -again. Assuming that this is done, the final monophone HMM set will -be stored in directory \texttt{hmm9}. - -When aligning the data, it is sometimes clear that there is significant -amounts of silence at the beginning and end of some utterances (to spot this the -time-stamp information would need to be output during the alignment -so the option {\tt -o SW} would need to be used). Rather than explicitly -extracting the portion of the utterance with the appropriate amount of silence at the start and end, the script file specified using the {\tt -S} option can -be used for this purpose. Suppose that \texttt{train.scp} contains the -following lines -\begin{verbatim} -/root/sjy/data/S0001.mfc -/root/sjy/data/S0002.mfc -/root/sjy/data/S0003.mfc -... -\end{verbatim} -To specify a particular segmentation from this a new scp-file would be -generated containing -\begin{verbatim} -S0001.mfc=/root/sjy/data/S0001.mfc[20,297] -S0002.mfc=/root/sjy/data/S0002.mfc[25,496] -S0003.mfc=/root/sjy/data/S0003.mfc[22,308] -... -\end{verbatim} -Where for the first utterance only the segment from the 21st frame (the first frame is labelled as frame 0) to the 298th frame inclusive of the original MFCC file should be used. Note with this form of scp file the label file would also have to be modified to (here the word level MLF is considered, but both word and phone-level MLFs would need to be changed) -\begin{verbatim} - #!MLF!# - "S0001.lab" - ONE - VALIDATED - ACTS - OF - SCHOOL - DISTRICTS - . - "S0002.lab" - TWO - .... -\end{verbatim} -This is a general process for specifying segmentations of the training -and test data without explicitly extracting the data (and thus requiring a new -MFCC file to be stored). For tasks where data must be segmented as part of the -recognition task, for example Broadcast News transcription, this form of -approach is very useful. - -Note for the rest of this tutorial it is assumed that this segmentation -process was {\em not} necessary. - -\mysect{Creating Tied-State Triphones}{egcreattri} - -Given a set of monophone HMMs, the final stage of model building is to create -context-dependent triphone\index{HMM!triphones} HMMs. This is done in -two steps. Firstly, the -monophone transcriptions are converted to triphone transcriptions and a set -of triphone models are created by copying the monophones and re-estimating. -Secondly, similar acoustic states of these triphones are tied to ensure that -all state distributions can be robustly estimated. - -\subsection{Step 9 - Making Triphones from Monophones} - -Context-dependent triphones can be made by simply -cloning\index{HMM!cloning}\index{cloning} monophones and then -re-estimating using triphone transcriptions. The latter should be created -first using \htool{HLEd}\index{hled@\htool{HLEd}} because -a side-effect is to generate a list of all -the triphones for which there is at least one example in the training data. -That is, executing -\begin{verbatim} - HLEd -n triphones1 -l '*' -i wintri.mlf mktri.led aligned.mlf -\end{verbatim} -will convert the monophone transcriptions in \texttt{aligned.mlf} to -an equivalent set of triphone transcriptions in \texttt{wintri.mlf}. -At the same time, a list of triphones is written to the file \texttt{triphones1}. -The edit script \texttt{mktri.led} contains the commands -\begin{verbatim} - WB sp - WB sil - TC -\end{verbatim} -The two \texttt{WB}\index{wb@\texttt{WB} command} commands define \texttt{sp} and \texttt{sil} -as \textit{word boundary symbols}. These then block the addition of -context in the \texttt{TI} command, seen in the following script, which converts all phones -(except word boundary symbols) to triphones -\index{triphones!word internal}\index{triphones!from monophones}\index{triphones!by cloning}. -For example, -\begin{verbatim} - sil th ih s sp m ae n sp ... -\end{verbatim} -becomes -\begin{verbatim} - sil th+ih th-ih+s ih-s sp m+ae m-ae+n ae-n sp ... -\end{verbatim} -This style of triphone transcription is referred to as \textit{word internal}. -\index{word internal} -Note that some biphones will also be generated as contexts at word boundaries -will sometimes only include two phones. - -The cloning of models can be done efficiently using the HMM editor \htool{HHEd}: -\begin{verbatim} - HHEd -B -H hmm9/macros -H hmm9/hmmdefs -M hmm10 - mktri.hed monophones1 -\end{verbatim} -where the edit script \texttt{mktri.hed} -contains a clone command \texttt{CL} followed by \texttt{TI} commands to tie all of -the transition matrices in each triphone\index{triphones!notation} set, that is: -\begin{verbatim} - CL triphones1 - TI T_ah {(*-ah+*,ah+*,*-ah).transP} - TI T_ax {(*-ax+*,ax+*,*-ax).transP} - TI T_ey {(*-ey+*,ey+*,*-ey).transP} - TI T_b {(*-b+*,b+*,*-b).transP} - TI T_ay {(*-ay+*,ay+*,*-ay).transP} - ... -\end{verbatim} -The file \texttt{mktri.hed} can be generated using the {\em Perl} script -\texttt{maketrihed} included in the \texttt{HTKTutorial} directory. -When running the \htool{HHEd}\index{hled@\htool{HHEd}} command you -will get warnings about trying to tie transition matrices for the sil -and sp models. Since neither model is context-dependent there aren't -actually any matrices to tie. - -The clone command \texttt{CL}\index{cl@\texttt{CL} command} takes as its -argument the name of the file containing the list of triphones (and -biphones)\index{cloning}\index{parameter tying}\index{item lists} generated -above. For each model of the form \texttt{a-b+c} in this list, it looks for -the monophone \texttt{b} and makes a copy of it.\index{tying!transition -matrices} Each \texttt{TI} command takes as its argument the name of a macro -and a list of HMM components. The latter uses a notation which attempts to -mimic the hierarchical structure of the HMM parameter set in which the -transition matrix \texttt{transP} can be regarded as a sub-component of each -HMM. The list of items within brackets are patterns designed to match the set -of triphones, right biphones and left biphones for each phone. - -\centrefig{egtranstie}{80}{Tying Transition Matrices} - -Up to now macros and tying have only been mentioned in passing. Although a -full explanation must wait until chapter~\ref{c:HMMDefs}, a brief explanation -is warranted here. Tying means that one or more HMMs share the same set of -parameters. On the left side of Fig.~\href{f:egtranstie}, two HMM definitions -are shown. Each HMM has its own individual transition matrix. On the right -side, the effect of the first \texttt{TI} command in the edit script -\texttt{mktri.hed} is shown. The individual transition matrices have been -replaced by a reference to a \textit{macro} called \texttt{T\_ah} which -contains a matrix shared by both models. When reestimating tied parameters, -the data which would have been used for each of the original untied parameters -is pooled so that a much more reliable estimate can be obtained. - -Of course, tying could affect performance if performed indiscriminately. -Hence, it is important to only tie parameters which have little effect on -discrimination. This is the case here where the transition parameters do not -vary significantly with acoustic context but nevertheless need to be estimated -accurately. Some triphones will occur only once or twice and so very poor -estimates would be obtained if tying was not done. These problems of data -insufficiency will affect the output distributions too, but this will be dealt -with in the next step. - -Hitherto, all HMMs have been stored in text format and could be inspected like -any text file. Now however, the model files will be getting larger and space -and load/store times become an issue. For increased efficiency, -\HTK\ can store and load MMFs in binary\index{HMM!binary storage} -format. Setting the standard \texttt{-B} option causes this to happen. - -\sidefig{step9}{55}{Step 9}{-4}{ -Once the context-dependent models have been cloned, the new triphone set can be -re-estimated using \htool{HERest}. This is done as previously except that the -monophone model list is replaced by a triphone list and the triphone -transcriptions are used in place of the monophone transcriptions. - -For the final pass of \htool{HERest}, the \texttt{-s} option should be used to -generate a file of state occupation statistics called \texttt{stats}. In -combination with the means and variances, these enable likelihoods to be -calculated for clusters of states and are needed during the state-clustering -process \index{statistics!state occupation} described below. -Fig.~\href{f:step9} illustrates this step of the HMM construction -procedure. Re-estimation should be again done twice, so that the resultant -model sets will ultimately be saved in \texttt{hmm12}. -} -\begin{verbatim} - HERest -B -C config -I wintri.mlf -t 250.0 150.0 1000.0 -s stats \ - -S train.scp -H hmm11/macros -H hmm11/hmmdefs -M hmm12 triphones1 -\end{verbatim} - - -\subsection{Step 10 - Making Tied-State Triphones} - -The outcome of the previous stage is a set of triphone HMMs with all triphones -in a phone set sharing the same transition matrix. When estimating these -models, many of the variances in the output distributions -will have been floored since there will be\index{variance!flooring problems}\index{state tying} -\index{tying!states}\index{data insufficiency} -insufficient data associated with many of the states. The last step in -the model building process is to tie states within triphone sets -in order to share data and thus be able to make robust parameter estimates. - -In the previous step, the \texttt{TI} command was used to -explicitly tie all members of a set of transition matrices together. -However, -the choice of which states to tie requires a bit more subtlety since -the performance of the recogniser depends crucially on how accurate -the state output distributions capture the statistics of the speech data. - -\htool{HHEd} provides two mechanisms which allow states to be clustered -and\index{state clustering} -then each cluster tied. The first is data-driven and uses a similarity -measure between states. The second uses decision trees\index{decision trees} -and is based on asking questions about the left and right contexts of each -triphone. The decision tree attempts to find those contexts which make the largest -difference to the acoustics and which should therefore distinguish clusters. - -Decision tree state tying is performed by running \htool{HHEd} -in the normal way, i.e. -\begin{verbatim} - HHEd -B -H hmm12/macros -H hmm12/hmmdefs -M hmm13 \ - tree.hed triphones1 > log -\end{verbatim} -Notice that the output is saved in a log file. This is important since -some tuning of thresholds is usually needed. - -The edit script \texttt{tree.hed}, which contains the instructions regarding -which contexts to examine for possible clustering, can be rather long and -complex. A script for automatically generating this file, \texttt{mkclscript}, -is found in the RM Demo. A version of the \texttt{tree.hed} script, which can -be used with this tutorial, is included in the \texttt{HTKTutorial} directory. -Note that this script is only capable of creating the TB commands (decision -tree clustering of states). The questions (QS) still need defining by -the user. There is, however, an example list of questions which may be -suitable to some tasks (or at least useful as an example) supplied with the -RM demo (lib/quests.hed). The entire script appropriate for clustering -English phone models is too long to show here in the text, however, its main -components are given by the following fragments: - -\begin{verbatim} - - RO 100.0 stats - TR 0 - QS "L_Class-Stop" {p-*,b-*,t-*,d-*,k-*,g-*} - QS "R_Class-Stop" {*+p,*+b,*+t,*+d,*+k,*+g} - QS "L_Nasal" {m-*,n-*,ng-*} - QS "R_Nasal" {*+m,*+n,*+ng} - QS "L_Glide" {y-*,w-*} - QS "R_Glide" {*+y,*+w} - .... - QS "L_w" {w-*} - QS "R_w" {*+w} - QS "L_y" {y-*} - QS "R_y" {*+y} - QS "L_z" {z-*} - QS "R_z" {*+z} - - TR 2 - - TB 350.0 "aa_s2" {(aa, *-aa, *-aa+*, aa+*).state[2]} - TB 350.0 "ae_s2" {(ae, *-ae, *-ae+*, ae+*).state[2]} - TB 350.0 "ah_s2" {(ah, *-ah, *-ah+*, ah+*).state[2]} - TB 350.0 "uh_s2" {(uh, *-uh, *-uh+*, uh+*).state[2]} - .... - TB 350.0 "y_s4" {(y, *-y, *-y+*, y+*).state[4]} - TB 350.0 "z_s4" {(z, *-z, *-z+*, z+*).state[4]} - TB 350.0 "zh_s4" {(zh, *-zh, *-zh+*, zh+*).state[4]} - - TR 1 - - AU "fulllist" - CO "tiedlist" - - ST "trees" -\end{verbatim} -Firstly, the \texttt{RO}\index{ro@\texttt{RO} command} command is used to set -the outlier threshold\index{outlier threshold} to 100.0 and load the statistics -file\index{statistics file} generated at the end of the previous step. The -outlier threshold determines the minimum occupancy\index{minimum occupancy} of -any cluster and prevents a single outlier state forming a singleton cluster -just because it is acoustically very different to all the other states. The -\texttt{TR}\index{tr@\texttt{TR} command} command sets the trace level to zero -in preparation for loading in the questions. Each -\texttt{QS}\index{qs@\texttt{QS} command} command loads a single question and -each question is defined by a set of contexts. For example, the first -\texttt{QS} command defines a question called \texttt{L\_Class-Stop} which is -true if the left context is either of the stops \texttt{p}, -\texttt{b}, \texttt{t}, \texttt{d}, \texttt{k} or \texttt{g}. - -\sidefig{step10}{50}{Step 10}{-4}{} -Notice that for a triphone system, it is necessary to include questions -referring to both the right and left contexts of a phone. The questions should -progress from wide, general classifications (such as consonant, vowel, nasal, -diphthong, etc.) to specific instances of each phone. -Ideally, the full set of questions loaded using the \texttt{QS} command would -include every possible context which can influence the acoustic realisation of -a phone, and can include any linguistic or phonetic classification which may be -relevant. There is no harm in creating extra unnecessary questions, because -those which are determined to be irrelevant to the data will be ignored. - -The second \texttt{TR} command enables intermediate level progress reporting so -that each of the following \texttt{TB} commands\index{tb@\texttt{TB} command} -can\index{tree building} be monitored. Each of these \texttt{TB} commands -clusters one specific set of states. For example, the first \texttt{TB} -command applies to the first emitting state of all context-dependent models for -the phone \texttt{aa}. - -Each \texttt{TB} command works as follows. Firstly, each set of states defined -by the final argument is pooled to form a single cluster. Each question in the -question set loaded by the \texttt{QS} commands is used to split the pool into -two sets. The use of two sets rather than one, allows the log likelihood of -the training data to be increased and the question which maximises this -increase is selected for the first branch of the tree. The process is then -repeated until the increase in log likelihood achievable by any question at any -node is less than the threshold specified by the first argument (350.0 in this -case). - -Note that the values given in the \texttt{RO} and \texttt{TB} commands affect -the degree of tying and therefore the number of states output in the clustered -system. The values should be varied according to the amount of training data -available. -As a final step to the clustering, any pair of clusters which can be merged -\index{cluster merging} such that the decrease in log likelihood is below -the threshold is merged. On completion, the states in each cluster $i$ are -tied to form a single shared state with macro name \texttt{xxx\_i} where -\texttt{xxx} is the name given by the second argument of the \texttt{TB} -command. - -The set of triphones used so far only includes those needed to cover the -training data. The \texttt{AU} command takes as its argument a new list of -triphones expanded to include all those needed for recognition. This list can -be generated, for example, by using \htool{HDMan} on the entire dictionary (not -just the training dictionary), converting it to triphones using the command -\texttt{TC} and outputting a list of the distinct triphones to a file using the -option \texttt{-n} - -\begin{verbatim} - HDMan -b sp -n fulllist -g global.ded -l flog beep-tri beep -\end{verbatim} - -\noindent -The -b sp option specifies that the sp phone is used as a word boundary, and so -is excluded from triphones. The effect of the \texttt{AU} command is to use the -decision trees to synthesise all of the new previously unseen triphones in the new -list. -\index{au@\texttt{AU} command} - -Once all state-tying has been completed and new models synthesised, -some models may share exactly -the same 3 states and transition matrices and are thus identical. -The \texttt{CO} command\index{co@\texttt{CO} command}\index{model compaction} is used -to compact the model set by finding all identical models and tying them -together\footnote{ -Note that if the transition matrices had not been tied, the \texttt{CO} -command would be ineffective since all models would be different by -virtue of their unique transition matrices.}, producing a new list of models -called \texttt{tiedlist}. - -One of the advantages of using decision tree clustering is that it allows -previously\index{unseen triphones} -unseen triphones to be synthesised. To do this, the trees must -be saved and this is done by the \texttt{ST} command\index{st@\texttt{ST} command}. -Later if new previously unseen triphones are required, for example in the -pronunciation of a new vocabulary item, the existing model set can be -reloaded into \htool{HHEd}, the trees reloaded using -the \texttt{LT} command\index{lt@\texttt{LT} command} -and then a new extended list of triphones created using -the \texttt{AU} command.\index{au@\texttt{AU} command} - -After \htool{HHEd} has completed, the effect of tying can be studied and -the thresholds adjusted if necessary. The log file will -include summary statistics which give the total number of physical -states remaining and the number of models after compacting. - -Finally, and for the last time, the models are re-estimated twice using -\htool{HERest}. Fig.~\href{f:step10} illustrates this last step in the HMM -build process. The trained models are then contained in the file -\texttt{hmm15/hmmdefs}. - -\mysect{Recogniser Evaluation}{egrectest} - -The recogniser is now complete and its performance can be evaluated. -The recognition network and dictionary have already been constructed, -and test data has been recorded. -Thus, all that is necessary is to run the recogniser and -then evaluate the results using the \HTK\ analysis tool \htool{HResults}\index{recogniser evaluation} - -\subsection{Step 11 - Recognising the Test Data} - -Assuming that \texttt{test.scp} holds a list of the coded test files, -then each test file will be recognised and its transcription output to -an MLF called \texttt{recout.mlf} by executing the following -\begin{verbatim} - HVite -H hmm15/macros -H hmm15/hmmdefs -S test.scp \ - -l '*' -i recout.mlf -w wdnet \ - -p 0.0 -s 5.0 dict tiedlist -\end{verbatim} -The options \texttt{-p} and \texttt{-s} set the \textit{word insertion penalty} -\index{word insertion penalty} -and the \textit{grammar scale factor}, \index{grammar scale factor} -respectively. The word insertion penalty -is a fixed value added to each token when it transits from the end of one word -to the start of the next. The grammar scale factor is the amount by which -the language model probability is scaled before being -added to each token as it transits from the end of one word -to the start of the next. These parameters can have a significant effect -on recognition performance and hence, some tuning on development test data -is well worthwhile. - -The dictionary contains monophone transcriptions whereas the supplied HMM list -contains word internal triphones. \htool{HVite}\index{hvite@\htool{HVite}} -will make the necessary -conversions when loading the word network \texttt{wdnet}. However, -if the HMM list contained both monophones and context-dependent phones -then \htool{HVite} would become confused. The required form of -word-internal network\index{networks!word-internal} -expansion can be forced by setting the configuration variable -\texttt{FORCECXTEXP}\index{forcecxtexp@\texttt{FORCECXTEXP}} to true and -\texttt{ALLOWXWRDEXP}\index{allowxwrdexp@\texttt{ALLOWXWRDEXP}} to -false (see chapter~\ref{c:netdict} for details).\index{accuracy figure} - -Assuming that the MLF \texttt{testref.mlf} contains word level transcriptions -for each test file\footnote{The \htool{HLEd} tool may have to be used to insert silences -at the start and end of each transcription or alternatively -\htool{HResults} can be used to ignore silences (or any other symbols) using -the \texttt{-e} option.}, the actual -performance can be determined by running -\htool{HResults} as follows -\begin{verbatim} - HResults -I testref.mlf tiedlist recout.mlf -\end{verbatim} -the result would be a print-out of the form -\begin{verbatim} - ====================== HTK Results Analysis ============== - Date: Sun Oct 22 16:14:45 1995 - Ref : testrefs.mlf - Rec : recout.mlf - ------------------------ Overall Results ----------------- - SENT: %Correct=98.50 [H=197, S=3, N=200] - WORD: %Corr=99.77, Acc=99.65 [H=853, D=1, S=1, I=1, N=855] - ========================================================== -\end{verbatim} -The line starting with \texttt{SENT:} indicates that of the 200 test utterances, -197 (98.50\%) were correctly recognised. The following line starting with \texttt{WORD:} -gives the word level statistics and indicates that of the 855 words in total, -853 (99.77\%) were recognised correctly. There was 1 deletion error (\texttt{D}), -1 substitution\index{recognition!results analysis} -error (\texttt{S}) and 1 insertion error (\texttt{I}). The accuracy figure (\texttt{Acc}) -of 99.65\% is lower than the percentage correct (\texttt{Cor}) because it takes -account of the insertion errors which the latter ignores. - -\centrefig{step11}{120}{Step 11} - -\mysect{Running the Recogniser Live}{egreclive} - -The recogniser can also be run with live input\index{live input}. -\index{recognition!direct audio input} -To do this it is only -necessary to set the configuration variables needed to convert the input -audio to the correct form of parameterisation. Specifically, the following -needs to be appended to the configuration file \texttt{config} to -create a new configuration file \texttt{config2} -\begin{verbatim} - # Waveform capture - SOURCERATE=625.0 - SOURCEKIND=HAUDIO - SOURCEFORMAT=HTK - ENORMALISE=F - USESILDET=T - MEASURESIL=F - OUTSILWARN=T -\end{verbatim} -These indicate that the source is direct audio with sample period 62.5 -$\mu$secs. The silence detector is enabled and a measurement of the background -speech/silence levels should be made at start-up. The final line makes sure -that a warning is printed when this silence measurement is being made. - -Once the configuration file has been set-up for direct audio input, -\htool{HVite} can be run as in the previous step except that no files need be -given as arguments - -\begin{verbatim} - HVite -H hmm15/macros -H hmm15/hmmdefs -C config2 \ - -w wdnet -p 0.0 -s 5.0 dict tiedlist -\end{verbatim} - -On start-up, \htool{HVite} will prompt the user to speak an -arbitrary sentence (approx. 4 secs) in order to measure the speech and -background silence levels. It will then repeatedly recognise and, if trace -level bit 1 is set, it will output each utterance to the terminal. A typical -session is as follows\index{recognition!output} - -\begin{verbatim} - Read 1648 physical / 4131 logical HMMs - Read lattice with 26 nodes / 52 arcs - Created network with 123 nodes / 151 links - - READY[1]> - Please speak sentence - measuring levels - Level measurement completed - DIAL FOUR SIX FOUR TWO FOUR OH - == [303 frames] -95.5773 [Ac=-28630.2 LM=-329.8] (Act=21.8) - - READY[2]> - DIAL ZERO EIGHT SIX TWO - == [228 frames] -99.3758 [Ac=-22402.2 LM=-255.5] (Act=21.8) - - READY[3]> - etc -\end{verbatim} -During loading, information will be printed out regarding the different -recogniser components. The physical models are the distinct HMMs used by -the system, while the logical models include all model names. The number -of logical models is higher than the number of physical models because many -logically distinct models have been determined to be physically identical -and have been merged during the previous model building steps. The lattice -information refers to the number of links and nodes in the recognition syntax. -The network information refers to actual recognition network built by -expanding the lattice using the current HMM set, dictionary and any context -expansion rules specified. -After each utterance, the numerical information gives the total number -of frames, the average log likelihood per frame, the total acoustic score, -the total language model score and the average number of models active. - -Note that if it was required to recognise a new name, then the -following two changes would be needed -\begin{enumerate} -\item the grammar would be altered to include the new name -\item a pronunciation for the new name would be added to the dictionary -\end{enumerate} -If the new name required triphones which did not exist, then they could be -created by loading the existing triphone set into -\htool{HHEd}\index{hhed@\htool{HHEd}}, loading the decision trees using the -\texttt{LT} command\index{lt@\texttt{LT} command} and then using the -\texttt{AU} command\index{au@\texttt{AU} command} to generate a new complete -triphone set.\index{triphones!synthesising unseen} - -\mysect{Adapting the HMMs}{exsysadapt} - -The previous sections have described the stages required to build a simple -voice dialling system. To simplify this process, speaker dependent models were -developed using training data from a single user. Consequently, recognition -accuracy for any other users would be poor. -To overcome this limitation, a set of speaker independent models could be -constructed, but this would require large amounts of training data from a -variety of speakers. An alternative is to adapt the current speaker dependent -models to the characteristics of a new speaker using a small amount of -training or adaptation data\index{adaptation}. In general, adaptation -techniques are applied to well trained speaker independent model sets to -enable them to better model the characteristics of particular speakers. - -\HTK\ supports both supervised adaptation\index{adaptation!supervised adaptation}, -where the true transcription of the data is known and unsupervised -adaptation\index{adaptation!unsupervised adaptation} where the -transcription is hypothesised. -In \HTK\ supervised adaptation is performed offline by -\htool{HERest} using maximum likelihood linear transformations -(for example MLLR, CMLLR)\index{adaptation!MLLR} -and/or maximum a-posteriori (MAP)\index{adaptation!MAP} techniques to -estimate -a series of transforms or a transformed model set, that reduces the mismatch -between the current model set and the adaptation data. Unsupervised -adaptation is provided by \htool{HVite}, using just linear transformations. - -The following sections describe offline supervised adaptation (using -MLLR) with the use of \htool{HERest}. - -\subsection{Step 12 - Preparation of the Adaptation Data} - -As in normal recogniser development, the first stage in adaptation involves -data preparation. Speech data from the new user is required for both adapting -the models and testing the adapted system. The data can be obtained in a -similar fashion to that taken to prepare the original test data. -Initially, prompt lists for the adaptation and test data will be generated using -\htool{HSGen}. For example, typing - -\begin{verbatim} - HSGen -l -n 20 wdnet dict > promptsAdapt - HSGen -l -n 20 wdnet dict > promptsTest -\end{verbatim} - -\noindent -would produce two prompt files for the adaptation and test data. The amount of -adaptation data required will normally be found empirically, but a performance -improvement should be observable after just 30 seconds of speech. -In this case, around 20 utterances should be sufficient. -\htool{HSLab} can be used to record the associated speech. - -Assuming that the script files \texttt{codeAdapt.scp} and \texttt{codeTest.scp} -list the source and output files for the adaptation and test data respectively -then both sets of speech can then be coded using the \htool{HCopy} commands given -below. - -\begin{verbatim} - HCopy -C config -S codeAdapt.scp - HCopy -C config -S codeTest.scp -\end{verbatim} - -\noindent -The final stage of preparation involves generating context dependent phone -transcriptions of the adaptation data and word level transcriptions of the test -data for use in adapting the models and evaluating their performance. -The transcriptions of the test data can be obtained using \texttt{prompts2mlf}. -To minimise the problem of multiple pronunciations the phone level -transcriptions of the adaptation data can be obtained by using \htool{HVite} -to perform a \textit{forced alignment} of the adaptation data. Assuming -that word level transcriptions are listed in \texttt{adaptWords.mlf}, then the -following command will place the phone transcriptions in -\texttt{adaptPhones.mlf}. - -\begin{verbatim} - HVite -l '*' -o SWT -b silence -C config -a -H hmm15/macros \ - -H hmm15/hmmdefs -i adaptPhones.mlf -m -t 250.0 \ - -I adaptWords.mlf -y lab -S adapt.scp dict tiedlist -\end{verbatim} - -\subsection{Step 13 - Generating the Transforms} -\index{adaptation!generating transforms} \htool{HERest} provides -support for a range of linear transformations and possible number of -transformations. Regression class trees\index{adaptation!regression -tree} can be used to dynamically specify the number of transformations -to be generated, or the number may be pre-determined using a set of -baseclasses. The \HTK\ tool \htool{HHEd} can be used to build a -regression class tree and store it along with a set of baseclasses. For -example, - -\begin{verbatim} - HHEd -B -H hmm15/macros -H hmm15/hmmdefs -M classes regtree.hed tiedlist -\end{verbatim} - -\noindent -creates a regression class tree using the models stored in -\texttt{hmm15} and stores the regression class tree and base classes -in the \texttt{classes} directory. The \htool{HHEd} edit script -\texttt{regtree.hed} contains the following commands - -\begin{verbatim} - LS "hmm15/stats" - RC 32 "rtree" -\end{verbatim} - - -\noindent -%% The \texttt{RN}\index{rn@\texttt{RN} command} command assigns an -%% identifier to the HMM set. -The \texttt{LS}\index{ls@\texttt{LS} command} command loads the state -occupation statistics file -\texttt{stats} generated by the last application of \htool{HERest} which -created the models in \texttt{hmm15}. -The \texttt{RC}\index{rc@\texttt{RC} command} command then attempts to build -a regression class tree with 32 terminal or leaf nodes using these statistics. -In addition a global transform is used as the default. This baseclass for this -must still be specified, using in the file ``global'' for example - -\begin{verbatim} - ~b ``global'' - * - MIXBASE - 1 - 1 {*.state[2-4].mix[1-12]} - -\end{verbatim} -This file should be be added to the classes directory. - -\htool{HERest} and \htool{HVite} can be used to perform static adaptation, where all the -adaptation data is processed in a single block. Note as with standard HMM -training \htool{HERest} will expect the list of model names. In contrast -\htool{HVite} only needs to list of words. \htool{HVite} can also be used -for incremental adaptation. In this tutorial the use of static -adaptation with \htool{HERest} will be described with MLLR as the form -of linear adaptation. - -The example use of \htool{HERest} for adaptation involves two -passes. On the first pass a global adaptation is performed. The second -pass then uses the global transformation as an {\em input} -transformation, to transform the model set, producing better -frame/state alignments which are then used to estimate a set of more -specific transforms, using a regression class tree. After estimating -the transforms, \htool{HERest} can output either the newly adapted -model set or, in the default setting, the transformations themselves -in either a transform model file (TMF)\index{adaptation!transform -model file} or as a set of distinct transformations . The latter -forms can be advantageous if storage is an issue since the TMFs (or -transforms) are -significantly smaller than MMFs and the computational overhead -incurred when transforming a model set using a transform is negligible. - -The two applications of \htool{HERest} below demonstrate a static two-pass -adaptation approach where the global and regression class transformations are -stored in the directory \texttt{xforms} with file extensions \texttt{mllr1} -for the global transform and \texttt{mllr2} for multiple regression class -system. -\begin{verbatim} - HERest -C config -C config.global -S adapt.scp -I adaptPhones.mlf \ - -H hmm15/macros -u a -H hmm15/hmmdefs -z -K xforms mllr1 -J classes \ - -h '*/%%%%%%_*.mfc' tiedlist - - HERest -a -C config -C config.rc -S adapt.scp -I adaptPhones.mlf \ - -H hmm15/macros -u a -H hmm15/hmmdefs -J xforms mllr1 -K xforms mllr2 \ - -J classes -h '*/%%%%%%_*.mfc' tiedlist -\end{verbatim} -where config.global has the form -\begin{verbatim} - HADAPT:TRANSKIND = MLLRMEAN - HADAPT:USEBIAS = TRUE - HADAPT:BASECLASS = global - HADAPT:ADAPTKIND = BASE - HADAPT:KEEPXFORMDISTINCT = TRUE - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} - config.rc has the form -\begin{verbatim} - HADAPT:TRANSKIND = MLLRMEAN - HADAPT:USEBIAS = TRUE - HADAPT:REGTREE = rtree.tree - HADAPT:ADAPTKIND = TREE - HADAPT:SPLITTHRESH = 1000.0 - HADAPT:KEEPXFORMDISTINCT = TRUE - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -The last two entries yield useful log information to do with which -transforms are being used and from where. \texttt{-h} is a mask that -is used to detect when the speaker changes and also is used to -determine the name of the speaker transform. File Masks may also be -separately specified specified using configuration variables: -\begin{verbatim} - INXFORMMASK - PAXFORMMASK -\end{verbatim} -The output transform mask is assumed to be specified using the {\tt -h} option -and by default the input and parent transforms are assumed to be the same. - -The transformed models can also be stored. This is specified by adding -\begin{verbatim} - HADAPT:SAVESPKRMODELS = TRUE -\end{verbatim} -To the configuration. Note this option should NOT be used with -transforms that modify the feature-space, such as {\tt MLLRCOV} and -{\tt CMLLR}. - -One important difference between the standard HMM macros and the -adaptation macros, is that for adaptation multiple directories may be -specified using the {\tt -J} option to search for the appropriate macro. -This is useful when using multiple {\em parent} transforms. The set of adaptation -transforms are: {\tt a, b, r, f, g, x, y, j}. The {\tt -J} (along with the -{\tt -K} and {\tt -E} for output and parent transforms respectively) flag -takes an optional argument that specifies the input transform transform -file extension. For the {\tt -J} flag this can {\em only} be specified on the -first time that a {\tt -J} flag is encountered in the command line. It -is strongly recommended that this option is used as it allows easy tracking -of transforms. - -\subsection{Step 14 - Evaluation of the Adapted System} - -To evaluate the performance of the adaptation, the test data previously recorded -is recognised using \htool{HVite}. Assuming that \texttt{testAdapt.scp} contains a list -of all of the coded test files, then \htool{HVite} can be invoked in much the same way -as before but with the additional \texttt{-J} argument used to load the model -transformation file and baseclasses. - -\begin{verbatim} - - HVite -H hmm15/macros -H hmm15/hmmdefs -S testAdapt.scp -l '*' \ - -J xforms mllr2 -h '*/%%%%%%_*.mfc' -k -i recoutAdapt.mlf -w wdnet \ - -J classes -C config -p 0.0 -s 5.0 dict tiedlist - -\end{verbatim} - -\noindent -The results of the adapted model set can then be observed using \htool{HResults} -in the usual manner. - -The RM Demo contains a section on speaker adaptation (section 10). These describes -the various options available in detail along with example configuration files that -may be used. - -\mysect{Adaptive training}{exadaptive} -\htool{HERest} also supports adaptive training with {\tt CMLLR} transforms. In -adaptive training adaptation transforms are used to represent speaker -differences during training so that a ``neutral'' {\em canonical model} can be -trained. - -The first stage is to generate a {\tt CMLLR} transform for each training -speaker. All the data for each speaker must be contiguous in the script file, -in this case \texttt{train.scp}. Using the regression tree from the previous -section, the following command can be run to generate the transforms -\begin{verbatim} - HERest -C config -C config.cmllr -S train.scp -I wintri.mlf \ - -J classes -h '*/%%%%%%_*.mfc' -K hmm15/cmllr cmllr1 \ - -H hmm15/macros -u a -H hmm15/hmmdefs -M hmm15/cmllr tiedlist -\end{verbatim} -where the configuration file \texttt{config.cmllr} contains -\begin{verbatim} - HADAPT:TRANSKIND = CMLLR - HADAPT:USEBIAS = TRUE - HADAPT:REGTREE = rtree.tree - HADAPT:ADAPTKIND = TREE - HADAPT:SPLITTHRESH = 1000.0 - HADAPT:KEEPXFORMDISTINCT = TRUE - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -The transforms will be stored in the directory \texttt{hmm15/cmllr} with a file -extension \texttt{cmllr1}. -To update the canonical model the following command would be run -\begin{verbatim} - HERest -C config -S train.scp -I wintri.mlf \ - -J hmm15/cmllr cmllr1 -J classes -h '*/%%%%%%_*.mfc' \ - -E hmm15/cmllr cmllr1 -a \ - -H hmm15/macros -H hmm15/hmmdefs -M hmm15a tiedlist -\end{verbatim} -The estimated model-set is put in directory \texttt{hmm15a}. It is -possible to interleave updates of the transforms with updates of the -canonical model, or simply use the same set of transforms with multiple -iterations of \htool{HERest}. - -\mysect{Semi-Tied and HLDA transforms}{exsyslintran} -\htool{HERest} also supports estimation of a semi-tied transform. Here only a global -semi-tied transform is described, however multiple baseclasses can be used. A new -configuration file, \texttt{config.semi}, is required. This contains -\begin{verbatim} - HADAPT:TRANSKIND = SEMIT - HADAPT:USEBIAS = FALSE - HADAPT:BASECLASS = global - HADAPT:SPLITTHRESH = 0.0 - HADAPT:MAXXFORMITER = 100 - HADAPT:MAXSEMITIEDITER = 20 - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -The \texttt{global} macro in step 13 is required to have been generated. The example -command below can then be run. This generate a new model set stored in hmm16 and -a semi-tied transform in \texttt{hmm16/SEMITIED}. -\begin{verbatim} - - HERest -C config -C config.semi -S train.scp -I wintri.mlf \ - -H hmm15/macros -u stw -H hmm15/hmmdefs -K hmm16 -M hmm16 tiedlist - -\end{verbatim} -An additional iteration of \htool{HERest} can then be run using -\begin{verbatim} - - HERest -C config -S train.scp -I wintri.mlf -H hmm16/macros -u tmvw\ - -J hmm16 -J classes -H hmm16/hmmdefs -M hmm17 tiedlist - -\end{verbatim} -To evaluate the semi-tied estimated model the following command can be used -\begin{verbatim} - - HVite -H hmm17/macros -H hmm17/hmmdefs -S test.scp -l '*' \ - -J hmm16 -J classes -i recout_st.mlf -w wdnet \ - -C config -p 0.0 -s 5.0 dict tiedlist - -\end{verbatim} -Note the {\tt -J} options must be included as the semi-tied transform is -stored in the same fashion as the adaptation transforms. Thus the transform -itself is stored in directory {\tt hmm16} and the global base class in {\tt classes}. - -There are a number of useful other options that may be explored using, for example -HLDA. If \texttt{config.semi} is replaced by \texttt{config.hlda} containing -\begin{verbatim} - HADAPT:TRANSKIND = SEMIT - - HADAPT:USEBIAS = FALSE - HADAPT:BASECLASS = global - HADAPT:SPLITTHRESH = 0.0 - HADAPT:MAXXFORMITER = 100 - HADAPT:MAXSEMITIEDITER = 20 - HADAPT:SEMITIED2INPUTXFORM = TRUE - HADAPT:NUMNUISANCEDIM = 5 - HADAPT:SEMITIEDMACRO = HLDA - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -An HLDA \texttt{InputXForm} that reduces the number of dimensions by 5 is estimated -and stored with the model-set. A copy of the transform is stored also stored in -a file called \texttt{hmm16/HLDA}. For input transforms (and global semi-tied transforms) -there are two forms in which the transform can be stored. First it may be stored as -an \texttt{AdaptXForm} of type \texttt{SEMIT}. The second form is as an input transform. -The latter is preferable if the feature-vector size is modified. The form of transform -is determined by how \texttt{HADAPT:SEMITIED2INPUTXFORM} is set. - -One of the advantages of storing a global transform as an input transform is that there -is no need to specify any {\tt -J} options as the {\tt INPUTXFORM} is by default -stored with the model set options. To prevent the {\tt INPUTXFORM} being stored -with the model set (for example to allow backward compatibility) set the -following configuration option -\begin{verbatim} - HMODEL:SAVEINPUTXFORM = FALSE -\end{verbatim} - -\newpage -\mysect{Using the HTK Large Vocabulary Decoder {\tt HDecode}}{eghdecode} - -{\bf -WARNING: The HTK Large Vocabulary -Decoder \htool{HDecode} has -been specifically written for speech recognition tasks -using cross-word triphone models. Known restrictions are: -\begin{itemize} -\item only works for cross-word triphones; -\item supports N-gram language models up to tri-grams; -\item \texttt{sil} and \texttt{sp} models are reserved as silence -models and are, by default, automatically added to the end of all -pronunciation variants of each word in the recognition dictionary; -\item \texttt{sil} must be used as the pronunciation for the sentence start - and sentence end tokens; -\item \texttt{sil} and \texttt{sp} models cannot occur in the dictionary, - except for the dictionary entry of the sentence start - and sentence end tokens; -\item word lattices generated with \htool{HDecode} must be made {\em -deterministic} using \htool{HLRescore} to remove duplicate paths -prior to being used for acoustic model rescoring -with \htool{HDecode} or \htool{HVite}. -\end{itemize} -} - -The decoder distributed with HTK, \htool{HVite}, is only suitable for small -and medium vocabulary systems\footnote{\htool{HVite} becomes progressively less -efficient as the vocabulary size is increased and cross-word triphones are used.} and systems using bigrams. For larger vocabulary systems, or -those requiring trigram language models to be used directly in the search, \htool{HDecode} is -available as an extension\footnote{An additional, more restrictive, licence - must be agreed to in order to download \htool{HDecode}.} to HTK. -\htool{HDecode} has been specifically written for large vocabulary -speech recognition using cross-word triphone models. -Known restrictions are listed above. For detailed usage, see the -\htool{HDecode} reference page~\ref{s:HDecode} for more information. \htool{HDecode} will also -be used to generate lattices for discriminative training described in the next -section. - -In this section, examples are given for using \htool{HDecode} for large vocabulary -speech recognition. Due to the limitations described above, the word-internal -tripone systems generated in the previous stages {\em cannot} be used with -\htool{HDecode}. For this section it is assumed that there is a cross-word -triphone system in the directory \texttt{hmm20} along with a model-list in -{\tt xwrdtiedlist}. In contrast to the previous sections both the macros and -HMM definitions are stored in the same file \texttt{hmm20/models}. For an -example of how to build a cross-word state-clustered triphone system, see the -Resource Management (RM) example script step 9, in the RM \texttt{samples} -tar-ball. - -Note: the grammar scale factors used in this section, and the next section on -discriminative training, are consistent with the values used in the previous -tutorial sections. However for large vocabulary speech recognition systems -grammar scale factors in the range 12-15 are commonly used. - -\subsection{Dictionary and Language Model} - -\htool{HDecode} automatically adds {\tt sp} or {\tt sil} to the end of each -pronunciation to represent an optionally deletable or non-deletable inter-word -silences. These silences are {\em not} allowed to be in the dictionary entries -other than for the tokens at the start and end of the sentences, -\texttt{SENT-START} and \texttt{SENT-END} in the previous sections. It may -therefore be necessary to modify the dictionary. For example, the dictionary used -for recognition in the previous section should be modified to look like - -\begin{verbatim} - A ah - A ax - A ey - CALL k ao l - DIAL d ay ax l - EIGHT ey t - PHONE f ow n - SENT-END [] sil - SENT-START [] sil - SEVEN s eh v n - TO t ax - TO t uw - ZERO z ia r ow -\end{verbatim} -This recognition dictionary will be assumed to be scored in the file -\texttt{dict.hdecode}. - -A range of bigram and trigram language models, which must match the dictionary -in \texttt{dict.hdecode}, can be used. For example the first few entries of a -bigram language model are shown below. -\begin{verbatim} -\data\ -ngram 1=994 -ngram 2=1490 - -\1-grams: --4.6305 !!UNK --1.0296 SENT-END -1.9574 --1.0295 SENT-START -1.8367 --2.2940 A -0.6935 -... ... -\end{verbatim} -where \texttt{!!UNK} is a symbol representing the out-of-vocabulary -word-class. For more details of the form of language models that can be used -see chapter~\ref{c:hlmtutor}. Note if \texttt{!!UNK} (or \texttt{}) is not the symbol used for the -OOV class a large number of warnings will be printed in the log-file. To avoid -this \htool{HLMCopy} may be used to extract the word-list \texttt{excluding} -the unknown word symbol. - -For large vocabulary speech recognition tasks these language model files may become -very large. It is therefore common to store them in a compressed format. For -this section the language model is assumed be compressed using \texttt{gzip} -and stored in a file \texttt{bg\_lm.gz} in the ARPA-MIT format. - -\subsection{Option 1 - Recognition} - -\htool{HDecode} can be used to generate 1-best output, or -lattices. For both options the same configuration file, assumed to be stored -in \texttt{config.hdecode}, may be used. This should -contain the following entries -\begin{verbatim} -TARGETKIND = MFCC_0_D_A -HLANGMODFILTER = 'gunzip -c $.gz' -HNETFILTER = 'gunzip -c $.gz' -HNETOFILTER = 'gzip -c > $.gz' -RAWMITFORMAT = T -STARTWORD = SENT-START -ENDWORD = SENT-END - -\end{verbatim} -This configuration file has specified the frontend, the filter for reading the -language model\footnote{\texttt{gzip} and \texttt{gunzip} are assumed to be in the current - path.}, \texttt{HLANGMODFILTER} and filters for reading and writing -lattices, \texttt{HNETFILTER} and \texttt{HNETOFILTER} respectively. - -Recognition can then be run on the files specified in \texttt{test.scp} using -the following command. -\begin{verbatim} - HDecode -H hmm20/models -S test.scp \ - -t 220.0 220.0 \ - -C config.hdecode -i recout.mlf -w bg_lm \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist - -\end{verbatim} -The output will be written to an MLF in -\texttt{recout.mlf}. The \texttt{-w} option specifies the $n$-gram model, in -this case a bigram to be used. The final recognition results may be analysed using -\htool{HResults} in the same way as \htool{HVite}. - -In common with \htool{HVite}, there are a number of options that need to be -set empirically to obtain good recognition performance and speed. The options -\texttt{-p} and \texttt{-s} specify the \textit{word insertion penalty} -\index{word insertion penalty} and the \textit{grammar scale factor} -\index{grammar scale factor} respectively as in \htool{HVite}. There are also -a number of pruning options that may be tuned to adjust the run time. These -include the main beam (see the \texttt{-t} option), word end beam (see the -\texttt{-v} option) and the maximum model pruning (see the \texttt{-u} -option). - -\subsection{Option 2 - Speaker Adaptation} - -\htool{HDecode} also supports the use of speaker -adaptation transforms, as described in the tutorial steps 12-14. Note incremental -adaptation and transform estimation are {\em not} currently supported for -\htool{HDecode}. - -Similar command line options are used for speaker adaptation with -\htool{HDecode} as \htool{HVite}. The main difference is that the use of an -input transform is specified using the \texttt{-m} option in \htool{HDecode} -rather than the \texttt{-k} option in \htool{HVite}. Assuming that a set of -MLLR transforms have been generated using \htool{HERest} as described in -section~\ref{s:exsysadapt} and are stored in directory \texttt{xforms} with a -transform extension \texttt{mllr2}. Decoding can be run using -\begin{verbatim} - HDecode -H hmm20/models -S testAdapt.scp \ - -t 220.0 220.0 \ - -J xforms mllr2 -h '*/%%%%%%_*.mfc' -m -i recoutAdapt.mlf -w bg_lm \ - -J classes -C config.hdecode -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -\end{verbatim} -The recognition output is written to \texttt{recoutAdapt.mlf}. - -\subsection{Option 3 - Lattice Generation} - -\htool{HDecode} also support lattice generation to allow more complex language -models to be applied, or for lattice-based discriminative training. The -\texttt{-z ext} option, where \texttt{ext} specifies the extension to be used -for the lattice, specifies that lattices should be generated. - -The lattices are to stored in a directory (which must be generated) -\texttt{lat\_bg}. The following command will perform lattice generation -\begin{verbatim} - HDecode -H hmm20/models -S test.scp \ - -t 220.0 220.0 \ - -C config.hdecode -i recout.mlf -w bg_lm \ - -o M -z lat -l lat_bg -X lat \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -\end{verbatim} - -In addition to the standard printing options, word insertion and grammar scale -factors, an option to specify the number of tokens used per state (see the -\texttt{-n} option) is available This can significantly affect the decoding time and the -size of lattices generated. Increasing the value (the default is 32) increases -the decoding time and size of the lattices. Note the lattice will be -compressed using \texttt{gzip} as specified with the \texttt{HNETOFILTER}. - -Prior to rescoring the -lattices generated by \htool{HDecode} must be made deterministic using -\htool{HLRescore}. The first stage is to generate a list of the lattices that -need to be made deterministic. Let \texttt{test.lcp} hold this -list, for example a few possible entries are given below -\begin{verbatim} -adg0_4_sr009.lat -adg0_4_sr049.lat -adg0_4_sr089.lat -adg0_4_sr129.lat -adg0_4_sr169.lat -... ... - -\end{verbatim} -For the bigram lattices previously generated in \texttt{lat\_bg} the following -command needs to be run -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -t 200.0 1000.0 \ - -m f -L lat_bg -w -l lat_bg_det dict.hdecode -\end{verbatim} -The resulting deterministic bigram lattices are now stored under directory -\texttt{lat\_bg\_det}. The configuration file -\texttt{config.hlrescore} should contain the following -settings, -\begin{verbatim} -HLANGMODFILTER = 'gunzip -c $.gz' -HNETFILTER = 'gunzip -c $.gz' -HNETOFILTER = 'gzip -c > $.gz' -RAWMITFORMAT = T -STARTWORD = SENT-START -ENDWORD = SENT-END -FIXBADLATS = T -\end{verbatim} -The \texttt{FIXBADLATS} configuration option ensures that if the final word in the lattice is -\texttt{!NULL}, and the word specified in \texttt{ENDWORD} is missing, then -\texttt{!NULL} is replaced by the word specified in \texttt{ENDWORD}. This is -found to make lattice generation more robust. - - -\subsection{Option 4 - Lattice Rescoring} - -More complicated language models, for instance, higher order $n$-gram -models, may be applied to expand the initial lattices and -improve recognition performance. Assume that a compressed version of a -trigram language model with the same vocabulary as the bigram above is stored -in \texttt{tg\_lm.gz}. - -The 1-best path in the lattice after applying the trigram language -model may be obtained using the following command. -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -f -i recout_tg.mlf -n tg_lm -L lat_bg -w -l lat_tg \ - -p 0.0 -s 5.0 dict.hdecode -\end{verbatim} -The 1-best output is placed in \texttt{recout\_tg.mlf}. In addition, -compressed version of the lattices now with trigram language model are stored -in \texttt{lat\_tg}. - - -It is then possible to rescore these trigram lattices using \htool{HDecode} -with either a different set of acoustic models, or a different grammar scale -factor. However, prior to this it is again necessary to ensure that -the lattices are deterministic. Thus the following command is required -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -t 200.0 1000.0 -m f -L lat_tg \ - -w -l lat_tg_det dict.hdecode -\end{verbatim} -These lattices can then be rescored using -\begin{verbatim} - HDecode -H hmm21/models -S test.scp \ - -t 220.0 220.0 \ - -C config.hdecode -i recout_rescore.mlf -L lat_tg_det \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist2 -\end{verbatim} -where the new set of acoustic models are assumed to be stored in -\texttt{hmm21/models} and model-list in \texttt{xwrdtiedlist2}. - -%% Lattices with HMM model alignment and time stamps may also be -%% obtained using -%% \begin{verbatim} -%% HDecode.mod -H hmm20/models -S test.scp \ -%% -t 220.0 220.0 -z lat -l lattices.align/ -q tvaldm \ -%% -C config.hdecode -l '*' -i recout.mlf -w -L ./ \ -%% -o M -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -%% \end{verbatim} -%% and the generated lattices with model alignment will be stored under -%% \texttt{lattices.align}. - -\newpage -\mysect{Discriminative Training}{egdiscriminative} - -A further refinement to the acoustic models is to use a \textit{Discriminative Training} -approach to HMM parameter estimation. Discriminative training -can bring considerable improvements in recognition accuracy -and is increasingly being used in large vocabulary speech recognition -systems. - -{\bf Note that as \htool{HDecode} is run to create the lattices, a cross-word - triphone model set must be used. The form of dictionary described in the - HDecode section is also required.} - -\centrefig{discriminative}{90}{Discriminative Training} - -The implementation of discriminative training with HTK requires the following -steps summarised in Fig.~\ref{f:discriminative}. The individual steps and -related command-lines are given below. - -\subsection{Step 1 - Generation of Initial Maximum Likelihood Models} -A cross-word triphone set of HMMs must be initially trained -using standard maximum likelihood estimation (with \htool{HERest}). Since -\htool{HDecode} is used in this recipe for both word lattice generation -and phone-marking of the lattices, cross-word triphone models are assumed in -this section, as in the previous section. These models are again -stored in the MMF \texttt{hmm20/MODELS}. - -\subsection{Step 2 - Training Data LM Creation} -A ``weak'' language model, i.e. a unigram or bigram, must be created for use in discriminative training. -It is essential that the vocabulary includes (at least) the words in the -correct word-level transcripts. Since a weak language model is required, it -is possible to use only the transcripts of the acoustic training data in LM -creation. If a bigram LM is used, typically the count cutoff is set so that -there are approximately the same number of bigrams as unigrams. Details of -how this can be done can be found in the \htool{HLM} tutorial section~\ref{c:hlmtutor}, but a -brief outline is given below. - -First of all the data in the training set MLF must be modified into a suitable -form for language model training with sentence start and sentence end symbols. -Traditionally in language modelling \texttt{} and \texttt{} are used -for these symbols. However in keeping with the \htool{HDecode} section above, -\texttt{SENT-START} and \texttt{SENT-END} will be used in this section. The form of one -sentence per line with word-start/end markers can be simply created from a -word-level MLF using e.g. \texttt{awk}. - -It is assumed that the word-level training transcripts with one sentence per -lines is in the file \texttt{lmtrain.txt}, and a sub-directory \texttt{lmdb} -has been created to store the database files needed for LM creation. First -\htool{LNewMap} is used to -create a new word-map, then \htool{LGPrep} run to create the database. - -\begin{verbatim} -LNewMap empty.wmap -LGPrep -A -b 500000 -n 2 empty.wmap -d lmdb lmtrain.txt -\end{verbatim} - -The data files in \texttt{lmdb} can then be used to create a language -model. The file \texttt{lmdb/wmap} has a short header, and then gives a list -of all the words encountered in training. -%This first -%field can be extracted and used as a training data wordlist. Assume -%this is \texttt{wordlist.train}. -The \htool{LBuild} command can now be used to build the required bigram -model. If it is assumed that a suitable cut-off value for the bigram is known -in order to have a model with the desired number of bigrams (in the command -below it is set to 5) then the required \htool{LBuild} command would be -\begin{verbatim} -LBuild -A -C config.lbuild lmdb/wmap -c 5 -n 2 trainbg lmdb/gram.* -\end{verbatim} -The cut-off parameter (value supplied to \texttt{-c}) should be varied until a -bigram of a suitable size is obtained (it is also possible to find this -information in advance with the aid of the \htool{LFoF} command). In order to -compress the resulting language model (using \texttt{gzip}) the file -\texttt{config.lbuild} should contain -\begin{verbatim} -HLANGMODOFILTER = 'gzip -c > $.gz' -\end{verbatim} -The result of the above command is that a bigram LM for the training data in file \texttt{trainbg.gz}. - -\subsection{Step 3 - Word Lattice Creation} -Two sets of ``phone-marked'' lattices, called the denominator and numerator lattices, are -required for discriminative training. The first stage in generating these -phone-marked lattices is to produce word lattices. - -The denominator word lattices represent the set of most likeliy word sequences -for a particular training sentence. These denominator word lattices are -created using \htool{HDecode} in a recognition mode (similar to the -\htool{HDecode} lattice generation section above) with the initial ML-trained -models, the training data language model and speech data. Numerator word-level -lattices are created using \htool{HLRescore} and include language model log -probabilities. - -The denominator word lattices creation stage uses \htool{HDecode}. The -lattices will be placed in a subdirectory \texttt{wlat.den}. The dictionary -for the training data is assumed to be available in \texttt{dict.hdecode} and a list of -training files in \texttt{train.scp}. Lattices are created using -\begin{verbatim} - HDecode -A -H hmm20/models -S train.scp -t 220.0 220.0 -C config.hdecode \ - -i wlat.den/recout.mlf -w trainbg -o M -z lat -l wlat.den -X lat \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -\end{verbatim} -where it has been assumed that a suitable grammar scale factor is \texttt{-s - 5.0}, consistent with the previous section describing the use of -\htool{HDecode}. - -Similarly numerator word lattices will be created in \texttt{wlat.num}. Assuming that the training word-level -MLF file is located in \texttt{trainwords.mlf} and a list of these labels is -contained in \texttt{train.labscp}, the following command can be run -\begin{verbatim} - HLRescore -A -C config.hlrescore -S train.labscp -I words.mlf \ - -n trainbg -f -t tvalqr -w -s 5.0 -l wlat.num dict.hdecode -\end{verbatim} -using the config file \texttt{config.hlrescore} defined in the section above -for \texttt{HDecode}. An example of the first few lines of \texttt{train.labscp} might be -\begin{verbatim} -*/adg0_4_sr009.lab -*/adg0_4_sr049.lab -*/adg0_4_sr089.lab -*/adg0_4_sr129.lab -*/adg0_4_sr169.lab -... ... - -\end{verbatim} -Note that not all lattices may be generated successfully in the \htool{HDecode} step, and a check should be -made that all the lattices exist before continuing. If some have failed the pruning parameters can be -altered or a new list of successful training files created for subsequent stages. - -\subsection{Step 4 - Phone Marking of Numerator and Denominator - Lattices} - -The word-level lattices are further processed using \htool{HDecode.mod}, the -initial models and the speech data to produce the phone-marked lattices used -for discriminative training. Note lattices can also be phone-marked using -\htool{HVite}. Model-marking with \htool{HVite} does not have the same -restrictions, in terms of the nature of the acoustic models, as -\htool{HDecode} and \htool{HDecode.mod}. - -Before the phone-marked denominator lattices can be created, the denominator word lattices must -be made determininstic. These will be written into the directory \texttt{wlat.den.det} assuming a list of lattices -is in \texttt{denwordlat.lcp} with the command -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -t 220.0 1000.0 -s 5.0 \ - -m f -L wlat.den -w -l wlat.den.det dict.hdecode -\end{verbatim} -Lattices with HMM model alignment and time stamps for the numerator can then be obtained using the command -\begin{verbatim} - HDecode.mod -H hmm20/models -S train2.scp -t 1000.0 1000.0 \ - -z lat -l plat.num -q tvaldm -C config.hdecode \ - -i plat.num/rec.mlf -w -L wlat.num -o M -p 0.0 -s 5.0 \ - dict.hdecode xwrdtiedlist -\end{verbatim} -The generated numerator lattices with model alignment will be stored under the directory -\texttt{plat.num}, \texttt{train2.scp} should contain the list of training files for which word lattices could -be created. The same procedure can be used to create the denominator phone-marked lattices, stored in -\texttt{plat.den}, from the determinised word lattices: -\begin{verbatim} - HDecode.mod -H hmm20/models -S train2.scp -t 220.0 220.0 \ - -z lat -l plat.den -q tvaldm -C config.hdecode \ - -i plat.den/rec.mlf -w -L wlat.den.det -o M -p 0.0 -s 5.0 \ - dict.hdecode xwrdtiedlist -\end{verbatim} -Again a check should be made on the phone-marked lattices that are created and the set of training -files for which both the numerator and denominator lattices exist will be stored in \texttt{train3.scp}. - -\subsection{Step 5 - Generating Discriminatively Trained Models} - -Having generated the required numerator and denominator phone-marked lattices, -\htool{HMMIRest} can be run to discriminatively train the HMMs. -A number (typically 4-8) of iterations of the Extended Baum-Welch (EBW) -algorithm are run, each invocation of \htool{HMMIRest} corresponds to one iteration of -EBW. There are a number of configuration options to \htool{HMMIRest} that -allow the choice of objective function to be varied; the amount and type of -smoothing; learning rate in EBW updates etc. For large amounts of data, each -iteration of \htool{HMMIRest} can be run in two phases: the first phase in -which blocks of data are processed in parallel and accumulators are created -for each block of data; and the second estimation phase in which the sets of -accumulators are loaded and the HMM parameters re-estimated. Here the -commands are given that assume that the data is not processed in a parallel -mode. - -For basic MMI training the following form could be used for the first iteration creating a model set in directory \texttt{hmm21} -\begin{verbatim} - HMMIRest -C config.mmirest -A -H hmm20/models -S train3.scp -q plat.num - -r plat.den -u tmvw -M hmm21 xwrdtiedlist -\end{verbatim} -There are a wide variety of options in MMI training, but normally I-smoothing - would be used (typically with a value of 100 for MMI) and the file \texttt{config.mmirest} -would contain: -\begin{verbatim} -TARGETKIND = MFCC_0_D_A -HNETFILTER = 'gunzip -c $.gz' -LATPROBSCALE = 0.2 -ISMOOTHTAU = 100 -E = 2 -ARC: TRACE = 3 -HMMIREST: TRACE = 3 -MPE = FALSE - -\end{verbatim} -The value \texttt{E=2} sets a learning rate parameter, and the trace options -allow some detail on the processing of \htool{HMMIRest} to be printed. The -invocation of \htool{HMMIRest} above will perform a single iteration of the -EBW algorithm. Note that the value of \texttt{LATPROBSCALE} has been set to -the reciprocal of the normal grammar scale factor. - -For MPE training, the above configuration file can simply be altered to have the line -\begin{verbatim} -MPE = TRUE -\end{verbatim} -and the value of \texttt{ISMOOTHTAU} might be reduced by a factor of 2. - -\mysect{Summary}{exsyssum} -This chapter has described the construction of a tied-state phone-based -continuous speech recogniser and in so doing, it has touched on most of the -main areas addressed by \HTK: recording, data preparation, HMM definitions, -training tools, adaptation tools, networks, decoding and evaluating. The -rest of this book discusses each of these topics in detail. - - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/fundaments.tex b/HTKBook/fundaments.tex deleted file mode 100644 index 91a6c80..0000000 --- a/HTKBook/fundaments.tex +++ /dev/null @@ -1,786 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{The Fundamentals of \HTK}{fundaments} - -\sidepic{overview}{40}{} -\HTK\ is a toolkit for building Hidden Markov Models (HMMs). -HMMs can be used to model any time series and the core of -\HTK\ is similarly general-purpose. However, \HTK\ is primarily -designed for building HMM-based speech processing tools, in -particular recognisers. Thus, much of the infrastructure -support in \HTK\ is dedicated to this task. As shown in the picture -above, there are two major processing stages involved. Firstly, -the \HTK\ training tools are used to estimate the parameters of a set -of HMMs using -training utterances and their associated transcriptions. Secondly, -unknown utterances are transcribed using the \HTK\ recognition tools. - - -The main body of this book is mostly concerned with the mechanics of these -two processes. However, before launching into detail it is necessary to -understand some of the basic principles of HMMs. It is also helpful to have -an overview of the toolkit and to have some appreciation of -how training and recognition in \HTK\ is organised. - -This first part of the book attempts to provide this information. In this -chapter, the basic ideas of HMMs and their use in speech recognition are -introduced. The following chapter then presents a brief overview -of \HTK\ and, for users of older versions, it highlights the main -differences in version 2.0 and later. Finally in this tutorial part of the book, chapter 3 -describes how a HMM-based speech -recogniser can be built using -\HTK. It does this by describing the construction of a simple small vocabulary -continuous speech recogniser. - -The second part of the book then revisits the topics skimmed over here -and discusses each in detail. This can be -read in conjunction with the third and final part -of the book which provides a reference manual for \HTK. This includes -a description of each tool, summaries of the various -parameters used to configure \HTK\ and a list of the error messages that -it generates when things go wrong. - -Finally, note that this book is concerned only with \HTK\ as a tool-kit. -It does not provide information for using the \HTK\ libraries as a programming -environment. - -\mysect{General Principles of HMMs}{genpHMM} - -\sidefig{messencode}{50}{Message Encoding/Decoding}{-4}{} -Speech recognition systems generally assume that the speech signal is -a realisation of some message encoded as a sequence of one or more -symbols (see Fig.~\href{f:messencode} ). To effect the reverse -operation of recognising the underlying symbol sequence given a spoken -utterance, the continuous speech waveform is first converted to a -sequence of equally spaced discrete parameter vectors. This sequence -of parameter vectors is assumed to form an exact representation of -the speech waveform on the basis that for the duration covered by a -single vector (typically 10ms or so), the speech waveform can be -regarded as being stationary. Although this is not strictly true, it -is a reasonable approximation. Typical parametric representations in -common use are smoothed spectra or linear prediction coefficients plus -various other representations derived from these. - -The r\^{o}le of the recogniser is to effect a mapping between sequences -of speech vectors and the wanted underlying symbol sequences. Two -problems make this very difficult. Firstly, the mapping from symbols -to speech is not one-to-one since different underlying symbols can -give rise to similar speech sounds. Furthermore, there are large -variations in the realised speech waveform due to speaker variability, -mood, environment, etc. Secondly, the boundaries between symbols -cannot be identified explicitly from the speech waveform. Hence, it -is not possible to treat the speech waveform as a sequence of -concatenated static patterns. - -The second problem of not knowing the word boundary locations -can be avoided by restricting the task to -isolated word recognition. As shown in Fig.~\href{f:isoprob}, -this implies that the speech waveform corresponds to a single -underlying symbol (e.g. word) chosen from a fixed vocabulary. -Despite the fact that this -simpler problem is somewhat artificial, it nevertheless has -a wide range of practical applications. -Furthermore, it serves as a good basis for -introducing the basic ideas of HMM-based -recognition before dealing with the more complex continuous speech -case. Hence, isolated word recognition using HMMs will be dealt -with first. - -\mysect{Isolated Word Recognition}{isowrdrec} - -Let each spoken word be represented by a sequence of speech vectors or {\it -observations} $\bm{O}$, defined as -\begin{equation} -\bm{O} = \bm{o}_1, \bm{o}_2, \ldots, \bm{o}_T -\end{equation} -where $\bm{o}_t$ is the speech vector observed at time $t$. The -isolated word recognition problem can then be regarded as that of -computing -\begin{equation} \label{e:2} - \arg\max_i \left\{ P(w_i | \bm{O}) \right\} -\end{equation} -where $w_i$ is the $i$'th vocabulary word. This probability -is not computable directly but using Bayes' Rule\index{Bayes' Rule} gives -\begin{equation} \label{e:3} - P(w_i | \bm{O}) = \frac{P(\bm{O}|w_i) P(w_i)}{P(\bm{O})} -\end{equation} -Thus, for a given set of prior probabilities $P(w_i)$, the most -probable spoken word depends only on the likelihood $P(\bm{O}|w_i) $. -Given the dimensionality of the observation sequence $\bm{O}$, the -direct estimation of the joint conditional probability -$P(\bm{o}_1,\bm{o}_2,\ldots | w_i)$ from examples of spoken words -is not practicable. However, if a parametric model of word production -such as a Markov model -is assumed, then estimation from data is possible since the problem -of estimating the class conditional observation densities $P(\bm{O}|w_i)$ -is replaced by the much simpler problem of estimating the Markov -model parameters. - -\sidefig{isoprob}{50}{Isolated Word Problem}{-4} -In HMM based speech recognition, it is assumed that the sequence of -observed speech vectors corresponding to each word is generated -by a Markov model\index{HMM!definitions} as shown in Fig.~\href{f:markovgen}. -A Markov model is a finite state machine which changes state -once every time unit and each time $t$ that a state $j$ is entered, a -speech vector $\bm{o}_t$ is generated from the probability density -$b_j(\bm{o}_t)$. Furthermore, the transition from state $i$ to state $j$ -is also probabilistic and is governed by the discrete probability $a_{ij}$. -Fig.~\href{f:markovgen} shows an example of this process where the six state -model moves through the state sequence $X=1,2,2,3,4,4,5,6$ in -order to generate the sequence $\bm{o}_1$ to $\bm{o}_6$. Notice that -in \HTK, the entry and exit states of a HMM are non-emitting. This -is to facilitate the construction of composite models as explained in -more detail later. - - -The joint probability that $\bm{O}$ is generated by the model $M$ moving -through the state sequence -$X$ is calculated simply as the product of the transition -probabilities and the output probabilities. So for the state sequence $X$ in -Fig.~\href{f:markovgen} -\begin{equation} \label{e:4} -P(\bm{O},X|M) = a_{12} b_2(\bm{o}_1) a_{22} b_2(\bm{o}_2) a_{23} - b_3(\bm{o}_3) \ldots -\end{equation} -However, in practice, only the observation sequence -$\bm{O}$ is known and the -underlying state sequence $X$ is hidden. This is why it is -called a {\it Hidden Markov Model}. - -\centrefig{markovgen}{85}{The Markov Generation Model} - -Given that $X$ is unknown, the -required likelihood\index{likelihood computation} is computed -by summing over all possible state -sequences $X = x(1), x(2), x(3), \ldots, x(T)$, that is -\begin{equation} \label{e:5} -P(\bm{O}|M) = \sum_X a_{x(0)x(1)} \prod_{t=1}^T b_{x(t)}(\bm{o}_t) -a_{x(t)x(t+1)} \end{equation} -where $x(0)$ is constrained to be the model entry state and $x(T+1)$ -is constrained to be the model exit state. - -As an alternative to equation~\ref{e:5}, the likelihood can be -approximated by only considering the most likely state -sequence, that is -\begin{equation} \label{e:6} -\hat{P}(\bm{O}|M) = \max_X \left\{ - a_{x(0)x(1)} \prod_{t=1}^T b_{x(t)}(\bm{o}_t) a_{x(t)x(t+1)} - \right\} -\end{equation} - -Although the direct computation of equations \ref{e:5} and \ref{e:6} -is not tractable, simple recursive procedures exist which allow -both quantities to be calculated very efficiently. -Before going any further, however, notice that if equation~\ref{e:2} is -computable then the recognition problem is solved. Given a set of models -$M_i$ corresponding to words $w_i$, equation~\ref{e:2} is -solved by using \ref{e:3} and assuming that -\begin{equation} \label{e:7} -P(\bm{O}|w_i) = P(\bm{O}|M_i). -\end{equation} - -All this, of course, assumes that the parameters $\{a_{ij}\}$ and -$\{b_{j}(\bm{o}_t)\}$ are known for each model $M_i$. Herein lies the -elegance and power of the HMM framework. Given a set of training examples -corresponding to a particular model, the parameters of that model can be -determined automatically by a robust and efficient re-estimation -procedure. Thus, provided that a sufficient number of representative -examples of each word can be collected then a HMM can be constructed -which implicitly models all of the many sources of variability inherent -in real speech. Fig.~\href{f:useforiso} summarises the use of HMMs -for isolated word recognition. Firstly, a -HMM is trained for each vocabulary word using a number of examples -of that word. In this case, the vocabulary consists of -just three words: ``one'', ``two'' and ``three''. -Secondly, to recognise some unknown word, the likelihood of -each model generating that word is calculated and the most likely -model identifies the word. - -\centrefig{useforiso}{84}{Using HMMs for Isolated Word Recognition} - -\mysect{Output Probability Specification}{outprobspec} - -Before\index{output probability!continuous case} the problem of parameter estimation can be discussed in more -detail, the form of the output distributions $\{b_{j}(\bm{o}_t)\}$ -needs to be made explicit. \HTK\ is designed primarily for modelling -continuous parameters using continuous density multivariate output -distributions. It can also handle observation sequences -consisting of discrete symbols in which case, the output distributions -are discrete probabilities. For simplicity, however, the presentation -in this chapter will assume that continuous density -distributions are being used. The minor differences that the use -of discrete probabilities entail are noted in chapter~\ref{c:HMMDefs} -and discussed in more detail in chapter~\ref{c:discmods}. - -In common with most other\index{Gaussian mixture}\index{streams}\index{codebooks} -continuous density HMM systems, \HTK\ represents output distributions -by Gaussian Mixture Densities. -In \HTK, however, a further -generalisation is made. \HTK\ allows each observation vector at time $t$ -to be split into a number of $S$ independent data streams $o_{st}$. The -formula for computing $b_{j}(\bm{o}_t)$ is then -\begin{equation} \label{e:8} - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left[ - \sum_{m=1}^{M_s} c_{jsm} {\cal N}(\bm{o}_{st}; - \bm{\mu}_{jsm}, \bm{\Sigma}_{jsm}) - \right]^{\gamma_s} -\end{equation} -where $M_s$ is the number of mixture components in stream $s$, $c_{jsm}$ -is the weight of the $m$'th component and -${\cal N}(\cdot; \bm{\mu}, \bm{\Sigma})$ is a multivariate Gaussian with -mean vector $\bm{\mu}$ and covariance matrix $\bm{\Sigma}$, -that is\index{stream weight}\index{codebook exponent} -\begin{equation} -{\cal N}(\bm{o}; \bm{\mu}, \bm{\Sigma}) = - \frac{1}{\sqrt{(2 \pi)^n | \bm{\Sigma} |}} - e^{- \frac{1}{2}(\bm{o}-\bm{\mu})^\transpose \bm{\Sigma}^{-1}(\bm{o}-\bm{\mu})} -\end{equation} -where $n$ is the dimensionality of $\bm{o}$. - -The exponent $\gamma_s$ is a stream weight\footnote{often -referred to as a codebook exponent.}. It -can be used to give a particular stream more emphasis, however, -it can only be set manually. No current \HTK\ training tools -can estimate values for it. - -Multiple data streams are used to -enable separate modelling of multiple information sources. In -\HTK, the processing of streams is completely general. However, -the speech input modules assume that the -source data is split into at most 4 streams. Chapter~\ref{c:speechio} -discusses this in more detail but for now it is sufficient to -remark that the default streams are the -basic parameter vector, first (delta) and second (acceleration) -difference coefficients and log energy. - -\mysect{Baum-Welch Re-Estimation}{bwrest} - -To determine the parameters of a HMM it is first necessary to make -a rough guess at what they might be. Once this is done, more -accurate (in the maximum likelihood sense) parameters -can be found by applying the so-called -Baum-Welch re-estimation\index{Baum-Welch re-estimation} -formulae. - -\sidefig{subsmixrep}{60}{Representing a Mixture}{-4}{ -Chapter~\ref{c:Training} gives the formulae used -in \HTK\ in full detail. -Here the basis -of the formulae will be presented in a very informal way. -Firstly, it should be noted that the inclusion of multiple data -streams does not alter matters significantly since each stream -is considered to be statistically independent. Furthermore, -mixture components can be considered to be a special form of -sub-state in which the transition probabilities are the mixture -weights (see Fig.~\href{f:subsmixrep}). -} - -Thus, the essential problem is to estimate the means and -variances of a HMM in which each state output distribution is a single -component Gaussian, that is -\begin{equation} \label{e:10} -b_j(\bm{o}_t) = \frac{1}{\sqrt{(2 \pi)^n | \bm{\Sigma_j} |}} - e^{- \frac{1}{2}(\bm{o}_t - \bm{\mu}_j)^\transpose\bm{\Sigma}_j^{-1}(\bm{o}_t - \bm{\mu}_j)} -\end{equation} -If there was just one state $j$ in the HMM, this parameter -estimation would be easy. The maximum likelihood estimates of -$\bm{\mu}_j$ and $\bm{\Sigma}_j$ would be just the simple averages, -that is -\begin{equation} \label{e:11} - \hat{\bm{\mu}}_j = \frac{1}{T} \sum_{t=1}^{T} \bm{o}_t -\end{equation} -and -\begin{equation} \label{e:12} - \hat{\bm{\Sigma}}_j = \frac{1}{T} \sum_{t=1}^{T} - (\bm{o}_t - \bm{\mu}_j) (\bm{o}_t - \bm{\mu}_j)^\transpose -\end{equation} -In practice, of course, there are multiple states and there is no -direct assignment of observation vectors to individual states -because the underlying state sequence is unknown. Note, however, -that if some approximate assignment of vectors to states could be made then -equations \ref{e:11} and \ref{e:12} could be used to give the -required initial values for the parameters. Indeed, this is exactly -what is done in the \HTK\ tool called \htool{HInit}\index{hinit@\htool{HInit}}. -\htool{HInit} first divides the -training observation vectors equally amongst the model states and then -uses equations \ref{e:11} and \ref{e:12} to give initial values for -the mean and variance of each state. It then finds the maximum -likelihood state sequence using the Viterbi\index{Viterbi training} -algorithm described below, -reassigns the observation vectors to states and then uses -equations \ref{e:11} and \ref{e:12} again to get better initial -values. This process is repeated until the estimates -do not change. - -Since the full likelihood of each observation sequence -is based on the summation of all possible state sequences, -each observation vector $\bm{o}_t$ contributes to the computation -of the maximum likelihood parameter values for each state $j$. -In other words, instead of assigning each observation vector -to a specific state as in the above approximation, each -observation is assigned to every state in proportion to -the probability of the model being in that state when the -vector was observed. Thus, if $L_j(t)$ denotes the probability -of being in state $j$ at time $t$ then the -equations \ref{e:11} and \ref{e:12} given above become the -following weighted averages -\begin{equation} \label{e:13} - \hat{\bm{\mu}}_j = \frac{ \sum_{t=1}^{T} L_j(t) \bm{o}_t} - {\sum_{t=1}^{T} L_j(t)} -\end{equation} -and -\begin{equation} \label{e:14} - \hat{\bm{\Sigma}}_j = \frac{ \sum_{t=1}^{T} L_j(t) - (\bm{o}_t - \bm{\mu}_j) (\bm{o}_t - \bm{\mu}_j)^\transpose } - {\sum_{t=1}^{T} L_j(t)} -\end{equation} -where the summations in the denominators are included to give -the required normalisation. - -Equations \ref{e:13} and \ref{e:14} are the -Baum-Welch re-estimation\index{Baum-Welch re-estimation} -formulae for the means and covariances of a HMM. A similar but -slightly more complex formula can be derived for the transition -probabilities (see chapter~\ref{c:Training}). - -Of course, to apply equations \ref{e:13} and \ref{e:14}, the -probability of state occupation $L_j(t)$ must be calculated. -This is done efficiently using the so-called {\it Forward-Backward} -\index{Forward-Backward algorithm} -algorithm. Let the forward probability\footnote{ -Since the output distributions are densities, these are not -really probabilities but it is a convenient fiction. -} -\index{forward probability} $\alpha_j(t)$ for some model -$M$ with $N$ states be defined as -\begin{equation} \label{e:15} - \alpha_j(t) = P(\bm{o}_1,\ldots,\bm{o}_t, x(t)=j | M). -\end{equation} -That is, $\alpha_j(t)$ is the joint probability of observing the -first $t$ speech vectors and being in state $j$ at time $t$. This -forward probability can be efficiently calculated by the following -recursion -\begin{equation} \label{e:16} - \alpha_j(t) = \left[ \sum_{i=2}^{N-1} \alpha_i(t-1) a_{ij} \right] - b_j(\bm{o}_t). -\end{equation} -This recursion depends on the fact that the probability -of being in state $j$ at time $t$ and seeing observation $\bm{o}_t$ -can be deduced by summing the forward probabilities for all -possible predecessor states $i$ weighted by the transition -probability $a_{ij}$. The slightly odd limits are caused by -the fact that states $1$ and $N$ are non-emitting\footnote{ -To understand equations involving a non-emitting state at time $t$, the time -should be thought of as being $t-\delta t$ if it is an entry state, and $t+\delta t$ -if it is an exit state. This becomes important when HMMs are connected together -in sequence so that transitions across non-emitting states take place -\textit{between frames}. -}. The -initial conditions for the above recursion are -\begin{equation} - \alpha_1(1) = 1 -\end{equation} -\begin{equation} - \alpha_j(1) = a_{1j} b_j(\bm{o}_1) -\end{equation} -for $1 = -\end{verbatim} -where \texttt{} is the name of the field and \texttt{} -is its value. The field name is case insensitive and zero or more -spaces can surround the \texttt{=} sign. The \texttt{} starts -with the first printing character and ends at the last printing -character on the line. \HTK\ style escaping is never used in \HLM\ -headers. - -Fields may be given in any order. Field names which are unrecognised -by \HTK\ are ignored. Further field names may be introduced in -future, but these are guaranteed not to start with the letter ``U''. - -(NB. The above format rules do not apply to the files described in section -\ref{s:HLMclasslmfileformats} -- see that section for more details) - - -\mysect{Word Map Files}{wmaps} - -A word map file is a text file consisting of a header and a list of -word entries. The header\index{word map!header} contains the -following -\begin{enumerate} - -\item a name consisting of any printable character string - (\texttt{Name=sss}). - -\item the number of word entries (\texttt{Entries=nnn}) - -\item a sequence number (\texttt{SeqNo=nnn}) - -\item whether or not word ids \texttt{ID}s and word frequency counts - \texttt{WFC}s are included (\texttt{Fields=ID} or - \texttt{Fields=ID,WFC}). When the \texttt{Fields} field is - missing, the word map contains only word names and it - degenerates to the special case of a word list. - -\item escaping mode (\texttt{EscMode=HTK} or \texttt{EscMode=RAW}). - The default is \texttt{HTK}. - -\item the language (\texttt{Language=xxx}) - -\item word map source, a text string used with derived word maps - to describe the source from which the subset was derived. - (\texttt{Source=...}). - -\end{enumerate} -The first two of these fields must always be included, and for word -maps, the \texttt{Fields} field must also be included. The remaining -fields are optional. More header fields may be defined later and the -user is free to insert others. - -The word entries begin with the keyword \verb+\Words\+. Each word is -on a separate line with the format\index{word map!entries} -\begin{verbatim} - word [id [count]] -\end{verbatim} -where the id and count are optional. Proper word maps always have an -\texttt{id}. When the \texttt{count} is included, it denotes the -number of times that the word has been encountered during the -processing of text data. - -For example, a typical word map file might be -\begin{verbatim} - Name=US_Business_News - SeqNo=13 - Entries=133986 - Fields=ID,WFC - Language=American - EscMode=RAW - \Words\ - 65536 34850 - CAN'T 65537 2087 - THE 65538 12004 - DOLLAR 65539 169 - IS 65540 4593 - .... -\end{verbatim} -In this example,\index{word map!example of} the word map is called -``US\_Business\_News'' and it has been updated 13 times since it was -originally created. It contains a total of 133986 entries and word -frequency counts are included. The language is ``American'' and there -is no escaping used (e.g.\ can't is written \verb+CAN'T+ rather than -the standard \HTK\ escaped form of \verb+CAN\'T+). - -As noted above, when the \texttt{Fields} field is missing, the word -map contains only the words and serves the purpose of a simple word -list. For example, a typical word list might be defined as follows -\begin{verbatim} - Name=US_Business_News - Entries=10000 - \Words\ - A - ABLE - ABOUT - ... - ZOO -\end{verbatim} -Word lists are used to define subsets of the words in a word map. -Whenever a tool requires a word list, a simple list of words -can be input instead of the above. For example, the previous list -could be input as -\begin{verbatim} - A - ABLE - ABOUT - ... - ZOO -\end{verbatim} -In this case, the default is to assume that all input words are -escaped. If raw mode input is required, the configuration variable -\texttt{INWMAPRAW} should be set true (see -section~\ref{s:htkstrings}).\index{vocabulary list} - -As explained in section~\ref{s:htkstrings}, by default \HTK\ tools -output word maps in HTK escaped form. However, this can be overridden -by setting the \htool{LWMap} configuration variable -\texttt{OUTWMAPRAW} to true. - -\mysect{Class Map Files}{cmaps} - -A class map file defines one or more word classes. It has a header -similar to that of a word map file, containing values for -\texttt{Name}, \texttt{Entries}, \texttt{EscMode} and \texttt{Language}. -In this case, the number of entries refers to the number of classes -defined. \index{class map!header} - -The class definitions are introduced by the keyword \verb+\Classes\+. -Each class definition has a single line sub-header consisting of a -name, an id number, the number of class members (or non-members) and a -keyword which must be \texttt{IN} or \texttt{NOTIN}. In the latter -case, the class consists of all words \textit{except} those listed -i.e. the class is defined by its complement. \index{class -map!complements} - -The following is a simple example of a class map file. -\begin{verbatim} - Name=Simple_Classes - Entries=97 - EscMode=HTK - Language=British - \Classes\ - ARTICLES 1 3 IN - A - AN - THE - COLOURS 2 4 IN - RED - BLUE - GREEN - YELLOW - SHAPES 3 6 IN - SQUARE - CIRCLE - ... - etc -\end{verbatim} -This class map file defines 97 distinct classes, the first of which is -a class called \texttt{ARTICLES} (id=1) with 3 members: (a, an, the). - -For simple word-based language models, the class map file is used to -define the class of unknown words. This is usually just the -complement of the vocabulary list. For example, a typical class map -file defining the \textit{unknown} class \texttt{!!UNKID} might -be\index{unknown class} \index{class map!defining unknown} -\begin{verbatim} - Name=Vocab_65k_V2.3 - Entries=1 - Language=American - EscMode=NONE - \Classes\ - !!UNKID 1 65426 NOTIN - A - ABATE - ABLE - ABORT - ABOUND - ... -\end{verbatim} -Since this case is so common, the tools also allow a plain -vocabulary list to be supplied in place of a proper class map file. -For example, supplying a class map file containing just -\begin{verbatim} - A - ABATE - ABLE - ABORT - ABOUND - ... -\end{verbatim} -would have an equivalent effect to the previous example provided that -the \htool{LCMap} configuration variables \texttt{UNKNOWNID} and -\texttt{UNKNOWNNAME} have been set in order to define the id and name -to be used for the unknown class. In the example given, including the -following two lines in the configuration file would have the desired -effect -\begin{verbatim} - LCMAP: UNKNOWNID = 1 - LCMAP: UNKNOWNNAME = !!UNKID -\end{verbatim} -Notice that the similarity with the special case of word lists -described in section~\ref{s:wmaps}. A plain word list can therefore -be used to define both a vocabulary subset and the unknown class. In -a conventional language model, these are, of course, the same thing. - -In a similar fashion to word maps, the input of a headerless class map -can be set to raw mode by setting the \htool{LCMap} configuration -variable \texttt{INCMAPRAW} and all class maps can be output in raw -mode \index{class map!as vocabulary list} by setting the configuration -variable -\texttt{OUTCMAPRAW} to true.\index{vocabulary list} - -\mysect{Gram Files}{gramfs} - -Statistical language models are estimated by counting the number of -events in a sample source text. These event counts are stored in -\textit{gram} files. Provided that they share a common word map, gram -files can be grouped together in arbitrary ways to form the raw data -pool from which a language model can be constructed. For example, a -text source containing 100m words could be processed and stored as two -gram files. A few months later, a 3rd gram file could be generated -from a newly acquired text source. This new gram file could then be -added to the original two files to build a new language model. The -original source text is not needed and the gram files need not be -changed. \index{gram files!format} - -A gram file consists of a header\index{ngram!files} followed by a -sorted list of $n$-gram counts.\index{gram files!header} The header -contains the following items, each written on a separate line -\begin{enumerate} - -\item $n$-gram size ie 2 for bigrams, 3 for trigrams, etc. (\texttt{Ngram=N}) - -\item Word map. Name of word map to be used with this gram - file. (\texttt{WMap=wmapname}) - -\item First gram. The first $n$-gram in the file (\texttt{gram1 = w1 w2 w3 ...}) - -\item Sequence number. If given then the actual word map must have a sequence - number which is greater than or equal to this. - (\texttt{SeqNo=nnn)} - -\item Last gram. The last $n$-gram in the file (\texttt{gramN = w1 w2 w3 ...}) - -\item Number of distinct $n$-grams in file. (\texttt{Entries = N}) - -\item Word map check. This is an optional field containing a word and its id. - It can be included as a double check that the correct word map - is being used to interpret this gram file. The given word is - looked up in the word map and if the corresponding id does not - match, an error is reported. (\texttt{WMCheck = word id}) - -\item Text source. This is an optional text string describing the text source - which was used to generate the gram file (\texttt{Source=...}). - -\end{enumerate} -For example, a typical gram file header might be -\begin{verbatim} - Ngram = 3 - WMap = US_Business_News - Entries = 50345980 - WMCheck = XEROX 340987 - Gram1 = AN ABLE ART - GramN = ZEALOUS ZOO OWNERS - Source = WSJ Aug 94 to Dec 94 -\end{verbatim} - -The $n$-grams themselves begin immediately following the line containing -the keyword \verb+\Grams\+\footnote{That is, the first byte of the -binary data immediately follows the newline character}. They are -listed in lexicographic sort order such that for the $n$-gram $\{w_1 w_2 -\ldots w_N\}$, $w_1$ varies the least rapidly and $w_N$ varies the -most rapidly. Each $n$-gram consists of a sequence of $N$ 3-byte word -ids followed by a single 1-byte count. If the $n$-gram occurred more -than 255 times, then it is repeated with the counts being interpreted -to the base 256. For example, if a gram file contains the -sequence\index{gram files!count encoding} -\begin{verbatim} - w1 w2 ... wN c1 - w1 w2 ... wN c2 - w1 w2 ... wN c3 -\end{verbatim} -corresponding to the $n$-gram $\{w_1 w_2 \ldots w_N\}$, the corresponding -count is\index{ngram!count encoding}\index{count encoding} -\[ - c_1 + c_2*256 + c_3*256^2 -\] - -When a group of gram files are used as input to a tool, they -must be organised so that the tool receives $n$-grams as a single stream -in sort order i.e.\ as far as the tool is concerned, the net effect -must be as if there is just a single gram file. Of course,\index{gram -file!input} a sufficient approach would be to open all input gram -files in parallel and then scan them as needed to extract the required -sorted $n$-gram sequence. However, if two $n$-gram files were organised -such that the last $n$-gram in one file was ordered before the first -$n$-gram of the second file, it would be much more efficient to open and -read the files in sequence. Files such as these are said to be -\texttt{sequenced} and in general, \HTK\ tools are supplied with a mix -of sequenced and non-sequenced files. To optimise input in this -general case, all \HTK\ tools which input gram files start by scanning -the header fields\index{sequenced gram files} \texttt{gram1} and -\texttt{gramN}. This information allows a sequence table to be -constructed which determines the order in which the constituent gram -file must be opened and closed. This sequence table is designed to -minimise the number of individual gram files which must be kept open -in parallel. \index{gram file!sequencing} - -This gram file sequencing is invisible to the \HTK\ user, but it -is important to be aware of it. When a large number of gram files are -accumulated to form a frequently used database, it may be worth -copying the gram files using \htool{LGCopy}. This will have the effect of -transforming the gram files into a fully sequenced set thus ensuring -that subsequent reading of the data is maximally efficient. - -\mysect{Frequency-of-frequency (FoF) Files}{FoFs} - -A FoF file contains a list of the number of times that an $n$-gram -occurred just once, twice, three times, \ldots, n times. Its format -is similar to a word map file. The header contains the following -information\index{frequency-of-frequency}\index{FoF files} -\begin{enumerate} -\item $n$-gram size ie 2 for bigrams, 3 for trigrams, etc. (\texttt{Ngram=N}) -\item the number of frequencies counted (i.e.\ the number of rows in the - FoF table (\texttt{Entries=nnn}) -\item Text source. This is an optional text string describing the text source -which was used to generate the gram files used to compute this -FoF file. (\texttt{Source=...}). -\end{enumerate} -More header fields may be defined later and the user is free to insert -others.\index{FoF file!header} - -The data part starts with the keyword \verb+\FoFs\+. Each -contains a list of the unigrams, bigrams, \ldots, $n$-grams occurring exactly -\texttt{k} times, where \texttt{k} is the number of the row of the -table -- the first row shows the number of $n$-grams occurring exactly -1 time, for example.\index{FoF file!counts} - -As an example, the following is a FoF file computed from a set of trigram gram -files. -\begin{verbatim} - Ngram = 3 - Entries = 100 - Source = WSJ Aug 94 to Dec 94 - \FoFs\ - 1020 23458 78654 - 904 19864 56089 - ... -\end{verbatim} - -FoF files are generated by the tool \texttt{LFoF}. This tool will -also output a list containing an estimate of the number of $n$-grams that -will occur in a language model for a given cut-off -- set the -configuration parameter {\tt LPCALC: TRACE = 3}.\index{lFoF@\htool{LFoF}} - - -\mysect{Word LM file formats}{HLMlmfileformats} -\index{ARPA-MIT LM format} -\index{LM file formats!binary} -\index{LM file formats!ultra} -\index{LM file formats!ARPA-MIT format} -\index{files!language models} -Language models can be stored on disk in three different file formats -- {\em text}, {\em binary} and {\em ultra}. The text format is the -standard ARPA-MIT formad used to distribute pre-computed language -models. The binary format is a proprietary file format which is -optimised for flexibility and memory usage. All tools will output -models in this format unless instructed otherwise. The {\em ultra} LM -format is a further development of the binary LM format optimised for -fast loading times and small memory footprint. At the same time, -models stored in this format cannot be pruned further in terms of size -and vocabulary. - -\mysubsect{The ARPA-MIT LM format}{HLMarpamitlm} -\index{ARPA-MIT LM format} -This format for storing $n$-gram back-off language models is defined -as follows -\begin{verbatim} - = [ { } ] - \data\ -
- - \end\ - = { } -\end{verbatim} -An ARPA-style language model file comes in two parts - the header and -the $n$-gram definitions. The header contains a description of the -contents of the file. -\begin{verbatim} -
= { ngram = } -\end{verbatim} -The first {\tt } gives the $n$-gram order and the second {\tt -} gives the number of $n$-gram entries stored. - -For example, a trigram language model consists of three sections - the -unigram, bigram and trigram sections respectively. The corresponding -entry in the header indicates the number of entries for that -section. This can be used to aid the loading-in procedure. The body -part contains all sections of the language model and is defined as -follows: -\begin{verbatim} - = { } - = \-grams: - { } - = \-grams: - { } - = { } - = { } -\end{verbatim} -Each $n$-gram definition starts with a probability value stored as -$\log_{10}$ followed by a sequence of $n$ words describing the actual -$n$-gram. In all sections excepts the last one this is followed by a -back-off weight which is also stored as $\log_{10}$. The following -example shows an extract from a trigram language model stored in the -ARPA-text format. - -\begin{verbatim} -\data\ -ngram 1=19979 -ngram 2=4987955 -ngram 3=6136155 - -\1-grams: --1.6682 A -2.2371 --5.5975 A'S -0.2818 --2.8755 A. -1.1409 --4.3297 A.'S -0.5886 --5.1432 A.S -0.4862 -... - -\2-grams: --3.4627 A BABY -0.2884 --4.8091 A BABY'S -0.1659 --5.4763 A BACH -0.4722 --3.6622 A BACK -0.8814 -... - -\3-grams: --4.3813 !SENT_START A CAMBRIDGE --4.4782 !SENT_START A CAMEL --4.0196 !SENT_START A CAMERA --4.9004 !SENT_START A CAMP --3.4319 !SENT_START A CAMPAIGN -... -\end\ -\end{verbatim} - -\mysubsect{The modified ARPA-MIT format}{HLMmodifiedarpamitlm} -The efficient loading of the language model file requires prior -information as to memory requirements. Such information is partially -available from the header of the file which shows how many entries -will be found in each section of the model. From the back-off nature -of the language model it is clear that the back-off weight associated -with an $n$-gram $(w_1, w_2, \ldots, w_{n-1})$ is only useful when -$p(w_n | w_1, word_2, \ldots, w_{n-1})$ is an explicitly entry in the -file or computed via backing-off to the corresponding -$(n-1)$-grams. In other words, the presence of a back-off weight -associated with the $n$-gram $w_1, w_2, \ldots, w_{n-1}$ can be used -to indicate the existence of explicit $n$-grams $w_1, w_2, \ldots, -w_n$. The use of such information can greatly reduce the storage -requirements of the language model since the back-off weight requires -extra storage. For example, considering the statistics shown in table -\ref{fg_stats}, such selective memory allocation can result in dramatic -savings. -\begin{table} - \center - \begin{tabular}{|l|r|r|} \hline - {Component} & {\# with back-off weights} & {Total} \\ \hline - {unigram} & 65,467 & 65,467 \\ \hline - {bigram} & 2,074,422 & 6,224,660 \\ \hline - {trigram} & 4,485,738 & 9,745,297 \\ \hline - {fourgram} & 0 & 9,946,193 \\ \hline - \end{tabular} - \caption{Component statistics for a 65k word fourgram language model with - cut-offs: bigram 1, trigram 2, fourgram 2.} - \label{fg_stats} -\end{table} -This information is accommodated by modifying the syntax and semantics -of the rule -\begin{verbatim} - = { } [ ] -\end{verbatim} -whereby a back-off weight associated with $n$-gram $(w_1, w_2,\ldots, -w_{n-1})$ indicates the existence of $n$-grams $(w_1, w_2, \ldots, -w_n)$. This version will be referred to as the modified ARPA-text -format. - -\mysubsect{The binary LM format}{HLMbinarylmformat} -\index{LM file formats!binary} -This format is the binary version of modified ARPA-text format. It was -designed to be a compact, self-contained format which aids the fast -loading of large language model files. The format is similar to the -original ARPA-text format with the following modification -\begin{verbatim} -
= { (ngram =) | (ngram ~) } -\end{verbatim} -The first alternative in the rule describes a section stored as text, -the second one describes a section stored in binary. The unigram -section of a language model file is always stored as text. -\begin{verbatim} - = | - = { } [ ] - = { } [ ] -\end{verbatim} -In the above definition, {\tt } is a 1-byte flags field, {\tt -} is a 1-byte unsigned number indicating the total size in -bytes of the remaining fields, {\tt } is a 4-bytes field for -the $n$-gram probability, {\tt } is a numeric word id, and -the last {\tt } is the back-off weight. The numeric word -identifier is an unsigned integer assigned to each word in the order -of occurrence of the words in the unigram section. The minimum size of -this field is 2-bytes as used in vocabulary lists with up to 65,5355 -words. If this number is exceeded the field size is automatically -extended to accommodate all words. The size of the fields used to -store the probability and back-off weight are typically 4 bytes, -however this may vary on different computer architectures. The least -significant bit of the flags field indicates the presence/absence of a -back-off weight with corresponding values 1/0. The remaining bits of -the flags field are not used at present. - - - -\mysect{Class LM file formats}{HLMclasslmfileformats} -\index{files!language models} -\index{Class language models} -Class language models replace the word language model described in -section \ref{s:HLMlmfileformats} with an identical component which -models class $n$-grams instead of word $n$-grams. They add to this a -second component which includes the deterministic word-to-class -mapping with associated word-given-class probabilities, expressed -either as counts (which are normalised to probabilities on loading) or -as explicit natural log probabilities. These two components are then -either combined into a single file or are pointed to with a special -link file. - - -\mysubsect{Class counts format}{HLMclasscountslmformat} -\index{LM file formats!class counts} -The format of a word-given-class counts file, as generated using the -\texttt{-q} option from \htool{Cluster}, is as follows:\\ -\texttt{Word|Class counts}\\ -\textit{[blank line]}\\ -\texttt{Derived from: }\\ -\texttt{Number of classes: }\\ -\texttt{Number of words: }\\ -\texttt{Iterations: }\\ -\textit{[blank line]}\\ -\texttt{Word Class name Count}\\ -followed by one line for each word in the model of the form:\\ -\texttt{ CLASS }\\ - -The fields are mostly self-explanatory. The {\tt Iterations:} header -is for information only and records how many iterations had been -performed to produce the classmap contained within the file, and the -{\tt Derived from:} header is similarly also for display purposes -only. Any number of headers may be present; the header section is -terminated by finding a line beginning with the four characters making -up {\tt Word}. The colon-terminated headers may be in any order. - -{\tt CLASS} must be the name of a class in the classmap -(technically actually the wordmap) used to build the class-given-class -history $n$-gram component of the language model -- the file built by -\htool{LBuild}. In the current implementation these class names are -restricted to being of the form {\tt CLASS}, although a -modification to the code in \htool{LModel.c} would allow this -restriction to be removed. Each line after the header specifies the -count of each word and the class it is in, so for example\\ -\texttt{THE CLASS73 1859}\\ -would specify that the word {\tt THE} was in class {\tt CLASS73} and -occurred 1859 times. - - -\mysubsect{The class probabilities format}{HLMclassprobslmformat} -\index{LM file formats!class probabilities} -The format of a word-given-class probabilities file, as generated using the -\texttt{-p} option from \htool{Cluster}, is very similar to that of -the counts file described in the previous sub-section, and is as follows:\\ -\texttt{Word|Class probabilities}\\ -\textit{[blank line]}\\ -\texttt{Derived from: }\\ -\texttt{Number of classes: }\\ -\texttt{Number of words: }\\ -\texttt{Iterations: }\\ -\textit{[blank line]}\\ -\texttt{Word Class name Probability (log)}\\ -followed by one line for each word in the model of the form:\\ -\texttt{ CLASS }\\ - -As in the previous section, the fields are mostly self-explanatory. -The {\tt Iterations:} header is for information only and records how -many iterations had been performed to produce the classmap contained -within the file, and the {\tt Derived from:} header is similarly also -for display purposes only. Any number of headers may be present; the -header section is terminated by finding a line beginning with the four -characters making up {\tt Word}. The colon-terminated headers may be -in any order. - -{\tt CLASS} must be the name of a -class in the classmap (technically actually the wordmap) used to build -the class-given-class history $n$-gram component of the language model --- the file built by \htool{LBuild}. In the current implementation -these class names are restricted to being of the form {\tt -CLASS}, although a modification to the code in \htool{LModel.c} -would allow this restriction to be removed. Each {\tt } -specifies the natural logarithm of the probability of the word given -the class, or -99.9900 if the probability of the word is less than -$1.0\times10^{-20}$. - - -\mysubsect{The class LM three file format}{HLMclasslmformat} -\index{LM file formats!class} -A special class language model file, generated by \htool{LLink}, -links together either the word-given-class probability or count files -described above (either can be used to give the same results) with a -class-given-class history $n$-gram file constructed using -\htool{LBuild}. It is a simple text file which specifies the filename -of the two relevant components: - -\noindent\texttt{Class-based LM}\\ -\texttt{Word|Class counts: } $\;$or$\;$ \texttt{Word|Class probabilities: }\\ -\texttt{Class|Class grams: }\\ -The second line must state {\tt counts} or {\tt probabilities} as -appropriate for the relevant file. - - -\mysubsect{The class LM single file format}{HLMclassSinglmformat} -\index{LM file formats!class} -An alternative to the class language model file described in section -\ref{s:HLMclasslmformat} is the composite single-file class language -model file, produced by {\htool{LLink} \tt -s} -- this does {\it not} -require the two component files to be present since it integrates them -into a single file. The format of this resulting file is as follows: - -\begin{verbatim} - CLASS MODEL - Word|Class - - Derived from: - Number of classes: - Number of words: - Iterations: - - Class n-gram counts follow; word|class component is at end of file. -\end{verbatim} -The second line must state either {\tt counts} or {\tt probabilities} as -appropriate for the relevant component file used when constructing -this composite file. The fields are mostly self-explanatory. The -{\tt Iterations:} header is for information only and records how many -iterations had been performed to produce the classmap contained within -the file, and the {\tt Derived from:} header is similarly also for -display purposes only. Any number of headers may be present; the -header section is terminated by finding a line beginning with the five -characters making up {\tt Class}. The colon-terminated headers may be -in any order. - -The class-given-classes $n$-gram component of the model then follows -immediately in any of the formats supported by word $n$-gram language -models -- ie. those described in section \ref{s:HLMlmfileformats}. No -blank lines are expected between the header shown above and the -included model, although they may be supported by the embedded model. - -Immediately following the class-given-classes $n$-gram component -follows the body of the word-given-class probabilities or counts file -as described in sections \ref{s:HLMclasscountslmformat} and -\ref{s:HLMclassprobslmformat} above. That is, the remainder of the -file consists of lines of the form: -\begin{verbatim} - CLASS -\end{verbatim} -One line is expected for each word as specified in the header at the -top of the file. Integer word counts should be provided in the final -field for each word in the case of a counts file, or word-given-class -probabilities if a probabilities file -- as specified by the second -line of the overall file. In the latter case each {\tt } -specifies the natural logarithm of the probability of the word given -the class, or -99.9900 if the probability of the word is less than -$1.0\times10^{-20}$. - -{\tt CLASS} must be the name of a -class in the classmap (technically actually the wordmap) used to build -the class-given-class history $n$-gram component of the language model --- the file built by \htool{LBuild}. In the current implementation -these class names are restricted to being of the form {\tt -CLASS}, although a modification to the code in \htool{LModel.c} -would allow this restriction to be removed. - - -\mysect{Language modelling tracing}{HLMlibtracing}\index{tracing} -Each of the \HTK\ language modelling tools provides its own trace -facilities, as documented with the relevant tool in chapter -\ref{c:toolref}. The standard libraries also provide their own trace -settings, which can be set in a passed configuration file. Each of -the supported trace levels is documented below with the octal value -necessary to enable it. - -\mysubsect{LCMap}{LCMapTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Class map loading -\end{itemize} - -\mysubsect{LGBase}{LGBaseTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Trace $n$-gram squashing -\item 0004 Trace $n$-gram buffer sorting -\item 0010 Display $n$-gram input set tree -\item 0020 Display maximum parallel input streams -\item 0040 Trace parallel input streaming -\item 0100 Display information on FoF input/output -\end{itemize} - -\mysubsect{LModel}{LModelTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Trace loading of language models -\item 0004 Trace saving of language models -\item 0010 Trace word mappings -\item 0020 Trace $n$-gram lookup -\end{itemize} - -\mysubsect{LPCalc}{LPCalcTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 FoF table tracing -\end{itemize} - -\mysubsect{LPMerge}{LPMergeTrace} -\begin{itemize} -\item 0001 Top level tracing -\end{itemize} - -\mysubsect{LUtil}{LUtilTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Show header processing -\item 0004 Hash table tracing -\end{itemize} - -\mysubsect{LWMap}{LWMapTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Trace word map loading -\item 0004 Trace word map sorting -\end{itemize} - - -\mysect{Run-time configuration parameters}{HLMconfigParms}\index{configuration parameters!operating -environment} -Section \ref{s:openvsum} lists the major standard \HTK\ configuration -parameter options whilst the rest of chapter \ref{c:openviron} -describes the general \HTK\ environment and how to set those -configuration parameters, whilst chapter \ref{c:confvars} provides a -comprehensive list. For ease of reference those parameters -specifically relevant to the language modelling tools are reproduced -in table \ref{t:openvcparmsLM}. - -\begin{center} -\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{6.4cm}|} \hline -Module & Name & Description \\ \hline -\htool{HShell} & \texttt{ABORTONERR} & Core dump on error (for debugging) \\ -\htool{HShell} & \texttt{HLANGMODFILTER} & Filter for language model file input\\ -\htool{HShell} & \texttt{HLABELFILTER} & Filter for Label file input\\ -\htool{HShell} & \texttt{HDICTFILTER} & Filter for Dictionary file input \\ -\htool{HShell} & \texttt{LGRAMFILTER} & Filter for gram file input\\ -\htool{HShell} & \texttt{LWMAPFILTER} & Filter for word map file input\\ -\htool{HShell} & \texttt{LCMAPFILTER} & Filter for class map file input\\ -\htool{HShell} & \texttt{HLANGMODOFILTER} & Filter for language model file output\\ -\htool{HShell} & \texttt{HLABELOFILTER} & Filter for Label file output\\ -\htool{HShell} & \texttt{HDICTOFILTER} & Filter for Dictionary file output \\ -\htool{HShell} & \texttt{LGRAMOFILTER} & Filter for gram file output\\ -\htool{HShell} & \texttt{LWMAPOFILTER} & Filter for word map file output\\ -\htool{HShell} & \texttt{LCMAPOFILTER} & Filter for class map file output\\ -\htool{HShell} & \texttt{MAXTRYOPEN} & Number of file open retries \\ -\htool{HShell} & \texttt{NONUMESCAPES} & Prevent string output using \verb+\012+ format \\ -\htool{HShell} & \texttt{NATURALREADORDER} & Enable natural read order for HTK binary files \\ -\htool{HShell} & \texttt{NATURALWRITEORDER} & Enable natural write order for HTK binary files \\ -\htool{HMem} & \texttt{PROTECTSTAKS} & Warn if stack is cut-back (debugging) \\ - & \texttt{TRACE} & Trace control (default=0) \\ - & \texttt{STARTWORD} & Set sentence start symbol ({\tt }) \\ - & \texttt{ENDWORD} & Set sentence end symbol ({\tt }) \\ - & \texttt{UNKNOWNNAME} & Set OOV class symbol ({\tt !!UNK}) \\ - & \texttt{RAWMITFORMAT} & Disable \HTK\ escaping for LM tools\\ -\htool{LWMap} & \texttt{INWMAPRAW} & Disable \HTK\ escaping for input word lists and maps \\ -\htool{LWMap} & \texttt{OUTWMAPRAW} & Disable \HTK\ escaping for output word lists and maps \\ -\htool{LCMap} & \texttt{INCMAPRAW} & Disable \HTK\ escaping for input class lists and maps \\ -\htool{LCMap} & \texttt{OUTCMAPRAW} & Disable \HTK\ escaping for output class lists and maps \\ -\htool{LCMap} & \texttt{UNKNOWNID} & Set unknown symbol class ID (1)\\ -\htool{LCMap} & \texttt{USEINTID} & Use 4 byte ID fields to save - binary models (see section \ref{s:HLMuseintid})\\ -\htool{LPCalc} & \texttt{UNIFLOOR} & Unigram floor count (1)\\ -\htool{LPCalc} & \texttt{KRANGE} & Good-Turing discounting range (7)\\ -\htool{LPCalc} & \texttt{\textit{n}G\_CUTOFF} & \textit{n}-gram cutoff - (eg. \texttt{2G\_CUTOFF}) (1)\\ -\htool{LPCalc} & \texttt{DCTYPE} & Discounting type - (\texttt{TG} for Turing-Good or \texttt{ABS} for Absolute) -% \texttt{LIN} for Linear) - not fully implemented (!) - (\texttt{TG})\\ -\htool{LGBase} & \texttt{CHECKORDER} & Check N-gram ordering in files \\ -\hline -\end{tabular} -\tabcap{openvcparmsLM}{Configuration Parameters used in Operating Environment} -\end{center} - - -\mysubsect{USEINTID}{HLMuseintid}\index{configuration -parameters!\texttt{USEINTID}} - -Setting this to {\tt T} as opposed to its default of {\tt F} forces the -\htool{LModel} library to save language models using an unsigned int for each -word ID as opposed to the default of an unsigned short. In most -systems these lengths correspond to 4-byte and 2-byte fields -respectively. Note that if you do not set this that \htool{LModel} -will automatically choose an int field size if the short field is too -small -- the exception to this is if you have compiled with {\tt -LM\_ID\_SHORT} which limits the field size to an unsigned short, in -which case the tool will be forced to abort; see section -\ref{s:HLMlmidshort} below. - - - -\mysect{Compile-time configuration -parameters}{HLMctconfigParms}\index{configuration -parameters!compile-time} -There are some compile-time switches which may be set when building -the language modelling library and tools. - -\mysubsect{LM\_ID\_SHORT}{HLMlmidshort}\index{compile-time parameters!\texttt{LM\_ID\_SHORT}} - -When compiling the \HTK\ language modelling library, setting {\tt -LM\_ID\_SHORT} (for example by passing {\tt -D LM\_ID\_SHORT} to the C -compiler) forces the compiler to use an unsigned short for each -language model ID it stores, as opposed to the default of an unsigned -int -- in most systems this will result in either a 2-byte integer or -a 4-byte integer respectively. If you set this then you {\it must} -ensure you also set {\tt LM\_ID\_SHORT} when compiling the \HTK\ -language modelling tools too, otherwise you will encounter a mismatch -leading to strange results! (Your compiler may warn of this error, -however). For this reason it is safest to set {\tt LM\_ID\_SHORT} via a -{\tt \#define} in {\tt LModel.h}. You might want to set this if you -know how many distinct word ids you require and you do not want to -waste memory, although on some systems using shorts can actually be -slower than using a full-size int. - -Note that the run-time {\tt USEINTID} parameter described in section -\ref{s:HLMuseintid} above only affects the size of ID fields when -saving a binary model from {\tt LModel}, so is independent of {\tt -LM\_ID\_SHORT}. The only restriction is that you cannot load or save a -model with more ids than can fit into an unsigned short when {\tt -LM\_ID\_SHORT} is set -- the tools will abort with an error should you -try this. - - -\mysubsect{LM\_COMPACT}{HLMcompact}\index{compile-time parameters!\texttt{LM\_COMPACT}} - -When {\tt LM\_COMPACT} is defined at compile time, when a language model -is loaded then its probabilities are compressed into an unsigned short as opposed -to being loaded into a float. The exact size of these types -depends on your processor architecture, but in general an unsigned -short is more than half as small as a float. Using the compact -storage type therefore significantly reduces the accuracy with which -probabilities are stored. - -The side effect of setting this is therefore reduced accuracy when -running a language model, such as when using \htool{LPlex}; or a loss -of accuracy when rebuilding from an existing language model using -\htool{LMerge}, \htool{LAdapt}, \htool{LBuild} or \htool{HLMCopy}. - - -\mysubsect{LMPROB\_SHORT}{HLMprobshort}\index{compile-time parameters!\texttt{LMPROB\_SHORT}} - -Setting {\tt LMPROB\_SHORT} causes language model probabilities to be -stored and loaded using a short type. Unlike {\tt LM\_COMPACT}, this -option certainly {\it does} affect the writing of language model -files. If you save a file using this format then you must ensure you -reload it in the same way to ensure you obtain sensible results. - - -\mysubsect{INTERPOLATE\_MAX}{HLMinterpmax}\index{compile-time parameters!\texttt{INTERPOLATE\_MAX}} - -If the library and tools are compiled with {\tt INTERPOLATE\_MAX} then -language model interpolation in \htool{LPlex} and the \htool{LPMerge} -library (which is used by \htool{LAdapt} and \htool{LMerge}) will -ignore the individual model weights and always pick the highest -probability from each of the models at any given point. Note that -this option will \textit{not} normalise the models. - - -\mysubsect{SANITY}{HLMinterpmax2}\index{compile-time parameters!\texttt{SANITY}} - -Turning on {\tt SANITY} when compiling the library will add a word map -check to \htool{LGBase} and some sanity checks to \htool{LPCalc}. - - -\mysubsect{INTEGRITY\_CHECK}{HLMintegcheck}\index{compile-time parameters!\texttt{INTEGRITY\_CHECK}} - -Compiling with {\tt INTEGRITY\_CHECK} will add run-time integrity -checking to the \htool{Cluster} tool. Specifically it will check that -the class counts have not become corrupted and that all maximum -likelihood move updates have been correctly calculated. You should -not need to enable this unless you suspect a major tool problem, and -doing so will slow down the tool execution. It could probe useful if -you wanted to adapt the way the clustering works, however. diff --git a/HTKBook/hlmfund.tex b/HTKBook/hlmfund.tex deleted file mode 100644 index 77ad6fb..0000000 --- a/HTKBook/hlmfund.tex +++ /dev/null @@ -1,849 +0,0 @@ -% -% !HVER!hlmfund [SJY 05/04/97] -% -% Updated (and about 90% rewritten) - Gareth Moore 16/01/02 - 27/03/02 -% - -\mychap{Fundamentals of language modelling}{hlmfund} - -The \HTK\ language modelling tools are designed for constructing and -testing statistical $n$-gram language models. This chapter introduces -language modelling and provides an overview of the supplied tools. It -is strongly recommended that you read this chapter and then work -through the tutorial in the following chapter -- this will provide you -with everything you need to know to get started building language models. - -\sidepic{HLMoperation}{80}{ -An $n$-gram is a sequence of $n$ symbols (e.g. words, syntactic -categories, etc) and an $n$-gram language model (LM) is used to -predict each symbol in the sequence given its $n-1$ predecessors. It -is built on the assumption that the probability of a specific $n$-gram -occurring in some unknown test text can be estimated from the -frequency of its occurrence in some given training text. Thus, as -illustrated by the picture above, $n$-gram construction is a three stage -process. Firstly, the training text is scanned and its $n$-grams are -counted and stored in a database of \textit{gram} files. In the -second stage some words may be mapped to an out of vocabulary class or -other class mapping may be applied, and then in the final stage -the counts in the resulting gram files are used to compute -$n$-gram probabilities which are stored in the \textit{language model} -file. Lastly, the \textit{goodness} of a language model can be -estimated by using it to compute a measure called \textit{perplexity} -on a previously unseen test set. In general, the better a language model -then the lower its test-set perplexity.} - -Although the basic principle of an $n$-gram LM is very simple, in -practice there are usually many more potential $n$-grams than can ever -be collected in a training text in sufficient numbers to yield robust -frequency estimates. Furthermore, for any real application such as -speech recognition, the use of an essentially static and finite -training text makes it difficult to generate a single LM which is -well-matched to varying test material. For example, an LM trained on -newspaper text would be a good predictor for dictating news -reports but the same LM would be a poor predictor for personal letters -or a spoken interface to a flight reservation system. A final -difficulty is that the \textit{vocabulary} of an $n$-gram LM is finite -and fixed at construction time. Thus, if the LM is word-based, it can -only predict words within its vocabulary and furthermore new words -cannot be added without rebuilding the LM. - -The following four sections provide a thorough introduction to the -theory behind $n$-gram models. It is well worth reading through this -section because it will provide you with at least a basic -understanding of what many of the tools and their parameters actually -do -- you can safely skip the equations if you choose because the text -explains all the most important parts in plain English. The final -section of this chapter then introduces the tools provided to -implement the various aspects of $n$-gram language modelling that have -been described. - - -\mysect{{\it n}-gram language models}{ngramLMs} -Language models estimate the probability of a word sequence, $\hat -P(w_1, w_2, \ldots, w_m)$ -- that is, they evaluate $P(w_i)$ as defined in equation -\ref{e:3} in chapter \ref{c:fundaments}.\footnote{The theory components of this chapter -- -these first four sections -- are condensed from portions of -{\textbf{``Adaptive Statistical Class-based Language Modelling''}, -G.L. Moore; \textit{Ph.D thesis, Cambridge University} 2001}} - -The probability $\hat P(w_1, w_2, \ldots, w_m)$ can be decomposed as a -product of conditional probabilities: -\begin{equation} -\hat P(w_1, w_2, \ldots, w_m) = \prod_{i=1}^{m} \hat P(w_i \;|\; w_1, -\ldots, w_{i-1})\label{cond_prob_model} -\end{equation} - - -\mysubsect{Word {\it n}-gram models}{wordngrams} -Equation \ref{cond_prob_model} presents an opportunity for -approximating $\hat{P}(\cal{W})$ by limiting the context: -\begin{equation} -\hat P(w_1, w_2, \ldots, w_m) \simeq \prod_{i=1}^{m} \hat P(w_i \;|\; w_{i-n+1}, -\ldots, w_{i-1})\label{ngram_model} -\end{equation} -for some $n \geqslant 1$. If language is assumed to be ergodic -- that -is, it has the property that the probability of any state can be -estimated from a large enough history independent of the starting -conditions\footnote{See section 5 of [Shannon 1948] -for a more formal definition of ergodicity.} -- then for sufficiently high $n$ equation -\ref{ngram_model} is exact. Due to reasons of data sparsity, however, -values of $n$ in the range of 1 to 4 inclusive are typically used, and -there are also practicalities of storage space for these estimates to -consider. Models using contiguous but limited context in this way are -usually referred to as $n$-gram language models, and the conditional -context component of the probability (``$w_{i-n+1}, \ldots, w_{i-1}$'' -in equation \ref{ngram_model}) is referred to as the {\it history}. - -Estimates of probabilities in $n$-gram models are commonly based on maximum -likelihood estimates -- that is, by counting events in context on some given -training text: -\begin{equation} -\hat P(w_i | w_{i-n+1}, \ldots, w_{i-1}) = -\frac{C(w_{i-n+1}, \ldots, w_i)}{C(w_{i-n+1}, \ldots, w_{i-1})}\label{ngramcountdiv} -\end{equation} -where $C(.)$ is the count of a given word sequence in the -training text. Refinements to this maximum likelihood estimate are -described later in this chapter. - -The choice of $n$ has a significant effect on the number of potential -parameters that the model can have, which is maximally bounded by -$|\mathbb{W}|^n$, where $\mathbb{W}$ is the set of words in the -language model, also known as the {\it vocabulary}. A 4-gram model -with a typically-sized 65,000 word vocabulary can therefore -potentially have $65,000\,^4 -\simeq 1.8\times10^{19}$ parameters. In practice, however, only a -small subset of the possible parameter combinations represent likely -word sequences, so the storage requirement is far less than this -theoretical maximum -- of the order of $10^{11}$ times less in -fact.\footnote{Based on the analysis of 170 million words of newspaper -and broadcast news text.} Even given this significant reduction in -coverage and a very large training text\footnote{A couple of hundred -million words, for example.} there are still many plausible word -sequences which will not be encountered in the training text, or will -not be found a statistically significant number of times. It would not -be sensible to assign all unseen sequences zero probability, so -methods of coping with low and zero occurrence word tuples have been -developed. This is discussed later in section \ref{robust_estimation}. - -It is not only the storage space that must be considered, however -- -it is also necessary to be able to attach a reasonable degree of -confidence to the derived estimates. Suitably large quantities of -example training text are also therefore required to ensure statistical -significance. Increasing the amount of training text not only gives -greater confidence in model estimates, however, but also demands more -storage space and longer analysis periods when estimating model -parameters, which may place feasibility limits on how much data can be -used in constructing the final model or how thoroughly it can be -analysed. At the other end of the scale for restricted domain models -there may be only a limited quantity of suitable in-domain text -available, so local estimates may need smoothing with global priors. -In addition, if language models are to be used for speech recognition -then it is good to train them on {\it precise} acoustic transcriptions -where possible -- that is, text which features the hesitations, -repetitions, word fragments, mistakes and all the other sources of -deviation from purely grammatical language that characterise everyday -speech. However, such acoustically accurate transcriptions are in -limited supply since they must be specifically prepared; real-world -transcripts as available for various other purposes almost -ubiquitously correct any disfluencies or mistakes made by speakers. - - -\mysubsect{Equivalence classes}{HLMequivalenceclasses} -The word $n$-gram model described in equation \ref{ngram_model} uses -an equivalence mapping on the word history which assumes that all -contexts which have the same most recent $n-1$ words all have the same -probability. This concept can be expressed more generally by defining -an equivalence class function that acts on word histories, $\mathcal -E(.)$, such that if $\mathcal E(x) = \mathcal E(y)$ then $\forall w:$ -$P(w | x) = P(w | y)$: -\begin{equation} -P(w_i \;|\; w_1, w_2, \ldots, w_{i-1}) = -P(w_i \;|\; \mathcal E(w_1, w_2, \ldots, w_{i-1}))\label{equiv_cond_prob_model} -\end{equation} - -A definition of $\mathcal{E}$ that describes a word $n$-gram is thus: -\begin{equation} -\mathcal E_{\textrm{word-{\it n}-gram}}(w_1, \ldots, w_{i}) = \mathcal E(w_{i-n+1}, \ldots, w_{i}) -\end{equation} - -In a good language model the choice of $\mathcal{E}$ should be such that it -provides a reliable predictor of the next word, resulting in classes -which occur frequently enough in the training text that they can be -well modelled, and does not result in so many distinct history -equivalence classes that it is infeasible to store or analyse all the -resultant separate probabilities. - - -\mysubsect{Class {\it n}-gram models}{HLMclassngram}\label{classngram-description} -One method of reducing the number of word history equivalence classes -to be modelled in the $n$-gram case is to consider some words as -equivalent. This can be implemented by mapping a set of words to a -word class $g \in \mathbb{G}$ by using a classification function $G(w) -= g$. If any class contains more than one word then this mapping will -result in less distinct word classes than there are words, -$|\mathbb{G}| < |\mathbb{W}|$, thus reducing the number of separate -contexts that must be considered. The equivalence classes can then be -described as a sequence of these classes: -\begin{equation} -\mathcal E_{\textrm{class-{\it n}-gram}}(w_1, \ldots, w_{i}) = \mathcal -E(G(w_{i-n+1}), \ldots, G(w_{i}))\label{equiv_classes} -\end{equation} - -A deterministic word-to-class mapping like this has some advantages -over a word $n$-gram model since the reduction in the number of -distinct histories reduces the storage space and training data -requirements whilst improving the robustness of the probability -estimates for a given quantity of training data. Because multiple -words can be mapped to the same class, the model has the ability to -make more confident assumptions about infrequent words in a class -based on other more frequent words in the same class\footnote{Since it -is assumed that words are placed in the same class because they share -certain properties.} than is possible in the word $n$-gram case -- and -furthermore for the same reason it is able to make generalising -assumptions about words used in contexts which are not explicitly -encountered in the training text. These gains, however, clearly -correspond with a loss in the ability to distinguish between different -histories, although this might be offset by the ability to -choose a higher value of $n$. - -The most commonly used form of class $n$-gram model uses a single -classification function, $G(.)$, as in equation \ref{equiv_classes}, -which is applied to each word in the $n$-gram, including the word which -is being predicted. Considering for clarity the bigram\footnote{By convention -{\it unigram} refers to a 1-gram, -{\it bigram} indicates a 2-gram and {\it trigram} is a 3-gram. There is no -standard term for a 4-gram.} -case, then given $G(.)$ the language model has the terms $w_i$, -$w_{i-1}$, $G(w_i)$ and $G(w_{i-1})$ available to it. The probability -estimate can be decomposed as follows: -\begin{eqnarray} -P_{\textrm{class'}}(w_i \;|\; w_{i-1}) -& = & P(w_i \;|\; G(w_i), G(w_{i-1}), w_{i-1} )\nonumber\\ - & \qquad\qquad\times & P(G(w_i) \;|\; G(w_{i-1}), w_{i-1}) -\label{chap2equalToOne} -\end{eqnarray} - -It is assumed that $P(w_i -\;|\; G(w_i), G(w_{i-1}), w_{i-1})$ is independent of $G(w_{i-1})$ and -$w_{i-1}$ and that $P(G(w_i) \;|\; G(w_{i-1}), w_{i-1})$ is -independent of $w_{i-1}$, resulting in the model: -\begin{equation} -P_{\textrm{class}}(w_i \;|\; w_{i-1}) = P(w_i \;|\; G(w_{i})) \;\times\; -P(G(w_i) \;|\; G(w_{i-1})) -\label{normclass} -\end{equation} - -Almost all reported class $n$-gram work using statistically-found classes -is based on clustering algorithms which optimise $G(.)$ on the basis -of bigram training set likelihood, even if the class map is to be used -with longer-context models. It is interesting to -note that this approximation appears to works well, however, -suggesting that the class maps found are in some respects ``general'' -and capture some features of natural language which apply irrespective -of the context length used when finding these features. - - -\mysect{Statistically-derived Class Maps}{HLMclustering}\label{clustering_section} -An obvious question that arises is how to compute or otherwise obtain -a class map for use in a language model. This section discusses -one strategy which has successfully been used. - -Methods of statistical class map construction seek to maximise the -likelihood of the training text given the class model by making -iterative controlled changes to an initial class map -- in order to -make this problem more computationally feasible they typically use a -deterministic map. - -\mysubsect{Word exchange algorithm}{HLMexchangealg}\label{KN-clustering} -[Kneser and Ney 1993]\footnote{R. Kneser and H. Ney, -\textbf{``Improved Clustering Techniques for Class-Based Statistical Language -Modelling''}; \textit{Proceedings of the European Conference on Speech -Communication and Technology} 1993, pp. 973-976} describes an -algorithm to build a class map by starting from some initial guess at -a solution and then iteratively searching for changes to improve the -existing class map. This is repeated until some minimum change -threshold has been reached or a chosen number of iterations have been -performed. The initial guess at a class map is typically chosen by a -simple method such as randomly distributing words amongst classes or -placing all words in the first class except for the most frequent -words which are put into singleton classes. Potential moves are then -evaluated and those which increase the likelihood of the training text -most are applied to the class map. The algorithm is described in -detail below, and is implemented in the \HTK\ tool \htool{Cluster}. - -Let $\mathcal{W}$ be the training text list of words $(w_1, w_2, w_3, -\ldots)$ and let $\mathbb{W}$ be the set of all words in -$\mathcal{W}$. -From equation -\ref{cond_prob_model} it follows that: -\begin{equation} -P_\mathrm{class}(\mathcal{W}) \;=\; \prod_{x, y \in \mathbb{W}} -P_\mathrm{class}(x \;|\; y)^{C(x,y)}\label{classnorm_totprob} -\end{equation} -where $(x, y)$ is some word pair `$x$' preceded by `$y$' and $C(x, y)$ -is the number of times that the word pair `$y$ $x$' occurs in the list -$\mathcal{W}$. - -In general evaluating equation \ref{classnorm_totprob} will lead to -problematically small values, so logarithms can be used: -\begin{equation} -\log P_\mathrm{class}(\mathcal{W}) \;=\; \sum_{x, y \in \mathbb{W}} -C(x, y) . \log P_\mathrm{class}(x \;|\; y) \label{classnorm_logprob} -\end{equation} - -Given the definition of a class $n$-gram model in equation -\ref{normclass}, the maximum likelihood bigram -probability estimate of a word is: -\begin{eqnarray} -P_\mathrm{class}(w_i \;|\; w_{i-1}) & = & - \frac{C(w_i)}{C(G(w_i))} - \times - \frac{C\left(G(w_i), G(w_{i-1})\right)} - {C(G(w_{i-1}))} \label{classnorm_breakdown} -\end{eqnarray} -where $C(w)$ is the number of times that the word `$w$' occurs in the -list $\mathcal{W}$ and $C(G(w))$ is the number of times that the class -$G(w)$ occurs in the list resulting from applying $G(.)$ to each entry -of $\mathcal{W}$;\footnote{That is, $C(G(w))=\sum_{x: -G(x)=G(w)}C(x)$.} similarly $C(G(w_x), G(w_y))$ is the count of the -class pair `$G(w_y)$ $G(w_x)$' in that resultant list. - -Substituting equation \ref{classnorm_breakdown} into equation \ref{classnorm_logprob} -and then rearranging gives: -\begin{eqnarray} -\log P_\mathrm{class}(\mathcal{W}) & \;=\; & -\sum_{x,y \in \mathbb{W}} C(x,y) . \log\left( - \frac{C(x)}{C(G(x))} \times \frac{C(G(x),G(y))}{C(G(y))} - \right) \nonumber -\\ -&\;=\;& \sum_{x,y \in \mathbb{W}} C(x,y) . \log - \left(\frac{C(x)}{C(G(x))}\right) - \;+\; \sum_{x,y \in \mathbb{W}} C(x,y) - . \log\left(\frac{C(G(x),G(y))}{C(G(y))}\right) \nonumber -\\ -&\;=\;& \sum_{x \in \mathbb{W}} C(x) . \log \left(\frac{C(x)}{C(G(x))}\right) - \;+\; \sum_{g,h \in \mathbb{G}} C(g,h) . \log\left(\frac{C(g,h)}{C(h)}\right) - \nonumber -\\ -&\;=\;& \sum_{x \in \mathbb{W}} C(x) . \log C(x) - \;-\; \sum_{x \in \mathbb{W}} C(x) . \log C(G(x))\nonumber\\ -&&\;+\; \sum_{g,h \in \mathbb{G}} C(g,h) . \log C(g,h) - \;-\; \sum_{g \in \mathbb{G}} C(g) . \log C(g) \nonumber -\\ -&\;=\;& \sum_{x \in \mathbb{W}} C(x) . \log C(x) - \;+\; \sum_{g,h \in \mathbb{G}} C(g,h) . \log C(g,h)\nonumber\\ -&&\;-\; 2 \sum_{g \in \mathbb{G}} C(g) . \log C(g)\label{classnorm_ml} -\end{eqnarray} -where $(g,h)$ is some class sequence `$h$ $g$'. - -Note that the first of these three terms in the final stage of equation -\ref{classnorm_ml}, ``$\sum_{x \in \mathbb{W}} C(x)$ $.$ $\log(C(x))$'', is -independent of the class map function $G(.)$, therefore it is not -necessary to consider it when optimising $G(.)$. The value a class -map must seek to maximise, $F_{\mathrm{M}_\mathrm{C}}$, can now be defined: -\begin{eqnarray} -F_{\mathrm{M}_\mathrm{C}} -&\;=\;& - \sum_{g,h \in \mathbb{G}} C(g,h) . \log C(g,h) -\;-\; 2 \sum_{g \in \mathbb{G}} C(g) . \log C(g)\label{classnorm_Fml} -\end{eqnarray} - -A fixed number of classes must be decided before running the -algorithm, which can now be formally defined: - -\begin{center}\framebox[13.5cm]{\parbox{12cm}{\vspace{0.5cm} -\begin{enumerate} -\item {\bfseries Initialise}:\label{Cstepone} $\forall w \in\mathbb{W}:\; G(w) = 1$\\ -Set up the class map so that all words are in the first class and all -other classes are empty ({\it or} initialise using some other scheme) - -\item{\bfseries Iterate}: $\forall i \in \{1\ldots n\} \; \wedge \; \neg s$\\ -For a given number of iterations $1 \ldots n$ or until some stop -criterion $s$ is fulfilled -\begin{enumerate} -\item {\bfseries Iterate}: $\forall w \in\mathbb{W}$\\ -For each word $w$ in the vocabulary -\begin{enumerate}\label{Csteptwo} -\item {\bfseries Iterate}: $\forall c\in\mathbb{G}$\\ -For each class $c$ -\begin{enumerate} -\item {\bfseries Move} word $w$ to class $c$, remembering its previous class -\item {\bfseries Calculate} the change in $F_{\mathrm{M}_\mathrm{C}}$ for this move -\item {\bfseries Move} word $w$ back to its previous class -\end{enumerate} -\item {\bfseries Move} word $w$ to the class which increased $F_{\mathrm{M}_\mathrm{C}}$ by the -most, or do not move it if no move increased $F_{\mathrm{M}_\mathrm{C}}$ -\end{enumerate} -\end{enumerate} -\end{enumerate} -\vspace{0.5cm}}}\end{center} - -The initialisation scheme given here in step \ref{Cstepone} represents -a word unigram language model, making no assumptions about which words -should belong in which class.\footnote{Given this initialisation, the -first $(|\mathbb{G}|-1)$ moves will be to place each word into an -empty class, however, since the class map which maximises -$F_{\mathrm{M}_\mathrm{C}}$ is the one which places each word into a singleton -class.} The algorithm is greedy and so can get stuck in a local -maximum and is therefore not guaranteed to find the optimal class map -for the training text. The algorithm is rarely run until total -convergence, however, and it is found in practice that an extra -iteration can compensate for even a deliberately poor choice of -initialisation. - -The above algorithm requires the number of classes to be fixed before -running. It should be noted that as the number of classes utilised -increases so the overall likelihood of the training text will tend -tend towards that of the word model.\footnote{Which will be higher, -given maximum likelihood estimates.} This is why the algorithm does -not itself modify the number of classes, otherwise it would -na\"{\i}vely converge on $|\mathbb{W}|$ classes. - - - -\mysect{Robust model estimation}{HLMrobustestimates}\label{robust_estimation} -Given a suitably large amount of training data, an extremely long $n$-gram -could be trained to give a very good model of language, as per equation -\ref{cond_prob_model} -- in practice, however, -any actual extant model must be an approximation. Because it is an -approximation, it will be detrimental to include within the model -information which in fact was just noise introduced by the limits of -the bounded sample set used to train the model -- this information may -not accurately represent text not contained within the training -corpus. In the same way, word sequences which were not observed in the -training text cannot be assumed to represent impossible sequences, so -some probability mass must be reserved for these. The issue of how to -redistribute the probability mass, as assigned by the maximum likelihood -estimates derived from the raw statistics of a specific corpus, into a -sensible estimate of the real world is addressed by various standard -methods, all of which aim to create more robust language models. - -\mysubsect{Estimating probabilities}{HLMdiscounts}\label{discounting_and_other_fun_things} -Language models seek to estimate the probability of each possible word -sequence event occurring. In order to calculate maximum likelihood -estimates this set of events must be finite so that the language model -can ensure that the sum of the probabilities of all events is 1 given -some context. In an $n$-gram model the combination of the finite vocabulary -and fixed length history limits the number of unique events to -$|\mathbb{W}|^n$. For any $n>1$ it is highly unlikely that all word -sequence events will be encountered in the training corpora, and many -that do occur may only appear one or two times. A language model -should not give any unseen event zero probability,\footnote{If it did -then from equation \ref{cond_prob_model} it follows that the -probability of any piece of text containing that event would also be -zero, and would have infinite perplexity.} but without an infinite -quantity of training text it is almost certain that there will be -events it does not encounter during training, so various mechanisms -have been developed to redistribute probability within the model such that these -unseen events are given some non-zero probability. %The same or -%similar mechanisms can also be used to -%redistribute probability amongst infrequently-occurring events too in -%the assumption that these were not seen commonly enough to draw firm -%conclusions about their behaviour. - -%Various methods of discounting probability mass from observed events and -%redistributing it to unseen events have been developed. - -As in equation \ref{ngramcountdiv}, the maximum likelihood estimate of -the probability of an event $\mathcal{A}$ occurring is defined by the -number of times that event is observed, $a$, and the total number of -samples in the training set of all observations, $A$, where -$P(\mathcal{A}) = \frac{a}{A}$. With this definition, events that do -not occur in the training data are assigned zero probability since it -will be the case that $a=0$. [Katz 1987]\footnote{S.M. Katz, -\textbf{``Estimation of Probabilities from Sparse Data for the -Language Model Component of a Speech Recogniser''}; \textit{IEEE -Transactions on Acoustic, Speech and Signal Processing} 1987, vol. 35 -no. 3 pp. 400-401} suggests multiplying each observed count by a discount -coefficient factor, $d_a$, which is dependent upon the number of times -the event is observed, $a$, such that $a' = d_a \,.\, a$. -Using this discounted occurrence count, the probability of an event -that occurs $a$ times now becomes -$P_\mathrm{discount}(\mathcal{A}) = \frac{a'}{A\,}$. -Different discounting schemes have been proposed that define the -discount coefficient, $d_a$, in specific ways. The same discount -coefficient is used for all events that occur the same number of -times on the basis of the symmetry requirement that two events that -occur with equal frequency, $a$, must have the same probability, $p_a$. - -Defining $c_a$ as the number of events that occur exactly $a$ times -such that $A = \sum_{a\ge 1} a\,.\,c_a$ %and given the discount -%coefficients $d_a$ it therefore -it follows that the total amount of -reserved mass, left over for distribution amongst the unseen events, -is -%\begin{eqnarray} -%p_0 &=& \frac{1}{c_0} \; \sum_{a\ge 1} -% a \,\frac{(1-d_a)\,.\,c_a}{A}\nonumber\\ -%&=& \frac{1}{c_0\,.\,A} \; \left( \sum_{a\ge 1} c_a\,.\,a -% - \sum_{a\ge 1} d_a\,.\,c_a\,.\,a \right) \nonumber\\ -%&=& -$\frac{1}{c_0} \; ( 1\;-$ $\frac{1}{A}\sum_{a\ge 1}$ $d_a\,.\,c_a\,.\,a)$. -%\end{eqnarray} - -\subsubsection{Good-Turing discounting} -In [Good 1953]\footnote{I.J. Good, \textbf{``The Population Frequencies -of Species and the Estimation of Population Parameters''}; -\textit{Biometrika} 1953, vol. 40 (3,4) pp. 237-264} -a method of discounting maximum likelihood estimates was proposed -whereby the count of an event occurring $a$ times is discounted with -\begin{equation} -d_a = (a+1) \frac{c_{a+1}}{a\,.\,c_a} -\end{equation} -A problem with this scheme, referred to as {\it Good-Turing} discounting, -is that due to the count in the denominator it will fail if there is a -case where $c_a = 0$ if there is any count $c_b > 0$ for -$b>a$. Inevitably as $a$ increases the count $c_a$ will tend towards -zero and for high $a$ there are likely to be many such zero counts. A -solution to this problem was proposed in -[Katz 1987], which defines a cut-off value $k$ at which counts $a$ -for $a > k$ are not discounted\footnote{It is suggested that ``$k=5$ -or so is a good choice''} -- this is justified by -considering these more frequently observed counts as reliable and -therefore not needing to be discounted. Katz then describes a revised -discount equation which preserves the same amount of mass for the -unseen events: -\begin{equation} -d_a = \left\{ \begin{array}{c@{\quad:\quad}l} - \frac{(a+1) \frac{c_{a+1}}{a\,.\,c_a} \;-\; (k+1)\frac{c_{k+1}}{c_1}} - {1 - (k+1)\frac{c_{k+1}}{c_1}} - & 1 \le a \le k\\ -1 & a>k -\end{array}\right. -\end{equation} -This method is itself unstable, however -- for example if $k.c_k > c_1$ -then $d_a$ will be negative for $1 \le a \le k$. - -\subsubsection{Absolute discounting} -An alternative discounting method is {\it absolute} -discounting,\footnote{H. Ney, U. Essen and R. Kneser, \textbf{``On -Structuring Probabilistic Dependences in Stochastic Language -Modelling''}; \textit{Computer Speech and Language} 1994, vol.8 no.1 -pp.1-38} in which a constant value $m$ is subtracted from each -count. The effect of this is that the events with the lowest counts -are discounted relatively more than those with higher counts. The -discount coefficient is defined as -\begin{equation} -d_a = \frac{a-m}{a} -\end{equation} - -In order to discount the same amount of probability mass as the -Good-Turing estimate, $m$ must be set to: -\begin{equation} -m = \frac{c_1}{\sum_{a=1}^{A}a\,.\,c_a} -\end{equation} - -%\subsubsection{Linear discounting} -%In {\it linear} discounting, event counts are discounted in proportion to -%their magnitude, thus $d_a$ is constant over all values of $a$. In -%order to discount the same quantity of probability mass as the -%Good-Turing discounting scheme, $d_a$ must be defined as -%\begin{equation} -%d_a = 1 \,-\, \frac{c_1}{A} -%\end{equation} - - -\mysubsect{Smoothing probabilities}{HLMsmoothingprobs}\label{smoothing_probs} -The above discounting schemes present various methods of -redistributing probability mass from observed events to unseen -events. Additionally, if events are infrequently observed then they -can be smoothed with less precise but more frequently observed events. - -In [Katz 1987] a {\it back off} scheme is proposed and used alongside -Good-Turing discounting. In this method probabilities are -redistributed via the recursive utilisation of lower level conditional -distributions. Given the $n$-gram case, if the $n$-tuple is not observed -frequently enough in the training text then a probability based on the -occurrence count of a shorter-context $(n-1)$-tuple is used -instead -- using the shorter context estimate is referred to as -{\it backing off}. -In practice probabilities are typically considered -badly-estimated if their corresponding word sequences are not -explicitly stored in the language model, either because they did not -occur in the training text or they have been discarded using some -pruning mechanism. - -Katz defines a function $\hat{\beta}(w_{i-n+1}, -\ldots w_{i-1})$ which represents the total -probability of all the unseen events in a particular context. % $w_1, -%%w_2, \ldots w_{i-1}$, given an existing probability estimate function $\hat{P}$: -%\begin{equation} -%\hat{\beta}(w_1, \ldots, w_{i-1}) = 1\, - \,\sum_{w_i: c(w_1, \ldots, w_i)>0} -% \hat{P}(w_i | w_1, \ldots, w_{i-1}) -%\end{equation} -%where $c(w_1, \ldots, w_i)$ is the occurrence count of the sequence -%$w_1, \ldots, w_i$ stored in the language model. -The probability mass $\hat{\beta}$ is then distributed amongst all the -unseen $w_i$ and the language model probability estimate becomes:% where $c(w_1,$ $\ldots,$ $w_i)$ $=$ $0$: -%\begin{equation} -%\hat{P}(w_i | w_1, \ldots, w_{i-1}) = \alpha(w_1, \ldots, w_{i-1}) \,.\, \hat{P}(w_i | w_2, \ldots, w_{i-1}) -%\end{equation} -%given: -%\begin{equation} -%\alpha(w_1, \ldots, w_{i-1}) = \frac{\hat{\beta}(w_1, \ldots, w_{i-1})} -% {\sum_{w_i: c(w_1, \ldots, w_i)=0}\hat{P}(w_i | w_2, \ldots, w_{i-1})} -%\end{equation} -% -%Combining this back off scheme for unseen events with a discounting -%method, the resulting language model probability estimate becomes: -\begin{equation} -\hat{P}(w_i \;|\; w_{i-n+1},\ldots,w_{i-1}) =\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\nonumber -\end{equation} -\vspace{-0.5cm}\begin{equation} -\left\{ \begin{array}{l@{\quad:\quad}l} -\alpha(w_{i-n+1}, \ldots, w_{i-1}) \,.\, \hat{P}(w_i | w_{i-n+2}, \ldots, w_{i-1}) & -c(w_{i-n+1}, \ldots, w_i) = 0\\ -d_{c(w_{i-n+1}, \ldots, w_i)} \,.\, \frac{c(w_{i-n+1}, \ldots, w_i)}{c(w_{i-n+1}, -\ldots, w_{i-1})} & 1 \le c(w_{i-n+1}, \ldots, w_i) \le k\\ -\frac{c(w_{i-n+1}, \ldots, w_i)}{c(w_{i-n+1}, -\ldots, w_{i-1})} & c(w_{i-n+1}, \ldots, w_i) > k\\ -\end{array}\right. -\end{equation} -where $c(.)$ is the count of an event and: -\begin{equation} -\alpha(w_{i-n+1}, \ldots, w_{i-1}) = \frac{\hat{\beta}(w_{i-n+1}, -\ldots, w_{i-1})} {\sum_{w_i: c(w_{i-n+1}, \ldots, w_i)=0}\hat{P}(w_i -| w_{i-n+2}, \ldots, w_{i-1})} -\end{equation} -A back off scheme such as this can be implemented efficiently because -all the back off weights $\alpha$ can be computed once and then stored -as part of the language model, and through its recursive nature it is -straightforward to incorporate within a language model. Through the -use of pruning methods, contexts which occur `too infrequently' are not -stored in the model so in practice the test $c(w_1,\ldots,w_{i})=0$ is -implemented as referring to whether or not the context is in the model. - -%\subsubsection{Interpolation}\label{interp_bit} -%Instead of backing off to a shorter-context estimate only when a -%longer context is not stored within the language model, a model can -%combine multiple contexts in every estimate it makes by means of -%linear interpolation: -%\begin{equation} -%\hat{P}(w_i \;|\; w_1,\ldots,w_{i-1}) = \lambda_1 \frac{c(w_i)}{A} \;+\; -% \sum_{m=1}^{i-1} \lambda_{i-m+1} -% \frac{c(w_m,\ldots,w_i)}{c(w_m,\ldots,w_{i-1})} -%\end{equation} -%where $\lambda_m$ is the weight of each component of the language -%model such that $\sum_m \lambda_m = 1$. In this example $\lambda_1$ and -%$\lambda_2$ are the weight of the unigram and bigram models -%respectively. The weights $\lambda_m$ are chosen so as to maximise the -%probability of a held-out test set which was not originally used for -%training each of the component models. - -\subsubsection{Cut-offs} -With a back off scheme low count events -can be discarded -- {\it cut-off} -- from the model and more frequently observed -shorter-context estimates can be used instead. An additional advantage -of discarding low occurrence events is that the model size can be -substantially reduced, since in general as $a$ decreases so the number -of events $c_a$ increases -- in fact the Good-Turing discounting -scheme depends upon this relationship. - - -\mysect{Perplexity}{HLMperplexity} -A measure of language model performance based on average probability -can be developed within the field of information theory -[Shannon 1948]\footnote{C.E. Shannon, \textbf{``A Mathematical -Theory of Communication''}; \textit{The Bell System Technical Journal} -1948, vol. 27 pp. 379-423, 623-656. Available online at -\texttt{http://galaxy.ucsd.edu/new/external/shannon.pdf}}. -A speaker emitting language can be considered to be a discrete -information source which is generating a sequence of words $w_1, w_2, -\ldots, w_m$ from a vocabulary set, $\mathbb{W}$. The probability of a -symbol $w_i$ is dependent upon the previous symbols $w_1, \ldots, -w_{i-1}$. The information source's inherent per-word entropy $H$ -represents the amount of non-redundant information provided by each -new word on average, defined in bits as: -\begin{equation} -H = - \lim_{m \to \infty} \frac{1}{m} \sum_{w_1, w_2, \ldots, w_m}\left( P(w_1, w_2, \ldots, w_m)\; -\log_2 P(w_1, w_2, \ldots, w_m) \right) -\end{equation} - -This summation is over all possible sequences of words, but if the -source is ergodic then the summation over all possible word sequences -can be discarded and the equation becomes equivalent to: -\begin{equation} -H = - \lim_{m \to \infty} \frac{1}{m} \log_2 P(w_1, w_2, \ldots, w_m) -\end{equation} -It is reasonable to assume ergodicity on the basis that we use -language successfully without having been privy to all words that have -ever been spoken or written, and we can disambiguate words on the -basis of only the recent parts of a conversation or piece of text. - -Having assumed this ergodic property, it follows that given a large -enough value of $m$, $H$ can be approximated with: -\begin{equation}\label{2-3} -\hat{H} = - \frac{1}{m} \log_2 P(w_1, w_2, \ldots, w_m) -\end{equation} -This last estimate is feasible to evaluate, thus providing the basis -for a metric suitable for assessing the performance of a language model. - -Considering a language model as an information source, it follows that -a language model which took advantage of all possible features of -language to predict words would also achieve a per-word entropy of -$H$. It therefore makes sense to use a measure related to entropy to -assess the actual performance of a language model. Perplexity, $PP$, -is one such measure that is in standard use, defined such that: -\begin{equation}\label{2-4} -PP = 2^{\hat{H}} -\end{equation} -Substituting equation \ref{2-3} into equation \ref{2-4} and -rearranging obtains: -\begin{equation} -PP = \hat{P}(w_1, w_2, \ldots, w_m)^{-\frac{1}{m}}\label{pp_sum_eqn} -\end{equation} -where $\hat{P}(w_1, w_2, \ldots, w_m)$ is the probability estimate assigned to -the word sequence $(w_1,$ $w_2,$ $\ldots, w_m)$ by a language model. - -Perplexity can be considered to be a measure of on average how many -different equally most probable words can follow any given word. -Lower perplexities represent better language models, although this -simply means that they `model language better', rather than -necessarily work better in speech recognition systems -- perplexity is -only loosely correlated with performance in a speech recognition -system since it has no ability to note the relevance of acoustically -similar or dissimilar words. - -In order to calculate perplexity both a language model and some test -text are required, so a meaningful comparison between two language -models on the basis of perplexity requires the same test text and word -vocabulary set to have been used in both cases. The size of the -vocabulary can easily be seen to be relevant because as its -cardinality is reduced so the number of possible words given any -history must monotonically decrease, therefore the probability -estimates must on average increase and so the perplexity will decrease. - - -\mysect{Overview of $n$-Gram Construction Process}{mkngoview} -This section describes the overall process of building an $n$-gram -language model using the \HTK\ tools. As noted in the introduction, -it is a three stage process. Firstly, the training text is scanned -and the $n$-grams counts are stored in a set of \textit{gram} files. -Secondly, and optionally, the counts in the gram files are modified to -perform vocabulary and class mapping. Finally the resulting gram -files are used to build the LM. This separation into stages adds some -complexity to the overall process but it makes it much more efficient -to handle very large quantities of data since the gram files only need -to be constructed once but they can be augmented, processed and used -for constructing LMs many times. - -The overall process involved in building an $n$-gram language model -using the \HTK\ tools is illustrated in Figure~\ref{f:WordLM}. The -procedure begins with some training text, which first of all should be -conditioned into a suitable format by performing operations such as -converting numbers to a citation form, expanding common abbreviations -and so on. The precise format of the training text depends on your -requirements, however, and can vary enormously -- therefore -conditioning tools are not supplied with \HTK.\footnote{In fact a very -simple text conditioning Perl script is included in {\tt -LMTutorial/extras/LCond.pl} for demonstration purposes only -- it -converts text to uppercase (so that words are considered equivalent -irrespective of case) and reads the input punctuation in order to tag -sentences, stripping most other punctuation. See the script for more -details.} - -Given some input text, the tool \htool{LGPrep} scans the input word -sequence and counts $n$-grams.\footnote{\htool{LGPrep} can also -perform text modification using supplied rules.} These $n$-gram counts -are stored in a buffer which fills as each new $n$-gram is -encountered. When this buffer becomes full, the $n$-grams within it -are sorted and stored in a \textit{gram} file. -All words (and symbols generally) are represented within \HTK\ by a -unique integer id. The mapping from words to ids is recorded in a -word map. On startup, \htool{LGPrep} loads in an existing word map, -then each new word encountered in the input text is allocated a new id -and added to the map. On completion, \htool{LGPrep} outputs the new -updated word map. If more text is input, this process is repeated and -hence the word map will expand as more and more data is processed. - -Although each of the gram files output by \htool{LGPrep} is sorted, -the range of $n$-grams within individual files will overlap. To build -a language model, all $n$-gram counts must be input in sort order so -that words with equivalent histories can be grouped. To accommodate -this, all \HTK\ language modelling tools can read multiple gram files -and sort them on-the-fly. This can be inefficient, however, and it is -therefore useful to first copy a newly generated set of gram files -using the \HLM\ tool \htool{LGCopy}. This yields a set of gram files -which are \textit{sequenced}, i.e. the ranges of $n$-grams within each -gram file do not overlap and can therefore be read in a single stream. -Furthermore, the sequenced files will take less disc space since the -counts for identical $n$-gram in different files will have been -merged. - -\centrefig{WordLM}{65}{The main stages in building an $n$-gram language -model} - -The set of (possibly sequenced) gram files and their associated word -map provide the raw data for building an $n$-gram LM. The next stage -in the construction process is to define the vocabulary of the LM and -convert all $n$-grams which contain OOV (out of vocabulary) words so -that each OOV word is replaced by a single symbol representing the -\textit{unknown} class. For example, the $n$-gram \texttt{AN OLEAGINOUS -AFFAIR} would be converted to \texttt{AN !!UNK AFFAIR} if the word -``oleaginous'' was not in the selected vocabulary and \texttt{!!UNK} -is the name chosen for the unknown class. - -This assignment of OOV words to a class of unknown words is a specific -example of a more general mechanism. In \HTK, any word can be -associated with a named class by listing it in a \textit{class map} -file. Classes can be defined either by listing the class members or -by listing all non-members. For defining the unknown class the latter -is used, so a plain text list of all in-vocabulary words is supplied -and all other words are mapped to the OOV class. The tool -\htool{LGCopy} can use a class map to make a copy of a set of gram -files in which all words listed in the class map are replaced by the -class name, and also output a word map which contains only the -required vocabulary words and their ids plus any classes and their -ids. - -As shown in Figure~\ref{f:WordLM}, the LM itself is built using the -tool \htool{LBuild}. This takes as input the gram files and the word -map and generates the required LM. The language model -can be built in steps (first a unigram, then a bigram, then a trigram, -etc.) or in a single pass if required. - - -\mysect{Class-Based Language Models}{cllmoview} - -\centrefig{ClassLM}{110}{The main stages in building a -class-based language model} - -As described in section \ref{s:HLMclassngram}, a class-base language -model consists of two separate components. The first is an $n$-gram -which models the sequence of classes (i.e.\ $p(c_i, | c_{i-n+1}, -\ldots, c_{n-1})$) and the second is a class map with associated word -counts or probabilities within classes allowing the word-given-class -probability bigram\ $p(w_k|c_k)$ to be evaluated. These files may -then either be linked into a single composite file or a third `linking' -file is create to point to these two separate files -- both of these -operations can be performed using the \htool{LLink} tool. - -Given a set of word classes defined in a class map file and a set of -word level gram files, building a class-based model with the \HTK\ -tools requires only a few simple modifications to the basic procedure -described above for building a word $n$-gram: -\begin{itemize} -\item \htool{Cluster} is used with the word map and word level gram - files derived from the source text to construct a class map which - defines which class each word is in. The same tool is then used to - generate the word-classes component file referred to above. - Note that \htool{Cluster} can also be used to generate this file - from an existing or manually-generated class map. - -\item \htool{LGCopy} is used with the class map to convert the word level - gram files derived from the source text into class gram files. - \htool{LBuild} can then be used directly with the class level gram - files to build the class sequence $n$-gram language model - referred to above. - -\item \htool{LLink} is then run to create either a language model - script pointing to the two separate language model files or a single - composite file. The resulting language model - is then ready for use. -\end{itemize} -The main steps of this procedure are illustrated in -Figure~\ref{f:ClassLM}. - -The next chapter provides a more thorough introduction to the tools as -well as a tutorial to work through explaining how to use them in -practice. diff --git a/HTKBook/hlmtutorial.tex b/HTKBook/hlmtutorial.tex deleted file mode 100644 index 0b4d70e..0000000 --- a/HTKBook/hlmtutorial.tex +++ /dev/null @@ -1,979 +0,0 @@ -% -% !HVER!hlmtutorial [SJY 05/04/97] -% -% Updated (and about 80% rewritten) - Gareth Moore 16/01/02 -% - -\mychap{A Tutorial Example of Building Language Models}{hlmtutor} - -This chapter describes the construction and evaluation of language -models using the \HTK\ language modelling tools. The models will be -built from scratch with the exception of the text conditioning stage -necessary to transform the raw text into its most common and useful -representation (e.g. number conversions, abbreviation expansion and -punctuation filtering). All resources used in this tutorial can be -found in the \texttt{LMTutorial} directory of the \HTK\ distribution. - -The text data used to build and test the language models are the -copyright-free texts of 50 Sherlock Holmes stories by Arthur Conan Doyle. -The texts have been partitioned into training and test material (49 -stories for training and 1 story for testing) and reside in the -\texttt{train} and \texttt{test} subdirectories respectively. - -\mysect{Database preparation}{HLMdatabaseprep} - -The first stage of any language model development project is data -preparation. As mentioned in the introduction, the text data used in -these example has already been conditioned. If you examine each file -you will observe that they contains a sequence of tagged sentences. -When training a language model you need to include sentence start and -end labelling because the tools cannot otherwise infer this. Although -there is only one sentence per line in these files, this is not a -restriction of the \HTK\ tools and is purely for clarity -- you can -have the entire input text on a single line if you want. Notice that -the default sentence start and sentence end tokens of {\tt } and -{\tt } are used -- if you were to use different tokens for these -you would need to pass suitable configuration parameters to the \HTK\ -tools.\footnote{{\tt STARTWORD} and {\tt ENDWORD} to be precise.} An -extremely simple text conditioning tool is supplied in the form of -\htool{LCond.pl} in the {\tt LMTutorial/extras} folder -- this only -segments text into sentences on the basis of punctuation, as well as -converting to uppercase and stripping most punctuation symbols, and is -not intended for serious use. In particular it does not convert -numbers into words and will not expand abbreviations. Exactly what -conditioning you perform on your source text is dependent on the task -you are building a model for. - -Once your text has been conditioned, the next step is to use the tool -\htool{LGPrep} to scan the input text and produce a -preliminary set of sorted $n$-gram files. In this tutorial we will -store all $n$-gram files created by \htool{LGPrep} will be stored in -the \texttt{holmes.0} directory, so create this directory now. In a -Unix-type system, for example, the standard command is -\begin{verbatim} -$ mkdir holmes.0 -\end{verbatim} % $ - -The \HTK\ tools maintain a cumulative word map to which every new -word is added and assigned a unique id. This means that you can add -future $n$-gram files without having to rebuild existing ones so long -as you start from the same word map, thus ensuring that each id -remains unique. The side effect of this ability is that -\htool{LGPrep} always expects to be given a word map, so to prepare -the first $n$-gram file (also referred to elsewhere as a `gram' file) -you must pass an empty word map file. - -You can prepare an initial, empty word map using the \htool{LNewMap} -tool. It needs to be passed the name to be used internally in the word -map as well as a file name to write it to; optionally you may also -change the default character escaping mode and request additional -fields. Type the following: -\begin{verbatim} -$ LNewMap -f WFC Holmes empty.wmap -\end{verbatim} % $ -and you'll see that an initial, empty word map file has been created -for you in the file \texttt{empty.wmap}. Examine the file and you -will see that it contains just a header and no words. It looks like -this: -\begin{verbatim} -Name = Holmes -SeqNo = 0 -Entries = 0 -EscMode = RAW -Fields = ID,WFC -\Words\ -\end{verbatim} -Pay particular attention to the {\tt SeqNo} field since this -represents the sequence number of the word map. Each time you add -words to the word map the sequence number will increase -- the tools -will compare the sequence number in the word map with that in any data -files they are passed, and if the word map is too old to contain all -the necessary words then it will be rejected. The {\tt Name} field -must also match, although initially you can set this to whatever you -like.\footnote{The exception to this is that differing text may follow -a {\tt \%} character.} The other fields specify that no \HTK\ -character escaping will be used, and that we wish to store the -(compulsory) word ID field as well as an optional count field, which -will reveal how many times each word has been encountered to date. -The {\tt ID} field is always present which is why you did not need to -pass it with the {\tt -f} option to \htool{LNewMap}. - -To clarify, if we were to use the Sherlock Holmes texts together with -other previously generated $n$-gram databases then the most recent -word map available must be used instead of the prototype map file -above. This would ensure that the map saved by \htool{LGPrep} once the -new texts have been processed would be suitable for decoding all -available $n$-gram files. - -We'll now process the text data with the following command: -\begin{verbatim} -$ LGPrep -T 1 -a 100000 -b 200000 -d holmes.0 -n 4 - -s "Sherlock Holmes" empty.wmap train/*.txt -\end{verbatim} % $ - -The \texttt{-a} option sets the maximum number of new words that can -be encountered in the texts to 100,000 (in fact, this is the default). -If, during processing, this limit is exceeded then \htool{LGPrep} will -terminate with an error and the operation will have to be repeated by -setting this limit to a larger value. - -The \texttt{-b} option sets the internal $n$-gram buffer size to -200,000 $n$-gram entries. This setting has a direct effect on the -overall process size. The memory requirement for the internal buffer can -be calculated according to $mem_{bytes} = (n+1)*4*b$ where $n$ is the -$n$-gram size (set with the \texttt{-n} option) and $b$ is the buffer -size. In the above example, the $n$-gram size is set to four which -will enable us to generate bigram, trigram and four-gram language -models. The smaller the buffer then in general the more separate -files will be written out -- each time the buffer fills a new $n$-gram -file is generated in the output directory, specified by the {\tt -d} -option. - -The {\tt -T 1} option switches on tracing at the lowest level. In -general you should probably aim to run each tool with at least {\tt -T -1} since this will give you better feedback about the progress of the -tool. Other useful options to pass are {\tt -D} to check the state of -configuration variables -- very useful to check you have things set up -correctly -- and {\tt -A} so that if you save the tool output you will -be able to see what options it was run with. It's good practice to -always pass {\tt -T 1 -A -D} to every \HTK\ tool in fact. You should -also note that all \HTK\ tools require the option switches to be -passed {\it before} the compulsory tool parameters -- trying to run -{\tt LGPrep train/*.txt -T 1} will result in an error, for example. - -Once the operation has completed, the \texttt{holmes.0} directory should -contain the following files: -\begin{verbatim} -gram.0 gram.1 gram.2 wmap -\end{verbatim} -The saved word map file \texttt{wmap} has grown to include all newly -encountered words and the identifiers that the tool has assigned them, -and at the same time the map sequence count has been incremented by -one. -\begin{verbatim} -Name = Holmes -SeqNo = 1 -Entries = 18080 -EscMode = RAW -Fields = ID,WFC -\Words\ - 65536 33669 -IT 65537 8106 -WAS 65538 7595 -... -\end{verbatim} -Remember that map sequence count together with the map's name field -are used to verify the compatibility between the map and any $n$-gram -files. The contents of the $n$-gram files can be inspected using the -\htool{LGList} tool: (if not using a Unix type system you may need to -omit the {\tt | more} and find some other way of viewing the output in -a more manageable format; try {\tt > file.txt} and viewing the -resulting file if that works) -\begin{verbatim} -$ LGList holmes.0/wmap holmes.0/gram.2 | more - -4-Gram File holmes.0/gram.2[165674 entries]: - Text Source: Sherlock Holmes -' IT IS NO : 1 -'CAUSE I SAVED HER : 1 -'EM WHO : 1 - ' IT : 1 - A BAND : 1 - A BEAUTIFUL : 1 - A BIG : 1 - A BIT : 1 - A BROKEN : 1 - A BROWN : 2 - A BUZZ : 1 - A CAMP : 1 -... -\end{verbatim} % $ -If you examine the other $n$-gram files you will notice that whilst -the contents of each $n$-gram file are sorted, the files themselves -are not sequenced -- that is, one file does not carry on where the -previous one left off; each is an independent set of $n$-grams. To -derive a sequenced set of $n$-gram files, where no grams are repeated -between files, the tool \htool{LGCopy} must be used on these existing -gram files. For the purposes of this tutorial the new set of -files will be stored in the \texttt{holmes.1} directory, so create -this and then run {\tt LGCopy}: -\begin{verbatim} -$ mkdir holmes.1 -$ LGCopy -T 1 -b 200000 -d holmes.1 holmes.0/wmap holmes.0/gram.* -Input file holmes.0/gram.0 added, weight=1.0000 -Input file holmes.0/gram.1 added, weight=1.0000 -Input file holmes.0/gram.2 added, weight=1.0000 -Copying 3 input files to output files with 200000 entries - saving 200000 ngrams to file holmes.1/data.0 - saving 200000 ngrams to file holmes.1/data.1 - saving 89516 ngrams to file holmes.1/data.2 -489516 out of 489516 ngrams stored in 3 files -\end{verbatim} -The resulting $n$-gram files, together with the word map, can now be -used to generate language models for a specific vocabulary list. Note -that it is not necessary to sequence the files in this way before -building a language model, but if you have too many separate -unsequenced $n$-gram files then you may encounter performance problems -or reach the limit of your filing system to maintain open files -- in -practice, therefore, it is a good idea to always sequence them. - -\mysect{Mapping OOV words}{HLMmapoov} -An important step in building a language model is to decide on the -system's vocabulary. For the purpose of this tutorial, we have -supplied a word list in the file \texttt{5k.wlist} which contains the -5000 most common words found in the text. We'll build our language -models and all intermediate files in the \texttt{lm\_5k} directory, -so create it with a suitable command: -\begin{verbatim} -$ mkdir lm_5k -\end{verbatim} % $ - -Once the system's vocabulary has been specified, the tool -\htool{LGCopy} should be used to filter out all out-of-vocabulary -(OOV) words. To achieve this, the 5K word list is used as a special -case of a class map which maps all OOVs into members of the -``unknown'' word class. The unknown class symbol defaults to -\texttt{!!UNK}, although this can be changed via the configuration -parameter \texttt{UNKNOWNNAME}. Run \htool{LGCopy} again: - -\begin{verbatim} -$ LGCopy -T 1 -o -m lm_5k/5k.wmap -b 200000 -d lm_5k -w 5k.wlist - holmes.0/wmap holmes.1/data.* -Input file holmes.1/data.0 added, weight=1.0000 -Input file holmes.1/data.1 added, weight=1.0000 -Input file holmes.1/data.2 added, weight=1.0000 -Copying 3 input files to output files with 200000 entries -Class map = 5k.wlist [Class mappings only] - saving 75400 ngrams to file lm_5k/data.0 -92918 out of 489516 ngrams stored in 1 files -\end{verbatim} % $ - -Because the {\tt -o} option was passed, all $n$-grams containing OOVs -will be extracted from the input files and the OOV words mapped to the -unknown symbol with the results stored in the files -\texttt{lm\_5k/data.*}. A new word map containing the new class -symbols (\texttt{!!UNK} in this case) and only words in the vocabulary -will be saved to \texttt{lm\_5k/5k.wmap}. Note how the newly produced -OOV $n$-gram files can no longer be decoded by the original word map -\texttt{holmes.0/wmap}: -\begin{verbatim} -$ LGList holmes.0/wmap lm_5k/data.0 | - ERROR [+15330] OpenNGramFile: Gram file map Holmes%%5k.wlist - inconsistent with Holmes - FATAL ERROR - Terminating program LGList -\end{verbatim} % $ -The error is due to the mismatch between the original map's name -(``Holmes'') and the name of the map stored in the header of the -$n$-gram file we attempted to list (``Holmes\%\%5k.wlist''). The latter -name indicates that the word map was derived from the original map -\texttt{Holmes} by resolving class membership using the class map -\texttt{5k.wlist}. As a further consistency indicator, the original -map has a sequence count of 1 whilst the class-resolved map has a -sequence count of 2. - -The correct command for listing the contents of the OOV $n$-gram -file is: -\begin{verbatim} -$ LGList lm_5k/5k.wmap lm_5k/data.0 | more - -4-Gram File lm_5k/data.0[75400 entries]: - Text Source: LGCopy -!!UNK !!UNK !!UNK !!UNK : 50 -!!UNK !!UNK !!UNK : 20 -!!UNK !!UNK !!UNK A : 2 -!!UNK !!UNK !!UNK ACCOUNTS : 1 -!!UNK !!UNK !!UNK ACROSS : 1 -!!UNK !!UNK !!UNK AND : 17 -... -\end{verbatim} % $ - -At the same time the class resolved map \texttt{lm\_5k/5k.wmap} can -be used to list the contents of the $n$-gram, database files -- the -newer map can view the older grams, but not vice-versa. -\begin{verbatim} -$ LGList lm_5k/5k.wmap holmes.1/data.2 | more - -4-Gram File holmes.1/data.2[89516 entries]: - Text Source: LGCopy -THE SUSSEX MANOR HOUSE : 1 -THE SWARTHY GIANT GLARED : 1 -THE SWEEP OF HIS : 1 -THE SWEET FACE OF : 1 -THE SWEET PROMISE OF : 1 -THE SWINGING DOOR OF : 1 -... -\end{verbatim} % $ -However, any $n$-grams containing OOV words will be discarded since -these are no longer in the word map. - -Note that the required word map \texttt{lm\_5k/5k.wmap} can also be -produced also using the \htool{LSubset} tool: -\begin{verbatim} -$ LSubset -T 1 holmes.0/wmap 5k.wlist lm_5k/5k.wmap -\end{verbatim} % $ - -Note also that had the {\tt -o} option not been passed to -\htool{LGCopy} then the $n$-gram files built in {\tt lm\_5k} would have -contained not only those with OOV entries but also all the remaining -purely in-vocabulary words, the union of those shown by the two -preceding {\tt LGList} commands, in fact. The method that you choose -to use depends on what experiments you are performing -- the \HTK\ -tools allow you a degree of flexibility. - - -\mysect{Language model generation}{HLMlanmodgen} -Language models are built using the \htool{LBuild} command. If you're -constructing a class-based model you'll also need the \htool{Cluster} -tool, but for now we'll construct a standard word $n$-gram model. - -You'll probably want to accept the default of using Turing-Good -discounting for your $n$-gram model, so the first step in generating a -language model is to produce a frequency of frequency (FoF) table for -the chosen vocabulary list. This is performed automatically by -\htool{LBuild}, but optionally you can generate this yourself using -the \htool{LFoF} tool and pass the result into \htool{LBuild}. This -has only a negligible effect on computation time, but the result is -interesting in itself because it provides useful information for -setting cut-offs. Cut-offs are where you choose to discard low -frequency events from the training text -- you might wish to do this -to decrease model size, or because you judge these infrequent events -to be unimportant. - -In this example, you can generate a suitable table from the language -model databases and the newly generated OOV $n$-gram files: -\begin{verbatim} -$ LFoF -T 1 -n 4 -f 32 lm_5k/5k.wmap lm_5k/5k.fof - holmes.1/data.* lm_5k/data.* -Input file holmes.1/data.0 added, weight=1.0000 -Input file holmes.1/data.1 added, weight=1.0000 -Input file holmes.1/data.2 added, weight=1.0000 -Input file lm_5k/data.0 added, weight=1.0000 -Calculating FoF table -\end{verbatim} % $ - -After executing the command, the FoF table will be stored in -\texttt{lm\_5k/5k.fof}. It shows the number of times a word is found -with a given frequency -- if you recall the definition of Turing-Good -discounting you will see that this needs to be known. See chapter -\ref{c:hlmfiles} for further details of the FoF file format. - -You can also pass a configuration parameter to \htool{LFoF} to make it -output a related table showing the number of $n$-grams that will be -left if different cut-off rates are applied. Rerun \htool{LFoF} and -also pass it the existing configuration file {\tt config}: -\begin{verbatim} -$ LFoF -C config -T 1 -n 4 -f 32 lm_5k/5k.wmap lm_5k/5k.fof - holmes.1/data.* lm_5k/data.* -Input file holmes.1/data.0 added, weight=1.0000 -Input file holmes.1/data.1 added, weight=1.0000 -Input file holmes.1/data.2 added, weight=1.0000 -Input file lm_5k/data.0 added, weight=1.0000 -Calculating FoF table - -cutoff 1-g 2-g 3-g 4-g -0 5001 128252 330433 471998 -1 5001 49014 60314 40602 -2 5001 30082 28646 15492 -3 5001 21614 17945 8801 -... -\end{verbatim} % $ -The information can be interpreted as follows. A bigram cut-off value -of 1 will leave 49014 bigrams in the model, whilst a trigram cut-off -of 3 will result in 17945 trigrams in the model. The configuration -file \texttt{config} forces the tool to print out this extra -information by setting \texttt{LPCALC: TRACE=3}. This is the trace -level for one of the library modules, and is separate from the trace -level for the tool itself (in this case we are passing {\tt -T 1} to -set trace level 1. The trace field consists of a series of bits, so -setting trace 3 actually turns on two of those trace flags. - -We'll now proceed to build our actual language model. In this the -model will be generated in stages by executing the \htool{LBuild} -separately for each of the unigram, bigram and trigram sections of the -model (we won't build a 4-gram model in this example, although the -$n$-gram files we've build allow us to do so at a later date if we so -wish), but you can build the final trigram in one go if you like. The -following command will generate the unigram model: -\begin{verbatim} -$ LBuild -T 1 -n 1 lm_5k/5k.wmap lm_5k/ug - holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ -Look in the {\tt lm\_5k} directory and you'll discover the model {\tt -ug} which can now be used on its own as a complete ARPA format -unigram language model. - -We'll now build a bigram model with a cut-off of 1 and to save -regenerating the unigram component we'll include our existing unigram model: -\begin{verbatim} -$ LBuild -C config -T 1 -t lm_5k/5k.fof -c 2 1 -n 2 - -l lm_5k/ug lm_5k/5k.wmap lm_5k/bg1 - holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ -Passing the {\tt config} file again means that we get given some -discount coefficient information. Try rerunning the tool without the -{\tt -C config} to see the difference. We've also passed in the -existing {\tt lm\_5k/5k.fof} file although this is not necessary -- -try omitting this and you'll find that the resulting file is -identical. What will be different, however, is that the tool will -print out the cut-off table seen when running \htool{LFoF} with the -{\tt LPCALC: TRACE = 3} parameter set; if you don't want to see this -then don't set {\tt LPCALC: TRACE = 3} in the configuration file (try -running the above command without {\tt -t} and {\tt -C}). - -Note that this bigram model is created in \HTK\'s own binary version -of the ARPA format language model, with just the unigram component in -text format by default. This makes the model more compact and faster -to load. If you want to override this then simply add the {\tt -f -TEXT} parameter to the command. - -Finally, the trigram model can be generated using the command: -\begin{verbatim} -$ LBuild -T 1 -c 3 1 -n 3 -l lm_5k/bg1 - lm_5k/5k.wmap lm_5k/tg1_1 - holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ - -Alternatively instead of the three stages above, you can also build -the final trigram in one step: -\begin{verbatim} -$ LBuild -T 1 -c 2 1 -c 3 1 -n 3 lm_5k/5k.wmap - lm_5k/tg2-1_1 holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ -If you compare the two trigram models you'll see that they're the same -size -- there will probably be a few insignificant changes in -probability due to more cumulative rounding errors incorporated in the -three stage procedure. - - -\mysect{Testing the LM perplexity}{HLMtestingpp} -\index{Perplexity} -Once the language models have been generated, their ``goodness'' can -be evaluated by computing the perplexity of previously unseen text -data. This won't necessarily tell you how well the language model -will perform in a speech recognition task because it takes no account -of acoustic similarities or the vagaries of any particular system, but -it will reveal how well a given piece of test text is modelled by your -language model. The directory \texttt{test} contains a single story -which was withheld from the training text for testing purposes -- if -it had been included in the training text then it wouldn't be fair to -test the perplexity on it since the model would have already `seen' it. - -Perplexity evaluation is carried out using \htool{LPlex}. The tool -accepts input text in one of two forms -- either as an HTK style MLF -(this is the default mode) or as a simple text stream. The text stream -mode, specified with the \texttt{-t} option, will be used to evaluate -the test material in this example. - -\begin{verbatim} -$ LPlex -n 2 -n 3 -t lm_5k/tg1_1 test/red-headed_league.txt -LPlex test #0: 2-gram -perplexity 131.8723, var 7.8744, utterances 556, words predicted 8588 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg1_1: -Lang model requested exact backed n/a mean stdev - bigram 8588 78.9% 20.6% 0.4% -4.88 2.81 - trigram 0 0.0% 0.0% 0.0% 0.00 0.00 -LPlex test #1: 3-gram -perplexity 113.2480, var 8.9254, utterances 556, words predicted 8127 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg1_1: -Lang model requested exact backed n/a mean stdev - bigram 5357 68.2% 31.1% 0.6% -5.66 2.93 - trigram 8127 34.1% 30.2% 35.7% -4.73 2.99 -\end{verbatim} % $ -The multiple \texttt{-n} options instruct \htool{LPlex} to perform two -separate tests on the data. The first test (\texttt{-n 2}) will use -only the bigram part of the model (and unigram when backing off), -whilst the second test (\texttt{-n 3}) will use the full trigram -model. For each test, the first part of the result gives general -information such as the number of utterances and tokens encountered, -words predicted and OOV statistics. The second part of the results -gives explicit access statistics for the back off model. For the -trigram model test, the total number of words predicted is 8127. From -this number, 34.1\% were found as explicit trigrams in the model, 30.2\% -were computed by backing off to the respective bigrams and 35.7\% were -simply computed as bigrams by shortening the word context. - -These perplexity tests do not include the prediction of words from -context which includes OOVs. To include such $n$-grams in the -calculation the \texttt{-u} option should be used. -\begin{verbatim} -$ LPlex -u -n 3 -t lm_5k/tg1_1 test/red-headed_league.txt -LPlex test #0: 3-gram -perplexity 117.4177, var 8.9075, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg1_1: -Lang model requested exact backed n/a mean stdev - bigram 5911 68.5% 30.9% 0.6% -5.75 2.94 - trigram 9187 35.7% 31.2% 33.2% -4.77 2.98 -\end{verbatim} % $ -The number of tokens predicted has now risen to 9187. For analysing -OOV rates the tool provides the \texttt{-o} option which will print a -list of unique OOVs encountered together with their occurrence counts. -Further trace output is available with the -\texttt{-T} option. - - -\mysect{Generating and using count-based models}{HLMgeneratingcount} -\index{Count-based language models} -The language models generated in the previous section are static in -terms of their size and vocabulary. For example, in order to evaluate -a trigram model with cut-offs 2 (bigram) and 2 (trigram) the user -would be required to rebuild the bigram and trigram stages of the -model. When large amounts of text data are used this can be a very -time consuming operation. - -The HLM toolkit provides the capabilities to generate and manipulate a -more generic type of model, called a count-based models, which can be -dynamically adjusted in terms of its size and vocabulary. Count-based -models are produced by specifying the \texttt{-x} option to -\htool{LBuild}. The user may set cut-off parameters which control the -initial size of the model, but if so then once the model is generated -only higher cut-off values may be specified in the subsequent -operations. The following command demonstrates how to generate a -count-based model: -\begin{verbatim} -$ LBuild -C config -T 1 -t lm_5k/5k.fof -c 2 1 -c 3 1 - -x -n 3 lm_5k/5k.wmap lm_5k/tg1_1c - holmes.1/data.* lm_5k/data.0 -\end{verbatim} % $ -Note that in the above example the full trigram model is generated -by a single invocation of the tool and no intermediate files are -kept (i.e. the unigram and bigram models files). - -The generated model can now be used in perplexity tests and different -model sizes can be obtained by specifying new cut-off values via the -\texttt{-c} option of \htool{LPlex}. Thus, using a trigram model with -cut-offs (2,2) gives -\begin{verbatim} -$ LPlex -c 2 2 -c 3 2 -T 1 -u -n 3 -t lm_5k/tg1_1c - test/red-headed_league.txt -... -LPlex test #0: 3-gram -Processing text stream: test/red-headed_league.txt -perplexity 126.2665, var 9.0519, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) -... -\end{verbatim} % $ -and a model with cut-offs (3,3) gives -\begin{verbatim} -$ LPlex -c 2 3 -c 3 3 -T 1 -u -n 3 -t lm_5k/tg1_1c - test/red-headed_league.txt -... -Processing text stream: test/red-headed_league.txt -perplexity 133.4451, var 9.0880, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) -... -\end{verbatim} % $ - -However, the count model \texttt{tg1\_1c} cannot be used directly in -recognition tools such as \htool{HVite} or \htool{HLvx}. An ARPA -style model of the required size suitable for recognition can be -derived using the \htool{HLMCopy} tool: -\begin{verbatim} -$ HLMCopy -T 1 lm_5k/tg1_1c lm_5k/rtg1_1 -\end{verbatim} % $ -This will be the same as the original trigram model built above, with -the exception of some insignificant rounding differences. - - -\mysect{Model interpolation}{HLMmodelinterp} -\index{Interpolating language models} -The \HTK\ language modelling tools also provide the capabilities to -produce and evaluate interpolated language models. Interpolated -models are generated by combining a number of existing models in a -specified ratio to produce a new model using the tool \htool{LMerge}. -Furthermore, \htool{LPlex} can also compute perplexities using -linearly interpolated $n$-gram probabilities from a number of source -models. The use of model interpolation will be demonstrated by -combining the previously generated Sherlock Holmes model with an -existing 60,000 word business news domain trigram model -(\texttt{60bn\_tg.lm}). The perplexity measure of the unseen Sherlock -Holmes text using the business news model is 297 with an OOV rate of -1.5\%. ({\tt LPlex -t -u 60kbn\_tg.lm test/*}). In the following -example, the perplexity of the test date will be calculated by -combining the two models in the ratio of 0.6 \texttt{60kbn\_tg.lm} and -0.4 \texttt{tg1\_1c}: -\begin{verbatim} -$ LPlex -T 1 -u -n 3 -t -i 0.6 ./60kbn_tg.lm - lm_5k/tg1_1c test/red-headed_league.txt -Loading language model from lm_5k/tg1_1c -Loading language model from ./60kbn_tg.lm -Using language model(s): - 3-gram lm_5k/tg1_1c, weight 0.40 - 3-gram ./60kbn_tg.lm, weight 0.60 -Found 60275 unique words in 2 model(s) -LPlex test #0: 3-gram -Processing text stream: test/red-headed_league.txt -perplexity 188.0937, var 11.2408, utterances 556, words predicted 9721 -num tokens 10408, OOV 131, OOV rate 1.33% (excl. ) - -Access statistics for lm_5k/tg1_1c: -Lang model requested exact backed n/a mean stdev - bigram 5479 68.0% 31.3% 0.6% -5.69 2.93 - trigram 8329 34.2% 30.6% 35.1% -4.75 2.99 - -Access statistics for ./60kbn_tg.lm: -Lang model requested exact backed n/a mean stdev - bigram 5034 83.0% 17.0% 0.1% -7.14 3.57 - trigram 9683 48.0% 26.9% 25.1% -5.69 3.53 -\end{verbatim} % $ - -A single combined model can be generated using \htool{LMerge}: -\begin{verbatim} -$ LMerge -T 1 -i 0.6 ./60kbn_tg.lm 5k_unk.wlist - lm_5k/rtg1_1 5k_merged.lm -\end{verbatim} % $ -Note that \htool{LMerge} cannot merge count-based models, hence the -use of \texttt{lm\_5k/rtg1\_1} instead of its count-based equivalent -\texttt{lm\_5k/tg1\_1c}. Furthermore, the word list supplied to the -tool also includes the OOV symbol (\texttt{!!UNK}) in order to -preserve OOV $n$-grams in the output model which in turn allows the -use of the \texttt{-u} option in \htool{LPlex}. - -Note that the perplexity you will obtain with this combined model is -much lower than that when interpolating the two together because the -word list has been reduced from the union of the 60K and 5K ones down -to a single 5K list. You can build a 5K version of the 60K model -using \htool{HLMCopy} and the {\tt -w} option, but first you need to -construct a suitable word list -- if you pass it the {\tt -5k\_unk.wlist} one it will complain about the words in it that weren't -found in the language model. In the {\tt extras} subdirectory you'll -find a Perl script to rip the word list from the {\tt 60kbn\_tg.lm} -model, {\tt getwordlist.pl}, and the result of running it in {\tt -60k.wlist} (the script will work with any ARPA type language model). -The intersection of the 60K and 5K word lists is what is required, so -if you then run the {\tt extras/intersection.pl} Perl script, amended -to use suitable filenames, you'll get the result in {\tt -60k-5k-int.wlist}. Then \htool{HLMCopy} can be used to produce a 5K -vocabulary version of the 60K model: -\begin{verbatim} -$ HLMCopy -T 1 -w 60k-5k-int.wlist 60kbn_tg.lm 5kbn_tg.lm -\end{verbatim} % $ -This can then be linearly interpolated with the previous 5K model to -compare the perplexity result with that obtained from the -\htool{LMerge}-generated model. If you try this you will find that -the perplexities are similar, but not exactly the same (a perplexity -of 112 with the merged model and 114 with the two models linearly -interpolated, in fact) -- this is because using \htool{LMerge} to -combine two models and then using the result is not precisely the same -as linearly interpolating two separate models; it is similar, however. - -It is also possible to add to an existing language model using the -\htool{LAdapt} tool, which will construct a new model using supplied -text and then merge it with the existing one in exactly the same way -as \htool{LMerge}. Effectively this tool allows you to short-cut the -process by performing many operations with a single command -- see the -documentation in section \ref{s:LAdapt} for full details. - - -\mysect{Class-based models}{HLMclassModels} -\index{Class language models} -A class-based $n$-gram model is similar to a word-based $n$-gram in -that both store probabilities $n$-tuples of tokens -- except in the -class model case these tokens consist of word {\it classes} instead of -words (although word models typically include at least one class for -the unknown word). Thus building a class model involves constructing -class $n$-grams. A second component of the model calculates the -probability of a word given each class. The HTK tools only support -deterministic class maps, so each word can only be in one class. -Class language models use a separate file to store each of the two -components -- the word-given-class probabilities and the class -$n$-grams -- as well as a third file which points to the two component -files. Alternatively, the two components can be combined together -into a standalone separate file. In this section we'll see how to -build these files using the supplied tools. - -Before a class model can be built it is necessary to construct a class -map which defines which words are in each class. The supplied -\htool{Cluster} tool can derive a class map based on the bigram word -statistics found in some text, although if you are constructing a -large number of classes it can be rather slow (execution time measured -in hours, typically). In many systems class models are combined with -word models to give further gains, so we'll build a class model based -on the Holmes training text and then interpolate it with our existing -word model to see if we can get a better overall model. - -Constructing a class map requires a decision to be made as to how many -separate classes are required. A sensible number depends on what you -are building the model for, and whether you intend it purely to -interpolate with a word model. In the latter case, for example, a -sensible number of classes is often around the 1000 mark when using a -64K word vocabulary. We only have 5000 words in our vocabulary so -we'll choose to construct 150 classes in this case. - -Create a directory called {\tt holmes.2} and run \htool{Cluster} with -\begin{verbatim} -$ Cluster -T 1 -c 150 -i 1 -k -o holmes.2/class lm_5k/5k.wmap - holmes.1/data.* lm_5k/data.0 -Preparing input gram set -Input gram file holmes.1/data.0 added (weight=1.000000) -Input gram file lm_5k/data.0 added (weight=1.000000) -Beginning iteration 1 -Iteration complete -Cluster completed successfully -\end{verbatim} % $ -The word map and gram files are passed as before -- any OOV mapping -should be made before building the class map. Passing the {\tt -k} -option told \htool{Cluster} to keep the unknown word token {\tt !!UNK} -in its own singleton class, whilst the {\tt -c 150} options specifies -that we wish to create 150 classes. The {\tt -i 1} performs only one -iteration of the clustering -- performing further iterations is likely -to give further small improvements in performance, but we won't wait -for this here. Whilst \htool{Cluster} is running you can look at the -end of the {\tt holmes.2/class.1.log} to see how far it has got. On a -Unix-like system you could use a command like {\tt tail -holmes.2/class.1.log}, or if you wanted to monitor progress then {\tt -tail -f holmes.2/class.1.log} would do the trick. The {\tt 1} refers -to the iteration, whilst the results are written to this filename -because of the {\tt -o holmes.2/class} option which sets the prefix -for all output files. - -In the {\tt holmes.2} directory you will also see the files {\tt -class.recovery} and {\tt class.recovery.cm} -- these are a recovery -status file and its associated class map which are exported at regular -intervals because the \htool{Cluster} tool can take so long to run. -In this way you can kill the tool before it has finished and resume -execution at a later date by using the {\tt -x} option; in this case -you would use {\tt -x holmes.2/class.recovery} for example (making -sure you pass the same word map and gram files -- the tool does -{\it not} currently check that you pass it the same files when restarting). - -Once the tool finishes running you should see the file {\tt -holmes.2/class.1.cm} which is the resulting class map. It is in plain -text format so feel free to examine it. Note, for example, how {\tt -CLASS23} consists almost totally of verb forms ending in {\tt -ED}, -whilst {\tt CLASS41} lists various general words for a person or -object. Had you created more classes then you would be likely to see -more distinctive classes. We can now use this file to build the class -$n$-gram component of our language model. -\begin{verbatim} -$ LGCopy -T 1 -d holmes.2 -m holmes.2/cmap -w holmes.2/class.1.cm - lm_5k/5k.wmap holmes.1/data.* lm_5k/data.0 -Input file holmes.1/data.0 added, weight=1.0000 -Input file lm_5k/data.0 added, weight=1.0000 -Copying 2 input files to output files with 2000000 entries -Class map = holmes.2/class.1.cm - saving 162397 ngrams to file holmes.2/data.0 -330433 out of 330433 ngrams stored in 1 files -\end{verbatim} % $ - -The {\tt -w} option specifies an input class map which is applied when -copying the gram files, so we now have a class gram file in {\tt -holmes.2/data.0}. It has an associated word map file {\tt -holmes.2/cmap} -- although this only contains class names it is -technically a word map since it is taken as input wherever a word map -is required by the \HTK\ language modelling tools; recall that word -maps can contain classes as witnessed by {\tt !!UNK} previously. - -You can examine the class $n$-grams in a similar way to previously by -using \htool{LGList} -\begin{verbatim} -$ LGList holmes.2/cmap holmes.2/data.0 | more - -3-Gram File holmes.2/data.0[162397 entries]: - Text Source: LGCopy -CLASS1 CLASS10 CLASS103 : 1 -CLASS1 CLASS10 CLASS11 : 2 -CLASS1 CLASS10 CLASS118 : 1 -CLASS1 CLASS10 CLASS12 : 1 -CLASS1 CLASS10 CLASS126 : 2 -CLASS1 CLASS10 CLASS140 : 2 -CLASS1 CLASS10 CLASS147 : 1 -... -\end{verbatim} % $ - -And similarly the class $n$-gram component of the overall language -model is built using \htool{LBuild} as previously with -\begin{verbatim} -$ LBuild -T 1 -c 2 1 -c 3 1 -n 3 holmes.2/cmap - lm_5k/cl150-tg_1_1.cc holmes.2/data.* -Input file holmes.2/data.0 added, weight=1.0000 -\end{verbatim} % $ - -To build the word-given-class component of the model we must run -\htool{Cluster} again. -\begin{verbatim} -$ Cluster -l holmes.2/class.1.cm -i 0 -q lm_5k/cl150-counts.wc - lm_5k/5k.wmap holmes.1/data.* lm_5k/data.0 -\end{verbatim} % $ - -This is very similar to how we ran \htool{Cluster} earlier, except -that we now want to perform 0 iterations ({\tt -i 0}) and we start by -loading in the existing class map with {\tt -l holmes.2/class.1.cm}. -We don't need to pass {\tt -k} because we aren't doing any further -clustering and we don't need to specify the number of classes since -this is read from the class map along with the class contents. The -{\tt -q lm\_5k/cl150-counts.wc} option tells the tool to write -word-given-class counts to the specified file. Alternatively we could -have specified {\tt -p} instead of {\tt -q} and written probabilities -as opposed to counts. The file is in a plain text format, and either -the {\tt -p} or {\tt -q} version is sufficient for forming the -word-given-class component of a class language model. Note that in -fact we could have simply added either {\tt -p} or {\tt -q} the -first time we ran \htool{Cluster} and generated both the class map and -language model component file in one go. - -Given the two language model components we can now link them together -to make our overall class $n$-gram language model. -\begin{verbatim} -$ LLink lm_5k/cl150-counts.wc lm_5k/cl150-tg_1_1.cc - lm_5k/cl150-tg_1_1 -\end{verbatim} % $ - -The \htool{LLink} tool creates a simple text file pointing to the two -necessary components, auto-detecting whether a count or probabilities -file has been supplied. The resulting file, {\tt lm\_5k/cl150-tg\_1\_1} -is the finished overall class $n$-gram model, which we can now assess -the performance of with \htool{LPlex}. -\begin{verbatim} -$ LPlex -n 3 -t lm_5k/cl150-tg_1_1 test/red-headed_league.txt -LPlex test #0: 3-gram -perplexity 125.9065, var 7.4139, utterances 556, words predicted 8127 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/cl150-tg_1_1: -Lang model requested exact backed n/a mean stdev - bigram 2867 95.4% 4.6% 0.0% -4.61 1.64 - trigram 8127 64.7% 24.1% 11.2% -4.84 2.72 -\end{verbatim} % $ - -The class trigram model performs worse than the word trigram (which -had a perplexity of 117.4), but this is not a surprise since this is -true of almost every reasonably-sized test set -- the class model is -less specific. Interpolating the two often leads to further -improvements, however. We can find out if this will happen in this -case by interpolating the models with \htool{LPlex}. -\begin{verbatim} -$ LPlex -u -n 3 -t -i 0.4 lm_5k/cl150-tg_1_1 lm_5k/tg1_1 - test/red-headed_league.txt -LPlex test #0: 3-gram -perplexity 102.6389, var 7.3924, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg2-1_1: -Lang model requested exact backed n/a mean stdev - bigram 5911 68.5% 30.9% 0.6% -5.75 2.94 - trigram 9187 35.7% 31.2% 33.2% -4.77 2.98 - -Access statistics for lm_5k/cl150-tg_1_1: -Lang model requested exact backed n/a mean stdev - bigram 3104 95.5% 4.5% 0.0% -4.67 1.62 - trigram 9187 66.2% 23.9% 9.9% -4.87 2.75 -\end{verbatim} % $ -So a further gain is obtained -- the interpolated model performs -significantly better. Further improvement might be possible by -attempting to optimise the interpolation weight. - -Note that we could also have used \htool{LLink} to build a single -class language model file instead of producing a third file which -points to the two components. We can do this by using the {\tt -s} -single file option. -\begin{verbatim} -$ LLink -s lm_5k/cl150-counts.wc lm_5k/cl150-tg_1_1.cc - lm_5k/cl150-tg_1_1.all -\end{verbatim} % $ -The file {\tt lm\_5k/cl150-tg\_1\_1.all} is now a standalone language -model, identical in performance to {\tt lm\_5k/cl150-tg\_1\_1} created -earlier. - - -\mysect{Problem solving}{HLMproblemSolving} -\index{Problem solving} -Sometimes a tool returns an error message which doesn't seem to make -sense when you check the files you've passed and the switches -you've given. This section provides a few problem-solving hints. - -\mysubsect{File format problems}{HLMfileproblems} -If a file which seems to be in the correct format is giving errors -such as `Bad header' then make sure that you are using the correct -input filter. If the file is gzipped then ensure you are using a -suitable configuration parameter to decompress it on input; similarly -if it isn't compressed then check you're not trying to decompress it. -Also check to see if you have two files, one with and one without a -{\tt .gz} extension -- maybe you're picking up the wrong one and -checking the other file. - -You might be missing a switch or configuration file to tell the tool -which format the file is in. In general none of the \HTK\ language -modelling tools can auto-detect file formats -- unless you tell them -otherwise they will expect the file type they are configured to -default to and will give an error relevant to that type if it does not -match. For example, if you omit to pass {\tt -t} to \htool{LPlex} -then it will treat an input text file as a -\HTK\ label file and you will get a `Too many columns' error if a line -has more than 100 words on it or a ridiculously high perplexity -otherwise. Check the command documentation in chapter -\ref{c:toolref}. - -\mysubsect{Command syntax problems}{HLMsyntaxproblems} -If a tool is giving unexpected syntax errors then check that you have -placed all the option switches {\it before} the compulsory parameters --- the tools will not work if this rule is not followed. You must -also place whitespace between switches and any options they expect. -The ordering of switches is not important, but the order of compulsory -parameters cannot be changed. Check the switch syntax -- passing a -redundant parameter to one will cause problems since it will be -interpreted as the first compulsory parameter. - -All \HTK\ tools assume that a parameter which starts with a digit is a -number of some kind -- you cannot pass filenames which start with a -digit, therefore. This is a limitation of the routines in -\htool{HShell}. - -\mysubsect{Word maps}{HLMwordmapproblems} -If your word map and gram file combination is being rejected then make -sure they match in terms of their sequence number. Although gram -files are mainly stored in a binary format the header is in plain text -and so if you look at the top of the file you can compare it -manually with the word map. Note it is not a good idea to fiddle the -values to match since they are bound to be different for a good -reason! Word maps must have the same or a higher sequence id than a -gram file in order to open that gram file -- the names must match too. - -The tools might not behave as you expect. For example, \htool{LGPrep} -will write its word map to the file {\tt wmap} unless you tell it -otherwise, irrespective of the input filename. It will also place it -in the same directory as the gram files unless you changed its name -from {\tt wmap}(!) -- check you are picking up the correct word map -when building subsequent gram files. - -The word ids start at 65536 in order to allow space for that many -classes below them -- anything lower is assumed to be a class. In -turn the number of classes is limited to 65535. - -\mysubsect{Memory problems}{HLMmemoryproblems} -Should you encounter memory problems then try altering the amount of -space reserved by the tools using the relevant tool switches such as -{\tt -a} and {\tt -b} for {\tt LGPrep} and {\tt LGCopy}. You could -also try turning on memory tracing to see how much memory is used and -for what (use the configuration {\tt TRACE} parameters and the {\tt --T} option as appropriate. Language models can become very large, -however -- hundreds of megabytes in size, for example -- so it is -important to apply cut-offs and/or discounting as appropriate to keep -them to a suitable size for your system. - -\mysubsect{Unexpected perplexities}{HLMperpproblems} -If perplexities are not what you expected, then there are many things -that could have gone wrong -- you may not have constructed a suitable -model -- but also some mistakes you might have made. Check that you -passed all the switches you intended, and check that you have been -consistent in your use of {\tt *RAW*} configuration parameters -- -using escaped characters in the language model without them in your -test text will lead to unexpected results. If you have not escaped -words in your word map then check they're not escaped in any class -map. When using a class model make sure you're passing the correct -input file of the three separate components. - -Check the switches to {\tt LPlex} -- did you set {\tt -u} as you -intended? If you passed a text file did you pass {\tt -t}? Not doing -so will lead either to a format error or to extremely bizarre -perplexities! - -Did you build the length of $n$-gram you meant to? Check the final -language model by looking at the header of it, which is always stored -in plain text format. You can easily see how many $n$-grams there are -for each size of $n$. diff --git a/HTKBook/htkbook-pdf.tex b/HTKBook/htkbook-pdf.tex deleted file mode 100644 index ca50344..0000000 --- a/HTKBook/htkbook-pdf.tex +++ /dev/null @@ -1,207 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-6 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 23/09/95, VV 20/03/97 -% - -% Preamble -\documentclass[a4paper,oneside]{book} - -% This next line is uncommented by the Makefile when building the -% PDF version: -\usepackage[dvipdfm,colorlinks]{hyperref} - -\input{HTK} -\usepackage{makeidx} -\usepackage{amsmath} -\usepackage{amssymb} - -\makeindex - -% Start of Document -\pagestyle{empty} -\begin{document} -\newlength{\saveindent} -\setlength{\saveindent}{\parindent} - -%\initfloatingfigs - -% Show title page -% \setlength{\epsfxsize}{150mm} -% \leavevmode -% \epsfbox{\figDir/cover.eps} - -{ \Large \ \\ - -\vspace{1cm} - -\noindent The HTK Book - -\vspace{1cm} - -\noindent Steve Young \\ -\noindent Gunnar Evermann \\ -\noindent Mark Gales \\ -\noindent Thomas Hain \\ -\noindent Dan Kershaw \\ -\noindent Xunying (Andrew) Liu \\ -\noindent Gareth Moore \\ -\noindent Julian Odell \\ -\noindent Dave Ollason \\ -\noindent Dan Povey \\ -\noindent Valtcho Valtchev \\ -\noindent Phil Woodland \\ - -\vspace{0.5cm} - -\noindent The HTK Book (for HTK Version \version) - -\vspace{1.0cm} - -\noindent \copyright COPYRIGHT 1995-1999 Microsoft Corporation. - -\noindent \copyright COPYRIGHT 2001-2009 Cambridge University Engineering Department. - -\vspace{0.2cm} - -\noindent All Rights Reserved - -\vspace{0,5cm} - -\noindent First published December 1995 -\vspace{0.05cm} - -\noindent Reprinted March 1996 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.1 March 1997 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.2 January 1999 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.0 July 2000 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.1 December 2001 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.2 December 2002 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.3 April 2005 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.4 March 2009 -\vspace{0.05cm} - -} - -% TOC -\newpage -\tableofcontents - -% Actual contents -\newpage -\pagestyle{myheadings} -\pagenumbering{arabic} - -\part{Tutorial Overview} -\include{fundaments} -\include{htkoview} -\include{exampsys} - -\part{HTK in Depth} -\include{openviron} -\include{speechio} -\include{labels} -\include{models} -\include{train} -\include{adapt} -\include{refine} -\include{discmods} -\include{netdict} -\include{decode} - -\part{Language Modelling} -\include{hlmfund} -\include{hlmtutorial} -\include{hlmfiles} - -\part{Reference Section} -\mychap{The HTK Tools}{toolref} -\include{HTKRef/tools} -\include{HTKRef/Cluster} -\include{HTKRef/HBuild} -\include{HTKRef/HCompV} -\include{HTKRef/HCopy} -\include{HTKRef/HDMan} -\include{HTKRef/HDecode} -\include{HTKRef/HERest} -\include{HTKRef/HHEd} -\include{HTKRef/HInit} -\include{HTKRef/HLEd} -\include{HTKRef/HList} -\include{HTKRef/HLMCopy} -\include{HTKRef/HLRescore} -\include{HTKRef/HLStats} -\include{HTKRef/HMMIRest} -\include{HTKRef/HParse} -\include{HTKRef/HQuant} -\include{HTKRef/HRest} -\include{HTKRef/HResults} -\include{HTKRef/HSGen} -\include{HTKRef/HSLab} -\include{HTKRef/HSmooth} -\include{HTKRef/HVite} -\include{HTKRef/LAdapt} -\include{HTKRef/LBuild} -\include{HTKRef/LFoF} -\include{HTKRef/LGCopy} -\include{HTKRef/LGList} -\include{HTKRef/LGPrep} -\include{HTKRef/LLink} -\include{HTKRef/LMerge} -\include{HTKRef/LNewMap} -\include{HTKRef/LNorm} -\include{HTKRef/LPlex} -\include{HTKRef/LSubset} -\include{config} -\include{errors} -\include{htkslf} - -\clearpage -\markboth{\bfseries \rmfamily Index}{\bfseries \rmfamily Index} -\printindex -\end{document} - - diff --git a/HTKBook/htkbook.tex b/HTKBook/htkbook.tex deleted file mode 100644 index 0bb715b..0000000 --- a/HTKBook/htkbook.tex +++ /dev/null @@ -1,207 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-6 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 23/09/95, VV 20/03/97 -% - -% Preamble -\documentclass[a4paper,oneside]{book} - -% This next line is uncommented by the Makefile when building the -% PDF version: -%\usepackage[dvipdfm,colorlinks]{hyperref} - -\input{HTK} -\usepackage{makeidx} -\usepackage{amsmath} -\usepackage{amssymb} - -\makeindex - -% Start of Document -\pagestyle{empty} -\begin{document} -\newlength{\saveindent} -\setlength{\saveindent}{\parindent} - -%\initfloatingfigs - -% Show title page -% \setlength{\epsfxsize}{150mm} -% \leavevmode -% \epsfbox{\figDir/cover.eps} - -{ \Large \ \\ - -\vspace{1cm} - -\noindent The HTK Book - -\vspace{1cm} - -\noindent Steve Young \\ -\noindent Gunnar Evermann \\ -\noindent Mark Gales \\ -\noindent Thomas Hain \\ -\noindent Dan Kershaw \\ -\noindent Xunying (Andrew) Liu \\ -\noindent Gareth Moore \\ -\noindent Julian Odell \\ -\noindent Dave Ollason \\ -\noindent Dan Povey \\ -\noindent Valtcho Valtchev \\ -\noindent Phil Woodland \\ - -\vspace{0.5cm} - -\noindent The HTK Book (for HTK Version \version) - -\vspace{1.0cm} - -\noindent \copyright COPYRIGHT 1995-1999 Microsoft Corporation. - -\noindent \copyright COPYRIGHT 2001-2009 Cambridge University Engineering Department. - -\vspace{0.2cm} - -\noindent All Rights Reserved - -\vspace{0,5cm} - -\noindent First published December 1995 -\vspace{0.05cm} - -\noindent Reprinted March 1996 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.1 March 1997 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.2 January 1999 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.0 July 2000 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.1 December 2001 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.2 December 2002 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.3 April 2005 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.4 March 2009 -\vspace{0.05cm} - -} - -% TOC -\newpage -\tableofcontents - -% Actual contents -\newpage -\pagestyle{myheadings} -\pagenumbering{arabic} - -\part{Tutorial Overview} -\include{fundaments} -\include{htkoview} -\include{exampsys} - -\part{HTK in Depth} -\include{openviron} -\include{speechio} -\include{labels} -\include{models} -\include{train} -\include{adapt} -\include{refine} -\include{discmods} -\include{netdict} -\include{decode} - -\part{Language Modelling} -\include{hlmfund} -\include{hlmtutorial} -\include{hlmfiles} - -\part{Reference Section} -\mychap{The HTK Tools}{toolref} -\include{HTKRef/tools} -\include{HTKRef/Cluster} -\include{HTKRef/HBuild} -\include{HTKRef/HCompV} -\include{HTKRef/HCopy} -\include{HTKRef/HDMan} -\include{HTKRef/HDecode} -\include{HTKRef/HERest} -\include{HTKRef/HHEd} -\include{HTKRef/HInit} -\include{HTKRef/HLEd} -\include{HTKRef/HList} -\include{HTKRef/HLMCopy} -\include{HTKRef/HLRescore} -\include{HTKRef/HLStats} -\include{HTKRef/HMMIRest} -\include{HTKRef/HParse} -\include{HTKRef/HQuant} -\include{HTKRef/HRest} -\include{HTKRef/HResults} -\include{HTKRef/HSGen} -\include{HTKRef/HSLab} -\include{HTKRef/HSmooth} -\include{HTKRef/HVite} -\include{HTKRef/LAdapt} -\include{HTKRef/LBuild} -\include{HTKRef/LFoF} -\include{HTKRef/LGCopy} -\include{HTKRef/LGList} -\include{HTKRef/LGPrep} -\include{HTKRef/LLink} -\include{HTKRef/LMerge} -\include{HTKRef/LNewMap} -\include{HTKRef/LNorm} -\include{HTKRef/LPlex} -\include{HTKRef/LSubset} -\include{config} -\include{errors} -\include{htkslf} - -\clearpage -\markboth{\bfseries \rmfamily Index}{\bfseries \rmfamily Index} -\printindex -\end{document} - - diff --git a/HTKBook/htkoview.tex b/HTKBook/htkoview.tex deleted file mode 100644 index b1ad8d1..0000000 --- a/HTKBook/htkoview.tex +++ /dev/null @@ -1,684 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{An Overview of the \HTK\ Toolkit}{htkoview} - -\sidepic{toolkit}{50}{} -The basic principles of HMM-based recognition were outlined in -the previous chapter and a number of the key \HTK\ tools have already -been mentioned. This chapter describes the software architecture -of a \HTK\ tool. It then gives a brief outline of all the -\HTK\ tools and the way that they are used together to construct -and test HMM-based recognisers. For the benefit of existing \HTK\ users, -the major changes in recent versions of \HTK\ are listed. -The following chapter will then illustrate -the use of the \HTK\ toolkit -by working through a practical example of building a simple -continuous speech recognition system. - -\mysect{\HTK\ Software Architecture}{softarch} - -Much of the functionality of \HTK\ is built into the library modules. -These modules ensure that every tool interfaces to the outside world -in exactly the same way. They also provide a central resource of -commonly used functions. Fig.~\href{f:softarch} illustrates -the software\index{software architecture} -structure of a typical \HTK\ tool and shows its input/output interfaces. - -User input/output and interaction with the operating system is -controlled by the library -module \htool{HShell}\index{hshell@\htool{HShell}} and all memory management -is controlled by \htool{HMem}\index{hmem@\htool{HMem}}. -Math support is provided by \htool{HMath}\index{hmath@\htool{HMath}} -and the signal processing operations needed for speech analysis are -in \htool{HSigP}\index{hsigp@\htool{HSigP}}.\index{library modules} -Each of the file types required by \HTK\ has a dedicated -interface module. -\htool{HLabel}\index{hlabel@\htool{HLabel}} provides the interface for label files, -\htool{HLM}\index{hlm@\htool{HLM}} for language model files, -\htool{HNet}\index{hnet@\htool{HNet}} for networks and lattices, -\htool{HDict}\index{hdict@\htool{HDict}} for dictionaries, -\htool{HVQ}\index{hvq@\htool{HVQ}} for VQ codebooks and -\htool{HModel}\index{hmodel@\htool{HModel}} for HMM definitions. - -\sidefig{softarch}{75}{Software Architecture}{-4}{ -All speech input and output at the waveform level -is via \htool{HWave} -and at the parameterised level via \htool{HParm}. -As well as providing a consistent interface, \htool{HWave} and -\htool{HLabel} -support multiple file formats allowing data to be imported -from other systems. Direct audio input is -supported by \htool{HAudio} -and simple interactive graphics is -provided by \htool{HGraf}. -\htool{HUtil} provides a -number of utility routines for manipulating -HMMs while \htool{HTrain} and \htool{HFB} contain support for the -various \HTK\ training tools. \htool{HAdapt} provides support -for the various \HTK\ adaptation tools. -Finally, \htool{HRec} contains -the main recognition processing functions. -}\index{haudio@\htool{HAudio}} -\index{hrec@\htool{HRec}} -\index{hutil@\htool{HUtil}} -\index{hwave@\htool{HWave}} -\index{hparm@\htool{HParm}} -\index{hgraf@\htool{HGraf}} -\index{htrain@\htool{HTrain}} - -As noted in the next section, fine control over -the behaviour of these library modules -is provided by setting configuration variables\index{configuration variables}. Detailed descriptions -of the functions provided by the library modules are given in the second -part of this book and the relevant configuration variables are described -as they arise. For reference purposes, a complete list is given in -chapter~\ref{c:confvars}. - -\mysect{Generic Properties of a HTK Tool}{genprops} - -\HTK\ tools are designed to run with a traditional command-line style interface. -Each tool\index{command line!options} -has a number of required arguments plus optional arguments. -The latter are always prefixed by a minus sign. As an example, -the following command would invoke the mythical \HTK\ tool called -\htool{HFoo} -\begin{verbatim} - HFoo -T 1 -f 34.3 -a -s myfile file1 file2 -\end{verbatim} -This tool has two main arguments called \texttt{file1} and -\texttt{file2} plus four optional arguments. Options -are always introduced by a single letter option name followed -where appropriate by the option value. The option value -is always separated from the option name by a space. Thus, the value of the -\texttt{-f} option is a real number, the value of the -\texttt{-T} option is an integer number and the value of the -\texttt{-s} option is a string. The \texttt{-a} option has no following -value and it is used as a simple flag to enable or disable some -feature of the tool. Options whose names are a capital letter -have the same meaning across all tools. For example, the \texttt{-T} -option is always used to control the trace output of a \HTK\ tool. - -In addition to command line arguments, the operation of a tool -can be controlled by parameters stored -in a configuration file\index{configuration files}. -For example, if the command -\begin{verbatim} - HFoo -C config -f 34.3 -a -s myfile file1 file2 -\end{verbatim} -is executed, the tool \htool{HFoo} will load the -parameters stored in the configuration -file \texttt{config} during its initialisation procedures. Multiple -configuration files can be specified by repeating the \verb|-C| -option, e.g.\ -\begin{verbatim} - HFoo -C config1 -C config2 -f 34.3 -a -s myfile file1 file2 -\end{verbatim} -Configuration parameters can sometimes be used as an -alternative to using command line arguments. For example, trace -options can always be set within a configuration file. However, the -main use of configuration files is to control the detailed behaviour -of the library modules on which all \HTK\ tools depend. - -Although this style of command-line -working may seem old-fashioned when compared to modern -graphical user interfaces, it has many advantages. In particular, -it makes it simple to write shell scripts to control \HTK\ tool execution. This -is vital for performing large-scale system building and experimentation. -Furthermore, defining all operations using text-based commands allows -the details of system construction or experimental procedure to -be recorded and documented. - -Finally, note that a summary of the command line and -options for any \HTK\ tool can be obtained simply by executing -the tool with no arguments. - -\mysect{The Toolkit}{toolkit} - -The \HTK\ tools are best introduced by going through the -processing steps involved in building a sub-word based continuous speech -recogniser. As shown in Fig.~\href{f:sysoview}, there are 4 -main phases: data preparation, training, testing and analysis. - -\subsection{Data Preparation Tools} - -\index{data preparation} -In order to build a set of HMMs, a set of speech data files -and their associated transcriptions are required. Very often -speech data will be obtained from database archives, typically -on CD-ROMs. Before it can be used in training, it must be -converted into the appropriate parametric form and any associated -transcriptions must be converted to have the correct format -and use the required phone or word labels. If the speech needs to be -recorded, then the tool \htool{HSLab}\index{hslab@\htool{HSLab}} can be used both to record the -speech and to manually annotate it with any required transcriptions. - -Although all \HTK\ tools can parameterise waveforms \textit{on-the-fly}, in practice -it is usually better to -parameterise the data just once. The tool \htool{HCopy}\index{hcopy@\htool{HCopy}} -is used for this. As the name suggests, \htool{HCopy} is used to copy one -or more source files to an output file. -Normally, \htool{HCopy} copies the whole file, but a variety -of mechanisms are provided for extracting segments of files and concatenating -files. By setting the appropriate configuration variables, all input files -can be converted to parametric form as they are read-in. -Thus, simply copying each file in this manner performs the required encoding. -The tool \htool{HList}\index{hlist@\htool{HList}} can be used to check the contents of any speech file -and since it can also convert input on-the-fly, it can be used to check -the results of any conversions before processing large quantities of data. -Transcriptions will also need preparing. Typically the labels used in the -original source transcriptions will not be exactly as required, for example, -because of differences in the phone sets used. Also, HMM training might -require the labels to be context-dependent. The tool \htool{HLEd}\index{hled@\htool{HLEd}} is -a script-driven label editor which is designed to make the required transformations -to label files. \htool{HLEd} can also output files to a single \textit{Master Label -File} MLF which is usually more convenient for subsequent processing. -Finally on data preparation, \htool{HLStats}\index{hlstats@\htool{HLStats}} can gather and display statistics -on label files and where required, \htool{HQuant}\index{hquant@\htool{HQuant}} can be used to build a -VQ codebook in preparation for building discrete probability HMM system. - -\subsection{Training Tools} - -The second step of system building is to\index{training tools} -define the topology required for each HMM by writing a prototype definition. -\HTK\ allows HMMs to be built with any desired topology. -HMM definitions can be stored externally as simple text files and -hence it is possible to edit them with any convenient text -editor. Alternatively, the standard \HTK\ distribution includes -a number of example HMM prototypes and a script to generate -the most common topologies automatically. -With the exception of the transition -probabilities, all of the HMM parameters given in -the prototype definition\index{prototype definition} -are ignored. The purpose of the prototype definition is only -to specify the overall characteristics and topology of the HMM. The -actual parameters will be computed later by the training tools. -Sensible values for -the transition probabilities must be given but the training -process is very insensitive to these. An acceptable and simple strategy -for choosing these probabilities is to make all of the transitions -out of any state equally likely. - - -\centrefig{sysoview}{100}{\HTK\ Processing Stages} - -The actual training process takes place in stages and it is -illustrated in more detail in Fig.~\href{f:tsubword}. -Firstly, an initial set of models must be created. If there is -some speech data available for which the location of the sub-word (i.e.\ phone) -boundaries have been marked, then this can be used as \textit{bootstrap data}. -In this case, the tools \htool{HInit}\index{hinit@\htool{HInit}} -and \htool{HRest}\index{hrest@\htool{HRest}} -provide {\it isolated word} style -training using the fully labelled bootstrap\index{bootstrapping} data. Each of the required -HMMs is generated individually. \htool{HInit} reads in all of the bootstrap -training data and {\it cuts out} all of the examples of the required -phone. It then iteratively computes an initial set of parameter values -using a {\it segmental k-means} procedure\index{segmental k-means}. On the first cycle, the training data -is uniformly segmented, each model state is matched with the -corresponding data segments and then means and variances are estimated. -If mixture Gaussian models are being trained, then a modified form -of k-means clustering is used. On the second and successive cycles, -the uniform segmentation is replaced by Viterbi alignment. -The initial parameter values computed by \htool{HInit} are then further re-estimated -by \htool{HRest}. Again, the fully labelled bootstrap data is used but this -time the segmental k-means procedure is replaced by the Baum-Welch re-estimation -procedure described in the previous chapter. When no bootstrap data is -available, a so-called \textit{flat start} can be used. In this case all -of the phone models are initialised to be identical and have state means -and variances equal to the global speech mean and variance. The tool -\htool{HCompV}\index{hcompv@\htool{HCompV}} can be used for this.\index{flat start} - -\centrefig{tsubword}{90}{Training Sub-word HMMs} - -Once an initial set of models has been created, the tool \htool{HERest} -is used to perform {\em embedded training} using the -entire\index{embedded training} -training set. \htool{HERest}\index{herest@\htool{HERest}} performs a single Baum-Welch -re-estimation of the whole set of HMM phone models simultaneously. For each -training utterance, the corresponding phone models are concatenated and then -the forward-backward algorithm is used to accumulate the statistics of state -occupation, means, variances, etc., for each HMM in the sequence. When -all of the training data has been processed, the accumulated statistics -are used to compute re-estimates of the HMM parameters. \htool{HERest} is -the core \HTK\ training tool. It is designed to process large databases, it has -facilities for pruning\index{pruning} to reduce computation and it can be run in parallel -across a network of machines. - -The philosophy of system construction in \HTK\ is that HMMs should be -\index{HMM!build philosophy} -refined incrementally. Thus, a typical progression is to start with a -simple set of single Gaussian context-independent phone models and then -iteratively refine them by expanding them to include context-dependency -and use multiple mixture component Gaussian distributions. -The tool \htool{HHEd}\index{hhed@\htool{HHEd}} is a -HMM definition editor which will clone models\index{HMM!editor} -into context-dependent sets, apply a variety of parameter tyings -and increment the number of mixture components in specified distributions. -The usual process is to modify a set of HMMs in stages using \htool{HHEd} -and then -re-estimate the parameters of the modified set using \htool{HERest} -after each stage. -To improve performance for specific speakers the tools -\htool{HERest}\index{herest@\htool{HERest}} -and \htool{HVite}\index{hvite@\htool{HVite}} can be -used to adapt HMMs to better model the characteristics of particular -speakers using a small amount of training or adaptation data. -The end result of which is a speaker adapted system. - -The single biggest problem in building context-dependent -HMM systems is always data -insufficiency. The more complex the model set, the more data is -needed to make robust estimates of its parameters, and since data is -usually limited, a balance must be struck between complexity and -the available data. -For continuous density systems, this balance is achieved by -tying parameters together as mentioned above. Parameter tying -allows data to be pooled so that the shared parameters can be robustly -estimated. -In addition to continuous density systems, \HTK\ also supports -fully tied mixture systems and discrete probability systems. In these -cases, the data insufficiency problem is usually addressed by smoothing -the distributions and the -tool \htool{HSmooth}\index{hsmooth@\htool{HSmooth}} is used for this. - -\subsection{Recognition Tools} - -\HTK\ provides a recognition tool\index{recognition!tools} called -\htool{HVite}\index{hvite@\htool{HVite}} that allows recognition -using language models and lattices. -\htool{HLRecsore}\index{hvite@\htool{HLRescore}} is a tool that allows -lattices generated using \htool{HVite} (or \htool{HDecode}) to -be manipulated for example to apply a more complex language model. -An additional recogniser is also available as an extension to \HTK\, -\htool{HDecode}\index{hdecode@\htool{HDecode}}. Note: \htool{HDecode} is -distributed under a more restrictive licence agreement. - -\subsubsection{\htool{HVite}} -\HTK\ provides a recognition -tool\index{recognition!tools} called \htool{HVite}\index{hvite@\htool{HVite}} -which uses the token passing algorithm described in the previous -chapter to perform Viterbi-based speech recognition. \htool{HVite} -takes as input a network describing the allowable word sequences, -a dictionary defining how each word is pronounced and a set of HMMs. -It operates by converting the word network to a phone network and -then attaching the appropriate HMM definition to each phone instance. -Recognition can then be performed on either a list of stored speech -files or on direct audio input. As noted at the end of the last -chapter, \htool{HVite} can support cross-word triphones and it can -run with multiple tokens to generate -lattices containing multiple hypotheses. It can also be configured -to rescore lattices and perform forced alignments. - -The word networks needed to drive \htool{HVite} are usually either -simple word loops in which any word can follow any other word or they -are directed graphs representing a finite-state task grammar. In the -former case, bigram probabilities are normally attached to the word -transitions. Word networks are stored using -the \HTK\ standard lattice format\index{lattice!format}. -This is a text-based format and\index{standard lattice format}\index{SLF} -hence word networks can be created directly using a text-editor. -However, this is rather tedious and hence \HTK\ provides two -tools to assist in creating word networks. Firstly, \htool{HBuild} -allows sub-networks to be created and used within higher level networks. -Hence, although the same low level notation is used, much duplication -is avoided. Also, \htool{HBuild}\index{hbuild@\htool{HBuild}} can be used to generate word loops -and it can also read in a backed-off bigram language model and -modify the word loop transitions to incorporate the bigram probabilities. -Note that the label statistics tool \htool{HLStats} mentioned earlier -can be used to generate a backed-off bigram language model. - -As an alternative to specifying a word network directly, a higher -level grammar notation can be used. This notation is based on -the Extended Backus Naur Form (EBNF\index{EBNF}) used in compiler specification and -it is compatible with the grammar specification language used in -earlier versions of \HTK. The -tool \htool{HParse}\index{hparse@\htool{HParse}} is supplied -to convert this notation into the equivalent word network. - -Whichever method is chosen to generate a word network, it is useful -to be able to see examples of the \textit{language} that it defines. -The tool \htool{HSGen}\index{hsgen@\htool{HSGen}} is -provided to do this. It takes as input -a network and then randomly traverses the network outputting word -strings. These strings can then be inspected to ensure that they -correspond to what is required. \htool{HSGen} can also compute -the empirical perplexity of the task. - -Finally, the construction of large dictionaries can involve merging -several sources and performing a variety of transformations on each -sources. The dictionary management -tool \htool{HDMan}\index{hdman@\htool{HDMan}} is supplied -to assist with this process. - -\subsubsection{\htool{HLRescore}} -\htool{HLRescore} is a tools for manipulating lattices. It reads -lattices in standard lattice format (for example produced by -\htool{HVite}) and applies one of the following operations on them: - -\begin{itemize} -\item finding 1-best path through lattice: this allows language -model scale factors and insertion penalties to be optimised rapidly; -\item expanding lattices with new language model: allows the application -of more complex language, e,g, 4-grams, than can be efficiently used -on the decoder. -\item converting lattices to equivalent word networks: this is necessary -prior to using lattices generated with \htool{HVite} (or \htool{HDecode}) -to merge duplicate paths. -\item calculating various lattice statistics -\item pruning lattice using forward-backward scores: efficient pruning -of lattices for -\item converting word MLF files to lattices with a language model: this -is necessary for generating numerator lattices for discriminative training. -\end{itemize} - -\htool{HLRescore} expects lattices which are directed acyclic graphs -(DAGs). If cycles occur in the lattices then \htool{HLRescore} will -throw an error. These cycles may occur after the merging operation -({\tt -m} option) with HLRescore. - -\subsubsection{\htool{HDecode}} -\htool{HDecode} is a decoder suited for large vocabulary speech -recognition and lattice generation, that is available as an extension -to \HTK, distributed under a slightly more restrictive licence. -Similar to \htool{HVite}, \htool{HDecode} transcribes speech files -using a HMM model set and a dictionary (vocabulary). The best -transcription hypothesis will be generated in the Master Label File -(MLF) format. Optionally, multiple hypotheses can also be generated as -a word lattice in the form of the HTK Standard Lattice Format (SLF). - -The search space of the recognition process is defined by a model -based network, produced from expanding a supplied language model or a -word level lattice using the dictionary. In the absence of a word -lattice, a language model must be supplied to perform a \emph{full -decoding}. The current version of \htool{HDecode} only supports -trigram and bigram full decoding. When a word lattice is supplied, the use of a -language model is optional. This mode of operation is known as -\emph{lattice rescoring}. - -\htool{HDecode} expects lattices where there are no duplicates of word -paths. However by default lattices that are generated by -\htool{HDecode} contains duplicates due to multiple pronunciations -and optional inter-word silence. To modify the lattices to be suitable -for lattic rescoring \htool{HLRescore} should be used to merge (using -the {\tt -m} option)multiple paths. Note as a side-effect of this -merged lattices may not be DAGs (cycles may exist), thus merged lattices -may not be suitable for applying more complex LMs (using for example -\htool{HLRescore}). - -The current implementation of \htool{HDecode} has a number of limitations -for use as a general decoder for HMMs. It has primarily been developed for -speech recognition. Limitations include: -\begin{itemize} -\item only works for cross-word triphones; -\item \texttt{sil} and \texttt{sp} models are reserved as silence -models and are, by default, automatically added to the end of all -``words'' in the pronunciation dictionary. -\item lattices generated with \htool{HDecode} must be {\em merged} -to remove duplicate word paths prior to being used for lattice rescoring -with \htool{HDecode} and \htool{HVite}. -\end{itemize} - -\subsection{Analysis Tool} - -\index{results analysis} -Once the HMM-based recogniser has been built, it is necessary -to evaluate its performance. This is usually done by using it -to transcribe some pre-recorded test sentences and match the -recogniser output with the correct reference transcriptions. -This comparison is performed by a tool called -\htool{HResults} which uses dynamic programming to align the two transcriptions -and then count substitution, deletion and insertion errors. -Options are provided to ensure that the -algorithms and output formats used -by \htool{HResults}\index{hresults@\htool{HResults}} are compatible -with those used by the US National Institute of Standards and Technology -(NIST). -As well as global performance measures, -\htool{HResults} can also provide speaker-by-speaker breakdowns, -confusion matrices and time-aligned transcriptions. For word spotting -applications, it can also compute \textit{Figure of Merit} (FOM) scores -and \textit{Receiver Operating Curve} (ROC) information. -\index{NIST}\index{FOM}\index{Figure of Merit} - - -\mysect{What's New In Version 3.4.1}{whatsnew} - -This \index{new features!in Version 3.4.1} section lists the new -features in \HTK\ Version 3.4.1 compared to the preceding Version~3.4. - -\begin{enumerate} -\item The HTK Book has been extended to include tutorial sections on - \htool{HDecode} and discriminative training. An initial description of the - theory and options for discriminative training has also been added. - -\item \htool{HDecode} has been extended to support decoding with trigram - language models. - -\item Lattice generation with \htool{HDecode} has been improved to yield a - greater lattice density. - -\item \htool{HVite} now supports model-marking of lattices. - -\item Issues with \htool{HERest} using single-pass retraining with HLDA and - other input transforms have been resolved. - -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - - -\mysubsect{New In Version 3.4}{nv3.4} - -This \index{new features!in Version 3.4} section lists the new -features in \HTK\ Version 3.4 compared to the preceding Version~3.3. - -\begin{enumerate} -\item \htool{HMMIRest} has now been added as a tool for performing -discriminative training. This supports both Minimum Phone Error (MPE) -and Maximum Mutual Information (MMI) training. To support this -additional library modules for performing the forward-backward -algorithm on lattices, and the ability to mark phone boundary -times in lattices have been added. - -\item \htool{HDecode} has now been added as a tool for performing -large vocabulary decoding. See section~\ref{s:HDecode} for -further details of limitations associated with this tool. - -\item \htool{HERest} has been extended to support estimating -semitied and HLDA transformations. - -\item Compilation issues have now been dealt with. - -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - -\mysubsect{New In Version 3.3}{nv3.3} - -This \index{new features!in Version 3.3} section lists the new -features in \HTK\ Version 3.3 compared to the preceding Version~3.2. -\begin{enumerate} -\item \htool{HERest} now incorporates the adaptation transform -generation that was previously performed in \htool{HEAdapt}. The -range of linear transformations and the ability to combine transforms -hierarchically has now been included. The system also now supports -adaptive training with constrained MLLR transforms. - -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - -\mysubsect{New In Version 3.2}{nv3.2} - -This \index{new features!in Version 3.2} section lists the new -features in \HTK\ Version 3.2 compared to the preceding Version~3.1. - -\begin{enumerate} -\item The \htool{HLM} toolkit has been incorporated into HTK. It - supports the training and testing of word or class-based n-gram - language models. -\item \htool{HPARM} supports global feature space transforms. -\item \htool{HPARM} now supports third differentials - ($\Delta\Delta\Delta$ parameters). -\item A new tool named \htool{HLRescore} offers support for a number - of lattice post-processing operations such as lattice pruning, - finding the 1-best path in a lattice and language model expansion of - lattices. -\item \htool{HERest} supports 2-model re-estimation which allows the - use of a separate alignment model set in the Baum-Welch - re-estimation. -\item The initialisation of the decision-tree state clustering in - \htool{HHEd} has been improved. -\item \htool{HHEd} supports a number of new commands related to - variance flooring and decreasing the number of mixtures. -\item A major bug in the estimation of block-diagonal MLLR transforms - has been fixed. -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - -\subsection{New In Version 3.1}{} - -This \index{new features!in Version 3.1} section lists the new -features in \HTK\ Version 3.1 compared to the preceding Version~3.0 -which was functionally equivalent to Version~2.2. - -\begin{enumerate} - -\item \htool{HPARM} supports Perceptual Linear Prediction (PLP) feature - extraction. - -\item \htool{HPARM} supports Vocal Tract Length Normalisation (VTLN) - by warping the frequency axis in the filterbank analysis. - -\item \htool{HPARM} supports variance scaling. - -\item \htool{HPARM} supports cluster-based cepstral mean and variance - normalisation. - -\item All tools support an extended filename syntax that can be used - to deal with unsegmented data more easily. - -\end{enumerate} - - -\subsection{New In Version 2.2}{} - -This section lists the new features and refinements in \HTK\ Version -2.2 compared to the preceding Version 2.1. - -\begin{enumerate} - -\item Speaker adaptation is now supported via the \htool{HEAdapt} and -\htool{HVite} tools, which adapt a current set of models to a new speaker and/or -environment. -\begin{itemize} - -\item \htool{HEAdapt} performs offline supervised adaptation using maximum -likelihood linear regression (MLLR) and/or maximum a-posteriori (MAP) adaptation. - -\item \htool{HVite} performs unsupervised adaptation using just MLLR. - -\end{itemize} - -Both tools can be used in a static mode, where all the -data is presented prior to any adaptation, or in an incremental fashion. - -\item Improved support for PC WAV files\\ -In addition to 16-bit PCM linear, HTK can now read -\begin{itemize} - -\item 8-bit CCITT mu-law - -\item 8-bit CCITT a-law - -\item 8-bit PCM linear - -\end{itemize} - -\end{enumerate} - -\subsection{Features Added To Version 2.1}{} - -For the benefit of users of earlier versions of \HTK\, this -\index{new features!in Version 2.1} section lists the main changes -in \HTK\ Version 2.1 compared to the preceding Version 2.0. - -\begin{enumerate} - -\item The speech input handling has been partially re-designed and a new -energy-based speech/silence detector has been incorporated into \htool{HParm}. -The detector is robust yet flexible and can be configured through a number of -configuration variables. Speech/silence detection can now be performed on -waveform files. The calibration of speech/silence detector parameters is now -accomplished by asking the user to speak an arbitrary sentence. - -\item \htool{HParm} now allows random noise signal to be added to waveform -data via the configuration parameter \texttt{ADDDITHER}. This prevents -numerical overflows which can occur with artificially created waveform data -under some coding schemes. - -\item \htool{HNet} has been optimised for more efficient operation when -performing forced alignments of utterances using \htool{HVite}. Further -network optimisations tailored to biphone/triphone-based phone recognition -have also been incorporated. - -\item \htool{HVite} can now produce partial recognition hypothesis even when -no tokens survive to the end of the network. This is accomplished by setting -the \htool{HRec} configuration parameter \texttt{FORCEOUT} to true. - -\item Dictionary support has been extended to allow pronunciation probabilities -to be associated with different pronunciations of the same word. At the same -time, \htool{HVite} now allows the use of a pronunciation scale factor during -recognition. - -\item \HTK\ now provides consistent support for reading and writing of \HTK\ -binary files (waveforms, binary MMFs, binary SLFs, \htool{HERest} accumulators) -across different machine architectures incorporating automatic byte swapping. -By default, all binary data files handled by the tools are now written/read in -big-endian (\texttt{NONVAX}) byte order. The default behaviour can be changed -via the configuration parameters \texttt{NATURALREADORDER} and -\texttt{NATURALWRITEORDER}. - -\item \htool{HWave} supports the reading of waveforms in Microsoft WAVE file -format. - -\item \htool{HAudio} allows key-press control of live audio input. - -\end{enumerate} - - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/htkslf.tex b/HTKBook/htkslf.tex deleted file mode 100644 index aaca27e..0000000 --- a/HTKBook/htkslf.tex +++ /dev/null @@ -1,334 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% - - -\mychap{\HTK\ Standard Lattice Format (SLF)}{htkslf} -\index{standard lattice format!definition} -\mysect{SLF Files}{slffiles} - -Lattices in \HTK\ are used for storing multiple -hypotheses\index{multiple hypotheses} from the output of a speech -recogniser and for specifying finite state syntax networks for -recognition. The \HTK\ standard lattice format (SLF) is designed to -be extensible and to be able to serve a variety of purposes. However, -in order to facilitate the transfer of lattices\index{lattices}, it -incorporates a core set of common features. - -An SLF file can contain zero or more sub-lattices\index{sub-lattices} -followed by a main lattice. Sub-lattices are used for defining -sub-networks prior to their use in subsequent sub-lattices or the main -lattice. They are identified by the presence of a -\texttt{SUBLAT}\index{sublat@\texttt{SUBLAT}} field and they are -terminated by a single period on a line by itself. Sub-lattices offer -a convenient way to structure finite state grammar networks. They are -never used in the output word lattices generated by a decoder. Some -lattice processing operations like lattice pruning or expansion will -destroy the sub-lattice structure, i.e.\ expand all sub-lattice -references and generate one unstructured lattice. - -A lattice consists of optional header\index{lattice!header} -information followed by a sequence of node definitions and a sequence -of link (arc) definitions. Nodes and links are numbered and the first -definition line must give the total number of each. - -Each link\index{lattice!link} represents a word instance occurring -between two nodes, however for more compact storage the nodes often -hold the word labels since these are frequently common to all words -entering a node (the node effectively represents the end of several -word instances). This is also used in lattices representing word-level -networks where each node is a word end, and each arc is a word -transition. - -Each node\index{lattice!node} may optionally be labelled with a word -hypothesis and with a time. Each link has a start and end node number -and may optionally be labelled with a word hypothesis (including the -pronunciation variant, acoustic score and segmentation of the word -hypothesis) and a language model score. - -The lattice must have exactly one start node (no incoming arcs) and -one end node (no outgoing arcs). The special word identifier -\verb|!NULL| can be used for the start and end node if necessary. - -\mysect{Format}{slfformat} - -The format\index{lattice!format} is designed to allow optional -information that at its most detailed gives full identity, alignment -and score (log likelihood) information at the word and phone level to -allow calculation of the alignment and likelihood of an individual -hypothesis. However, without scores or times the lattice is just a -word graph. The format is designed to be extensible. Further field -names can be defined to allow arbitrary information to be added to the -lattice without making the resulting file unreadable by others. - -The lattices are stored in a text file as a series of fields that form -two blocks: - -\begin{itemize} -\item A header, specifying general information about the lattice. -\item The node and link definitions. -\end{itemize} - -Either block may contain comment lines\index{lattice!comment lines}, -for which the first character is a `\#' and the rest of the line is -ignored. - -All non-comment lines consist of fields, separated by white space. -Fields consist of an alphanumeric field name, followed by a delimiter -(the character `=' or `\verb|~|') and a (possibly ``quoted'') field -value. Single character field names are reserved for fields defined -in the specification and single character abbreviations may be used -for many of the fields defined below. Field values can be specified -either as normal text (e.g.\ \verb|a=-318.31|) or in a binary -representation if the `=' character is replaced by `\verb|~|'. The -binary representation consists of a 4-byte floating point number (IEEE -754) or a 4-byte integer number stored in big-endian byte order by -default (see section~\ref{s:byteswap} for a discussion of different -byte-orders in HTK). - -The convention used to define the current field -names\index{lattice!field names} is that lower case is used for -optional fields and upper case is used for required fields. The -meaning of field names can be dependent on the context in which they -appear. - -The header must include a field specifying which utterance was used to -generate the lattice and a field specifying the version of the lattice -specification used. The header is terminated by a line which defines -the number of nodes and links in the lattice. - -The node definitions are optional but if included each node definition -consists of a single line which specifies the node number followed by -optional fields that may (for instance) define the time of the node or -the word hypothesis ending at that node. - -The link definitions are required and each link definition consists of -a single line which specifies the link number as well as the start and -end node numbers that it connects to and optionally other information -about the link such as the word identity and language model score. If -word identity information is not present in node definitions then it -must appear in link definitions. - -\mysect{Syntax}{slfsyntax} - -The following rules define the syntax\index{lattice!syntax} of an SLF -lattice. Any unrecognised fields will be ignored and no user defined -fields may share the first character with pre-defined field names. The -syntax specification below employs the modified BNF notation used in -section~\ref{s:hmmdef}. For the node and arc field names only the -abbreviated names are given and only the text format is documented in -the syntax. - - -\begin{verbatim} -latticedef = laticehead - lattice { lattice } - - -latticehead = "VERSION=" number - "UTTERANCE=" string - "SUBLAT=" string - { "vocab=" string | "hmms=" string | "lmname=" string | - "wdpenalty=" floatnumber | "lmscale=" floatnumber | - "acscale=" floatnumber | "base=" floatnumber | "tscale=" floatnumber } - -lattice = sizespec - { node } - { arc } - -sizespec = "N=" intnumber "L=" intnumber - -node = "I=" intnumber - { "t=" floatnumber | "W=" string | - "s=" string | "L=" string | "v=" intnumber } - -arc = "J=" intnumber - "S=" intnumber - "E=" intnumber - { "a=" floatnumber | "l=" floatnumber | "a=" floatnumber | "r=" floatnumber | - "W=" string | "v=" intnumber | "d=" segments } - -segments = ":" segment {segment} -segment = string [ "," floatnumber [ "," floatnumber ]] ":" -\end{verbatim} - - -\mysect{Field Types}{slffields} - -The currently defined fields are as follows:- - -\begin{verbatim} - Field abbr o|c Description - -Header fields - VERSION=%s V o Lattice specification adhered to - UTTERANCE=%s U o Utterance identifier - SUBLAT=%s S o Sub-lattice name - acscale=%f o Scaling factor for acoustic likelihoods - tscale=%f o Scaling factor for times (default 1.0, i.e.\ seconds) - base=%f o LogBase for Likelihoods (0.0 not logs, default base e) - lmname=%s o Name of Language model - lmscale=%f o Scaling factor for language model - wdpenalty=%f o Word insertion penalty - -Lattice Size fields - NODES=%d N c Number of nodes in lattice - LINKS=%d L c Number of links in lattice - -Node Fields - I=%d Node identifier. Starts node information - time=%f t o Time from start of utterance (in seconds) - WORD=%s W wc Word (If lattice labels nodes rather that links) - L=%s wc Substitute named sub-lattice for this node - var=%d v wo Pronunciation variant number - s=%s s o Semantic Tag - -Link Fields - J=%d Link identifier. Starts link information - START=%d S c Start node number (of the link) - END=%d E c End node number (of the link) - WORD=%s W wc Word (If lattice labels links rather that nodes) - var=%d v wo Pronunciation variant number - div=%s d wo Segmentation (modelname, duration, likelihood) triples - acoustic=%f a wo Acoustic likelihood of link - language=%f l o General language model likelihood of link - r=%f r o Pronunciation probability - -Note: The word identity (and associated `w' fields var,div and acoustic) must - appear on either the link or the end node. - - abbr is a possible single character abbreviation for the field name - o|c indicates whether field is optional or compulsory. -\end{verbatim} - -% ngram=%f n o NGram likelihood of link - -\mysect{Example SLF file}{slfeg} - -The following is a real lattice (generated by the \HTK\ Switchboard -Large Vocabulary System with a 54k dictionary and a word fourgram LM) -with word labels occurring on the end nodes of the links. - -Note that the \verb|!SENT_SENT| and \verb|!SENT_END| ``words'' model -initial and final silence. - -\begin{verbatim} -VERSION=1.0 -UTTERANCE=s22-0017-A_0017Af-s22_000070_000157.plp -lmname=/home/solveb/hub5/lib/lang/fgintcat_54khub500.txt -lmscale=12.00 wdpenalty=-10.00 -vocab=/home/solveb/hub5/lib/dicts/54khub500v3.lvx.dct -N=32 L=45 -I=0 t=0.00 W=!NULL -I=1 t=0.05 W=!SENT_START v=1 -I=2 t=0.05 W=!SENT_START v=1 -I=3 t=0.15 W=!SENT_START v=1 -I=4 t=0.15 W=!SENT_START v=1 -I=5 t=0.19 W=HOW v=1 -I=6 t=0.29 W=UM v=1 -I=7 t=0.29 W=M v=1 -I=8 t=0.29 W=HUM v=1 -I=9 t=0.70 W=OH v=1 -I=10 t=0.70 W=O v=1 -I=11 t=0.70 W=KOMO v=1 -I=12 t=0.70 W=COMO v=1 -I=13 t=0.70 W=CUOMO v=1 -I=14 t=0.70 W=HELLO v=1 -I=15 t=0.70 W=OH v=1 -I=16 t=0.70 W=LOW v=1 -I=17 t=0.71 W=HELLO v=1 -I=18 t=0.72 W=HELLO v=1 -I=19 t=0.72 W=HELLO v=1 -I=20 t=0.72 W=HELLO v=1 -I=21 t=0.73 W=CUOMO v=1 -I=22 t=0.73 W=HELLO v=1 -I=23 t=0.77 W=I v=1 -I=24 t=0.78 W=I'M v=1 -I=25 t=0.78 W=TO v=1 -I=26 t=0.78 W=AND v=1 -I=27 t=0.78 W=THERE v=1 -I=28 t=0.79 W=YEAH v=1 -I=29 t=0.80 W=IS v=1 -I=30 t=0.88 W=!SENT_END v=1 -I=31 t=0.88 W=!NULL -J=0 S=0 E=1 a=-318.31 l=0.000 -J=1 S=0 E=2 a=-318.31 l=0.000 -J=2 S=0 E=3 a=-1094.09 l=0.000 -J=3 S=0 E=4 a=-1094.09 l=0.000 -J=4 S=2 E=5 a=-1063.12 l=-5.496 -J=5 S=3 E=6 a=-1112.78 l=-4.395 -J=6 S=4 E=7 a=-1086.84 l=-9.363 -J=7 S=2 E=8 a=-1876.61 l=-7.896 -J=8 S=6 E=9 a=-2673.27 l=-5.586 -J=9 S=7 E=10 a=-2673.27 l=-2.936 -J=10 S=1 E=11 a=-4497.15 l=-17.078 -J=11 S=1 E=12 a=-4497.15 l=-15.043 -J=12 S=1 E=13 a=-4497.15 l=-12.415 -J=13 S=2 E=14 a=-4521.94 l=-7.289 -J=14 S=8 E=15 a=-2673.27 l=-3.422 -J=15 S=5 E=16 a=-3450.71 l=-8.403 -J=16 S=2 E=17 a=-4635.08 l=-7.289 -J=17 S=2 E=18 a=-4724.45 l=-7.289 -J=18 S=2 E=19 a=-4724.45 l=-7.289 -J=19 S=2 E=20 a=-4724.45 l=-7.289 -J=20 S=1 E=21 a=-4796.74 l=-12.415 -J=21 S=2 E=22 a=-4821.53 l=-7.289 -J=22 S=18 E=23 a=-435.64 l=-4.488 -J=23 S=18 E=24 a=-524.33 l=-3.793 -J=24 S=19 E=25 a=-520.16 l=-4.378 -J=25 S=20 E=26 a=-521.50 l=-3.435 -J=26 S=17 E=27 a=-615.12 l=-4.914 -J=27 S=22 E=28 a=-514.04 l=-5.352 -J=28 S=21 E=29 a=-559.43 l=-1.876 -J=29 S=9 E=30 a=-1394.44 l=-2.261 -J=30 S=10 E=30 a=-1394.44 l=-1.687 -J=31 S=11 E=30 a=-1394.44 l=-2.563 -J=32 S=12 E=30 a=-1394.44 l=-2.352 -J=33 S=13 E=30 a=-1394.44 l=-3.285 -J=34 S=14 E=30 a=-1394.44 l=-0.436 -J=35 S=15 E=30 a=-1394.44 l=-2.069 -J=36 S=16 E=30 a=-1394.44 l=-2.391 -J=37 S=23 E=30 a=-767.55 l=-4.081 -J=38 S=24 E=30 a=-692.95 l=-3.868 -J=39 S=25 E=30 a=-692.95 l=-2.553 -J=40 S=26 E=30 a=-692.95 l=-3.294 -J=41 S=27 E=30 a=-692.95 l=-0.855 -J=42 S=28 E=30 a=-623.50 l=-0.762 -J=43 S=29 E=30 a=-556.71 l=-3.019 -J=44 S=30 E=31 a=0.00 l=0.000 -\end{verbatim} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/labels.tex b/HTKBook/labels.tex deleted file mode 100644 index a9744f6..0000000 --- a/HTKBook/labels.tex +++ /dev/null @@ -1,823 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{Transcriptions and Label Files}{labels} - -\sidepic{Tool.labs}{80}{} -Many of the operations performed by \HTK\ which involve speech data -files assume that the speech is divided into segments and each segment -has a name or \textit{label}. The set of labels associated with a -speech file constitute a \textit{transcription} and each transcription is -stored in a separate \textit{label file}. Typically, the name of the -label file will be the same as the corresponding speech file but with -a different extension. For convenience, label files are often stored -in a separate directory and all \HTK\ tools have an option to specify -this. When very large numbers of files are being processing, label -file access can be greatly facilitated by using\index{master label files} -\textit{Master Label Files (MLFs)}. MLFs may be regarded as index\index{MLF} -files holding pointers to the actual label files which can either be -embedded in the same index file or stored anywhere else in the file system. -Thus, MLFs allow large sets of files to be stored in a single file, they -allow a single transcription to be shared by many logical label files -and they allow arbitrary file redirection.\index{label files} - -The \HTK\ interface to label files is provided by the module \htool{HLabel} -which implements the MLF facility and support for a number of external -label file formats. -All of the facilities supplied by \htool{HLabel}, including the -supported label file formats, are described in this chapter. -In addition, \HTK\ provides a tool called \htool{HLEd} for simple -batch editing of label files and this is also described. -Before proceeding to the details, however, the general structure of -label files will be reviewed. - -\mysect{Label File Structure}{labstruct} - -Most transcriptions are single-alternative and single-level, that is -to say, the associated speech file is described by a single sequence -of labelled segments. Most standard label formats are of this kind. -Sometimes, however, it is useful to have several levels of labels associated -with the same basic segment sequence. For example, in training a HMM -system it is useful to have both the word level transcriptions and the -phone level transcriptions \textit{side-by-side}. \index{labels!side-by-side} - -Orthogonal to the requirement for multiple levels of description, -a transcription may also need to include multiple alternative -descriptions of the same speech file. For example, the output -of a speech recogniser may be in the form of an \textit{N-best} list -where each word sequence in the list represents one possible interpretation -of the input.\index{labels!multiple level} - -As an example, Fig.~\href{f:labegs} shows a speech file and three -different ways in which it might be labelled. In part (a), just a simple -orthography is given and this single-level single-alternative type of -transcription is the commonest case. Part (b) shows a 2-level -transcription where the basic level consists of a sequence of phones but -a higher level of word labels are also provided. Notice that there is a -distinction between the basic level and the higher levels, since only the -basic level has explicit boundary locations marked for every segment. -The higher levels do not have explicit boundary information since this -can always be inferred from the basic level boundaries. Finally, part (c) -shows the case where knowledge of the contents of the speech file is -uncertain and three possible word sequences are given. - -\HTK\ label files support multiple-alternative and multiple-level -transcriptions. In addition to start and end times on the basic level, a -label at any level may also have a score associated with it. When a -transcription is loaded, all but one specific alternative can be discarded by -setting the configuration variable \texttt{TRANSALT}\index{transalt@\texttt{TRANSALT}} to the required -alternative \texttt{N}, where the first (i.e. normal) alternative is numbered -1. Similarly, all but a specified level can be discarded by setting the -configuration variable -\texttt{TRANSLEV}\index{translev@\texttt{TRANSLEV}} to -the required level number where again the first (i.e. -normal) level is numbered 1. - -All non-\HTK\ formats are limited to -single-level single-alternative transcriptions. - - -\mysect{Label File Formats}{labform} - -As with speech data files, \HTK\ not only defines its own format for -label files but also supports a number of external formats. Defining -an external format is similar to the case for speech data files except -that the relevant configuration variables for specifying a format -other than \HTK\ are called \texttt{SOURCELABEL}\index{sourcelabel@\texttt{SOURCELABEL}} and \texttt{TARGETLABEL}. -The source label format can also be specified using the -\texttt{-G}\index{standard options!aaag@\texttt{-G}} command -line option. As with using the -\texttt{-F}\index{standard options!aaaf@\texttt{-F}} command -line option for speech data files, the \texttt{-G} option overrides any -setting of \texttt{SOURCELABEL}\index{labels!external formats} - -\subsection{HTK Label Files} - -The \HTK\ label format is text based. As noted above, a single label -file can contain multiple-alternatives and multiple-levels. - -Each line of a \HTK\ label file contains\index{label files!HTK format} -the actual label optionally preceded by start and end times, and -optionally followed by a match score. -\begin{verbatim} - [start [end] ] name [score] { auxname [auxscore] } [comment] -\end{verbatim} -where \texttt{start} denotes the start time of the labelled segment -in 100ns units, \texttt{end} -denotes the end time in 100ns units, \texttt{name} is the name -of the segment and \texttt{score} is a floating point confidence score. -All fields except the name are optional. If \texttt{end} is omitted then -it is set equal to -1 and ignored. This case would occur with data which had -been labelled frame synchronously. If \texttt{start} and \texttt{end} are both -missing then both are set to -1 and the label file is treated as a -simple symbolic transcription. The -optional score would typically be a log probability generated by a -recognition tool. When omitted the score is set to 0.0. - -The following example corresponds to the transcription shown -in part (a) of Fig.~\ref{f:labegs} -\begin{verbatim} - 0000000 3600000 ice - 3600000 8200000 cream -\end{verbatim} -Multiple levels are described by adding further names alongside -the basic name. The lowest level (shortest segments) should be -given first since only the lowest level has start and end times. -The label file corresponding to the transcription illustrated in -part (b) of Fig.~\ref{f:labegs} would be as follows. -\begin{verbatim} - 0000000 2200000 ay ice - 2200000 3600000 s - 3600000 4300000 k cream - 4300000 5000000 r - 5000000 7400000 iy - 7400000 8200000 m -\end{verbatim} -Finally, multiple alternatives are written as a sequence of separate -label lists separated by three slashes (///). -The label file corresponding to the transcription illustrated in -part (c) of Fig.~\ref{f:labegs} would therefore be as follows. -\begin{verbatim} - 0000000 2200000 I - 2200000 8200000 scream - /// - 0000000 3600000 ice - 3600000 8200000 cream - /// - 0000000 3600000 eyes - 3600000 8200000 cream -\end{verbatim} - -Actual label names can be any sequence of characters. -However, the \texttt{-} and \texttt{+} characters are reserved for identifying -the left and right context\index{labels!context markers}, -respectively, in a context-dependent phone -label. For example, the label \texttt{N-aa+V} might be used to denote -the phone \texttt{aa} when preceded by a nasal and followed by a vowel. -These context-dependency conventions are used in the label editor \htool{HLEd}, -and are understood by all \HTK\ tools. - -\subsection{ESPS Label Files} - -An \ESPSwaves\ label file is a text file with one label stored per -line. Each label indicates a segment boundary. \index{label files!ESPS format} -A complete description -of the \ESPSwaves\ label format is given in the \ESPSwaves\ -manual pages {\bf xwaves (1-ESPS)} and {\bf xlabel (1-ESPS)}. -Only details required for use with \HTK\ are given here. - -The label data follows -a header which ends with a line containing only -a \texttt{\#}. The header contents are generally ignored by \htool{HLabel}. -The labels follow the header in the form -\begin{verbatim} - time ccode name -\end{verbatim} -where \texttt{time} is a floating point number which denotes the boundary -location in seconds, -\texttt{ccode} is an integer color map entry used by \ESPSwaves\ in drawing -segment boundaries and \texttt{name} is the name of the segment boundary. A -typical value for \texttt{ccode} is \texttt{121}. - -While each \HTK\ label can contain both a start and an end time which -indicate -the boundaries of a labeled segment, \ESPSwaves\ labels -contain a single time in seconds which (by convention) refers -to the end of the labeled segment. The starting time -of the segment is taken to be the end of the previous -segment and \texttt{0} initially. - -\ESPSwaves\ label files may have several boundary names per line. -However, \htool{HLabel} only reads \ESPSwaves\ label files with a single name -per boundary. Multiple-alternative and/or multiple-level \HTK\ label -data structures cannot be saved using \ESPSwaves\ format label files. - -\subsection{TIMIT Label Files} - -\index{label files!TIMIT format} -TIMIT label files are identical to single-alternative single-level HTK -label files without scores except that the start and end times are -given as sample numbers rather than absolute times. TIMIT label files -are used on both the prototype and final versions of the TIMIT CD ROM. - -\subsection{SCRIBE Label Files} - -\index{label files!SCRIBE format} -The SCRIBE label file format is a subset of the European SAM label file format. -SAM label files are text files and each line begins with a label identifying -the type of information stored on that line. The \HTK\ SCRIBE format recognises -just three label types -\begin{tabbing} -++ \= +++++++ \= \kill -\> LBA \>-- acoustic label \\ -\> LBB \>-- broad class label \\ -\> UTS \>-- utterance -\end{tabbing} -For each of these, the rest of the line is divided into comma separated -fields. The LBA and LBB types have 4 fields: start sample, centre sample, end sample -and label. \HTK\ expects the centre sample to be blank. The UTS type has 3 fields: -start sample, end sample and label. UTS labels may be multi-word since they can -refer to a complete utterance. In order to make such labels usable within \HTK\ tools, -between word blanks are converted to underscore characters. The -\texttt{EX}\index{ex@\texttt{EX} command} command -in the \HTK\ label editor \htool{HLEd} can then be used to split such -a compound label into individual word labels if required. - - -\mysect{Master Label Files}{mlfs} - -\subsection{General Principles of MLFs} - -\index{master label files} -Logically, the organisation of data and label files is very simple. -Every data file has a label file of the same name (but -different extension) which is either stored in the same directory as -the data file or in some other specified directory. - -\sidefig{labegs}{60}{Example Transcriptions}{2}{} -This scheme is sufficient for most needs and commendably simple. -However, there are many cases where either it makes unnecessarily -inefficient use of the operating system or it seriously inconveniences -the user. For example, to use a training tool with -isolated word data may require the generation of hundreds or thousands of -label files each having just one label entry. Even where individual -label files are appropriate (as in the phonetically transcribed TIMIT -database), each label file must be -stored in the same directory as the data file it transcribes, or all label files -must be stored in the same directory. One cannot, for example, have a -different directory of label files for each TIMIT dialect region and -then run the \HTK\ training tool \htool{HERest} on the whole database. - -All of these problems can be solved by the use of Master Label Files -(MLFs). Every \HTK\ tool which uses label files has a -\texttt{-I}\index{standard options!aaai@\texttt{-I}} option -which can be used to specify the name of an MLF file. When an MLF has been -loaded, the normal rules for locating a label file apply except that -the MLF is searched first. If the required label file \texttt{f} is found via -the MLF then that is loaded, otherwise the file \texttt{f} is opened as normal. -If \texttt{f} does not exist, then an error is reported. -The \texttt{-I} option may be repeated on the command line to open -several MLF files simultaneously. In this case, each is searched in turn -before trying to open the required file. - -MLFs can do two things. Firstly, they can contain -embedded label definitions\index{master label files!embedded label definitions} -so that many or all of the needed label definitions can be -stored in the same file. Secondly, they can contain the names of -sub-directories to search for label files. In effect, they allow -multiple search paths\index{master label files!multiple search paths} -to be defined. Both of these two types of -definition can be mixed in a single MLF. - -MLFs are quite complex to understand and use. However, they add -considerable power and flexibility to \HTK\ which combined with the -\texttt{-S}\index{standard options!aaas@\texttt{-S}} and -\texttt{-L}\index{standard options!aaal@\texttt{-L}} -options mean that virtually any organisation of -data and label files can be accommodated. - -\subsection{Syntax and Semantics} - -An MLF consists of one or more individual definitions. Blank lines in -an MLF are ignored but otherwise the line structure is significant. -The first line must contain just \texttt{\#!MLF!\#} to identify it as an MLF file. -This is not necessary for use with the \texttt{-I} option but some -\HTK\ tools need to be able to distinguish an MLF from a normal label file. -The following syntax\index{master label files!syntax} of MLF files is described using an -extended BNF notation in which -alternatives are separated by a vertical bar $|$, parentheses (\ ) denote -factoring, brackets [\ ] denote options, and braces \{\ \} denote zero or more -repetitions. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> MLF = \> ``\#!MLF!\#'' \\ -\>\> MLFDef \{ MLFDef \} -\end{tabbing} -} - -Each definition is either a transcription for immediate loading or a -subdirectory to search. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> MLFDef = \> ImmediateTranscription $|$ SubDirDef -\end{tabbing} -} - -An immediate transcription consists of a pattern on a line -by itself immediately followed -by a transcription which as far as the MLF is concerned is arbitrary -text. It is read using whatever label file ``driver'' routines are -installed in \htool{HLabel}. It is terminated by a period written on a line -of its own. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> ImmediateTranscription = \\ -\>\> Pattern \\ -\>\> Transcription \\ -\>\>``.'' -\end{tabbing} -} -A subdirectory definition simply gives the name of a subdirectory -to search. If the required label file is found in that subdirectory -then the label file is loaded, otherwise the next matching subdirectory -definition is checked. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> SubDirDef = \> Pattern SearchMode String \\ -\> SearchMode = \> ``\verb+->+'' $|$ ``\verb+=>+'' -\end{tabbing} -} -\noindent -The two types of search mode are described below. A pattern is just a -string -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> Pattern = \> String -\end{tabbing} -} -\noindent -except that the characters `\texttt{?}' and `\texttt{*}' embedded in the string act -as wildcards\index{master label files!wildcards} such that `\texttt{?}' matches any single character and -`\texttt{*}' matches 0 or more characters. -A string is any sequence of characters enclosed in double quotes. - -\subsection{MLF Search} - -The names of label files in \HTK\ are invariably reconstructed from an -existing data file name and this means that the -file names used to access label files can be partial or full path names in which -the path has been constructed either from the path of the corresponding -data file or by direct specification via the {\tt -L} option. These -path names are retained in the MLF search\index{master label files!search} which proceeds as follows. -The given label file specification \texttt{../d3/d2/d1/name} is matched -against each pattern in the MLF. If a pattern matches, then either the -named subdirectory is searched or an immediate definition is loaded. -Pattern matching continues in this way until a definition is found. If -no pattern matches\index{master label files!pattern matching} then an attempt is made to open \texttt{../d3/d2/d1/name} -directly. If this fails an error is reported. - -The search of a sub-directory\index{master label files!sub-directory search} proceeds as follows. In simple search -mode indicated by \texttt{->}, the file \texttt{name} must occur directly in the -sub-directory. In full search mode indicated by \texttt{=>}, the files -\texttt{name, d1/name, d2/d1/name}, etc. are searched for in that order. -This full search allows a hierarchy of label files to be constructed -which mirrors a hierarchy of data files (see Example 4 below). - -Hashing is performed when the label file specification is either -a full path name or in the form \texttt{*/file} so in these cases -the search is very fast. Any other use of metacharacters invokes -a linear search with a full and relatively slow pattern match at each step. -Note that all tools which generate label files have a \texttt{-l} -option which is used to define the output directory in which to store -individual label files. When outputting master label files, the \texttt{-l} -option can be used to define the path in the output label file specifications. -In particular, setting the option \texttt{-l '*'} causes -the form \texttt{*/file} to be generated.\index{master label files!patterns} - -\subsection{MLF Examples} - -\index{master label files!examples} -\begin{enumerate} -\item -Suppose a data set consisted of two training data files with -corresponding label files: -\newline -\texttt{a.lab} contains -\begin{verbatim} - 000000 590000 sil - 600000 2090000 a - 2100000 4500000 sil -\end{verbatim} -\texttt{b.lab} contains -\begin{verbatim} - 000000 990000 sil - 1000000 3090000 b - 3100000 4200000 sil -\end{verbatim} -Then the above two individual label files could be replaced by a single MLF -\begin{verbatim} - #!MLF!# - "*/a.lab" - 000000 590000 sil - 600000 2090000 a - 2100000 4500000 sil - . - "*/b.lab" - 000000 990000 sil - 1000000 3090000 b - 3100000 4200000 sil - . -\end{verbatim} - -\item -A digit data base contains training tokens \texttt{one.1.wav, one.2.wav, one.3.wav, ..., -two.1.wav, two.2.wav, two.3.wav, ...}, etc. Label files are required containing -just the name of the model so that \HTK\ tools such as \htool{HERest} can be used. -If MLFs are not used, individual label files are needed. For example, -the individual label files \texttt{one.1.lab, one.2.lab, one.3.lab, ....} would be -needed -to identify instances of ``one'' even though each file contains the same entry, just -\begin{verbatim} - one -\end{verbatim} -Using an MLF containing -\begin{verbatim} - #!MLF!# - "*/one.*.lab" - one - . - "*/two.*.lab" - two - . - "*/three.*.lab" - three - . - -\end{verbatim} -avoids the need for many duplicate label files. - -\item -A training database \texttt{/db} contains directories \texttt{dr1, dr2, ..., dr8}. -Each directory contains a subdirectory called \texttt{labs} holding the -label files for the data files in that directory. The following -MLF would allow them to be found -\begin{verbatim} - #!MLF!# - "*" -> "/db/dr1/labs" - "*" -> "/db/dr2/labs" - ... - "*" -> "/db/dr7/labs" - "*" -> "/db/dr8/labs" -\end{verbatim} -Each attempt to open a label file will result in a linear search -through \texttt{dr1} to \texttt{dr8} to find that file. If the sub-directory name -is embedded into the label file name, then this searching can -be avoided. For example, if the label files in directory \texttt{drx} had -the form \texttt{drx\_xxxx.lab}, then the MLF would be written as -\begin{verbatim} - #!MLF!# - "*/dr1_*" -> "/db/dr1/labs" - "*/dr2_*" -> "/db/dr2/labs" - ... - "*/dr7_*" -> "/db/dr7/labs" - "*/dr8_*" -> "/db/dr8/labs" -\end{verbatim} - -\item -A training database is organised as a hierarchy where -\texttt{/disk1/db/dr1/sp2/u3.wav} is the data file for the third -repetition from speaker 2 in dialect region \texttt{dr1} -(see Figure~\ref{f:dbhier}). - -\centrefig{dbhier}{80}{Database Hierarchy: Data [Left]; Labels [Right].} - -Suppose -that a similar hierarchy of label files was constructed on -\texttt{disk3}. -These label files could be found by any \HTK\ tool by using an -MLF containing just -\begin{verbatim} - #!MLF!# - "*" => "/disk3" -\end{verbatim} -If for some reason all of the \texttt{drN} directories were -renamed \texttt{ldrN} in the label hierarchy, then this could be -handled by an MLF file containing -\begin{verbatim} - #!MLF!# - "*/dr1/*" => "/disk3/ldr1" - "*/dr2/*" => "/disk3/ldr2" - "*/dr3/*" => "/disk3/ldr3" - etc. -\end{verbatim} -\end{enumerate} -These few examples should illustrate the flexibility and power of MLF files. -It should noted, however, that when generating label names automatically from data file names, HTK sometimes discards path details. For example, during recognition, if the data files /disk1/dr2/sx43.wav and /disk2/dr4/sx43.wav are being recognised, and a single directory is specified for the output label files, then recognition results for both files will be written to a file called sx43.lab, and the latter occurrence will overwrite the former. - - -\mysect{Editing Label Files}{edlab} - -\HTK\ training tools typically expect the labels used in -transcription files to correspond\index{labels!editing} -directly to the names of the HMMs chosen to build an application. Hence, -the label files supplied with a speech database will often need -modifying. For example, the original transcriptions attached to a database -might be at a fine level of acoustic detail. Groups of labels corresponding -to a sequence of acoustic events (e.g. \texttt{pcl p'}) might need converting -to some simpler form (e.g. \texttt{p}) which is more suitable for being -represented by a HMM. As a second example, current high performance speech -recognisers use a large number of context dependent models to allow more -accurate acoustic modelling. For this case, the labels in the transcription -must be converted to show the required contexts explicitly. - -\HTK\ supplies a tool called \htool{HLEd} for rapidly and efficiently converting -label files. The \htool{HLEd} command invocation specifies the names of the files -to be converted and the name of a script file holding the actual -\htool{HLEd}\index{hled@\htool{HLEd}} commands. For example, the command -\begin{verbatim} - HLEd edfile.led l1 l2 l3 -\end{verbatim} -would apply the edit commands stored in the file \texttt{edfile.led} -to each of the label files \texttt{l1}, \texttt{l2} and \texttt{l3}. More commonly -the new label files are stored in a new directory to avoid overwriting -the originals. This is done by using the -\texttt{-l} option. For example, -\begin{verbatim} - HLEd -l newlabs edfile.led l1 l2 l3 -\end{verbatim} -would have the same effect as previously except that the new -label files would be stored in the directory \texttt{newlabs}. - -Each edit command stored in an edit file\index{edit file} is identified by -a mnemonic consisting of two letters\footnote{ -Some command names have single -letter\index{edit commands!single letter} alternatives for compatibility with -earlier versions of \HTK.} -and must be stored on a separate -line. The supplied edit commands can be divided into two groups. -The first group consist of commands which perform selective -changes to specific labels and the second group contains commands -which perform global transformations. -The reference section defines all of these -commands. Here a few examples will be given to illustrate the -use of \htool{HLEd}. - -As a first example, when using the -TIMIT database\index{TIMIT database}, -the original 61 phoneme symbol set is often mapped -into a simpler 48 phoneme symbol set. The aim of this mapping -is to delete all glottal stops, replace all closures preceding a voiced stop -by a generic -voiced closure (\texttt{vcl}), all closures preceding an unvoiced stop -by a generic -unvoiced closure (\texttt{cl}) and the different types of silence to -a single generic silence (\texttt{sil}). A \htool{HLEd} script to -do this might be -\begin{verbatim} - # Map 61 Phone Timit Set -> 48 Phones - SO - DE q - RE cl pcl tcl kcl qcl - RE vcl bcl dcl gcl - RE sil h# #h pau -\end{verbatim} -The first line is a comment indicated by the initial hash character. -The command on the second line is the {\it Sort} command -\texttt{SO}\index{so@\texttt{SO} command}.\index{labels!sorting} -This is an example of a global command. -Its effect is to sort all the labels into time order. -Normally the labels in a transcription will already be in time order -but some speech editors simply output labels in the order that the -transcriber marked them. Since this would confuse the re-estimation -tools, it is good practice to explicitly sort all label files in this -way. - -The command on the third line is the {\it Delete} command -\texttt{DE}\index{de@\texttt{DE} command}. -This is -a selective command. Its\index{labels!deleting} -effect is to delete all of the labels -listed on the rest of the command line, wherever they occur. -In this case, there is -just one label listed for deletion, the -glottal stop \texttt{q}. -Hence, the overall effect of this command will be to delete all occurrences -of the \texttt{q} label in the edited label files. - -The remaining commands in this example script are {\it Replace} commands -\texttt{RE}. The effect of a Replace command is to substitute the first -label following the \texttt{RE}\index{re@\texttt{RE} command} for every occurrence of the remaining labels -on that line.\index{labels!replacing} Thus, for example, the -command on the third line causes all occurrences of the labels \texttt{pcl}, -\texttt{tcl}, \texttt{kcl} or \texttt{qcl} to be replaced by the label \texttt{cl}. - -To illustrate the overall effect of the above \htool{HLEd} command script on -a complete label file, the following \texttt{TIMIT} format label file -\begin{verbatim} - 0000 2241 h# - 2241 2715 w - 2715 4360 ow - 4360 5478 bcl - 5478 5643 b - 5643 6360 iy - 6360 7269 tcl - 7269 8313 t - 8313 11400 ay - 11400 12950 dcl - 12950 14360 dh - 14360 14640 h# -\end{verbatim} -would be converted by the above script to the following -\begin{verbatim} - 0 1400625 sil - 1400625 1696875 w - 1696875 2725000 ow - 2725000 3423750 vcl - 3423750 3526875 b - 3526875 3975000 iy - 3975000 4543125 cl - 4543125 5195625 t - 5195625 7125000 ay - 7125000 8093750 vcl - 8093750 8975000 dh - 8975000 9150000 sil -\end{verbatim} -Notice that label boundaries in TIMIT format are given in terms of sample -numbers (16kHz sample rate), whereas the edited output file is in -\HTK\ format in which all times are in absolute 100ns units. - -As well as the Replace command, there is -also a {\it Merge} command \texttt{ME}\index{me@\texttt{ME} command}. This command is used -to replace a sequence of labels by a single label. \index{labels!merging} -For example, the following commands would merge the closure and release -labels in the previous TIMIT transcription into single labels -\begin{verbatim} - ME b bcl b - ME d dcl dh - ME t tcl t -\end{verbatim} -As shown by this example, the label used for the merged sequence can be -the same as occurs in the original but some care is needed since -\htool{HLEd} commands are normally applied in sequence. Thus, a command -on line $n$ is applied to the label sequence that remains after the -commands on lines 1 to $n-1$ have been applied. - -There is one exception to the above rule of sequential edit command -application. The {\it Change} command \index{labels!changing} -\texttt{CH}\index{ch@\texttt{CH} command} provides for context -sensitive replacement. However, when a sequence of Change commands occur -in a script, the sequence is applied as a block so that the contexts -which apply for each command are those that existed just prior to the -block being executed. The Change command takes 4 arguments \texttt{X A Y -B} such that every occurrence of label \texttt{Y} in the context of -\texttt{A \_ B} is changed to the label \texttt{X}. The contexts -\texttt{A} and \texttt{B} refer to sets of labels and are defined by -separate \textit{Define Context} commands \texttt{DC}\index{dc@\texttt{DC} command}. -The \texttt{CH} and -\texttt{DC} commands are primarily used for creating context sensitive -labels. For example, suppose that a set of context-dependent phoneme -models are needed for TIMIT. Rather than treat all possible contexts -separately and build separate triphones for each (see below), the -possible contexts will be grouped into just 5 broad classes: C -(consonant), V (vowel), N (nasal), L (liquid) and S (silence). The goal -then is to translate a label sequence such as \texttt{sil b ah t iy n ...} -into \texttt{sil+C S-b+V C-ah+C V-t+V C-iy+N V-n+ ...} where the -\texttt{-} and \texttt{+} symbols within a label are recognised by -\HTK\ as defining the left and right context, respectively. To perform this -transformation, it is necessary to firstly use \texttt{DC} commands to -define the 5 contexts, that is -\begin{verbatim} - DC V iy ah ae eh ix ... - DC C t k d k g dh ... - DC L l r w j ... - DC N n m ng ... - DC S h# #h epi ... -\end{verbatim} -Having defined the required contexts, a change command must be -written for each context dependent triphone, that is -\begin{verbatim} - CH V-ah+V V ah V - CH V-ah+C V ah C - CH V-ah+N V ah N - CH V-ah+L V ah L - ... - etc -\end{verbatim} -This script will, of course, be rather long (25 $\times$ number of -phonemes) but it can easily be generated automatically -by a simple program or shell script. - -The previous example shows how to transform a set of phonemes into a -context dependent set in which the contexts are user-defined. -\index{labels!context dependent} For -convenience, \htool{HLEd} provides a set of global transformation commands -for converting phonemic transcriptions to conventional left or right -biphones, or full triphones. For example, a script containing the single -{\it Triphone Conversion} command \texttt{TC}\index{tc@\texttt{TC} command} will convert phoneme -files to regular -triphones. As an illustration, applying the \texttt{TC} command to a file -containing the sequence \texttt{sil b ah t iy n ...} would give the -transformed sequence -\texttt{sil+b sil-b+ah b-ah+t ah-t+iy t-iy+n iy-n+ ...}. Notice that the -first and last phonemes in the sequence cannot be transformed in the -normal way. Hence, the left-most and right-most contexts of these -start and end phonemes can be specified -explicitly as arguments to the \texttt{TC} commands if required. For -example, the command \texttt{TC \# \#} would give the sequence -\texttt{\#-sil+b sil-b+ah b-ah+t ah-t+iy t-iy+n iy-n+ ... +\#}. -Also, the contexts at pauses and word boundaries can be blocked -using the -\texttt{WB} command. For example, if \texttt{WB sp} was executed, the -effect of a subsequent \texttt{TC} command on the sequence -\texttt{sil b ah t sp iy n ...} would be to give the sequence -\texttt{sil+b sil-b+ah b-ah+t ah-t sp iy+n iy-n+ ...}, -where \texttt{sp} represents a short pause. Conversely, the \texttt{NB} -command can be used to ignore a label as far as context is concerned. For example, -if \texttt{NB sp} was executed, the -effect of a subsequent \texttt{TC} command on the sequence -\texttt{sil b ah t sp iy n ...} would be to give the sequence -\texttt{sil+b sil-b+ah b-ah+t ah-t+iy sp t-iy+n iy-n+ ...}. - -When processing \HTK\ format label files with multiple levels, only the -level 1 (i.e. left-most) labels are affected.\index{labels!moving level} To process a higher -level, the \textit{Move Level} command \texttt{ML}\index{ml@\texttt{ML} command} should be used. -For example, in the script -\begin{verbatim} - ML 2 - RE one 1 - RE two 2 - ... -\end{verbatim} -the Replace commands are applied to level 2 which is the first level -above the basic level. The command \texttt{ML 1} returns to the -base level. A complete level can be deleted by the -\textit{Delete Level} command \texttt{DL}. This command can -be given a numeric argument to delete a specific level or -with no argument, the current level is deleted. -Multiple levels can also be split into single level alternatives -by using the \textit{Split Level} command \texttt{SL}. - -When processing \HTK\ format files with multiple alternatives, -each alternative is processed as though it were a separate file. - -Remember also that in addition to the explicit \htool{HLEd} commands, -levels and alternatives can be filtered on input by setting the -configuration variables \texttt{TRANSLEV}\index{translev@\texttt{TRANSLEV}} and -\texttt{TRANSALT}\index{transalt@\texttt{TRANSALT}} -(see section~\ref{s:labstruct}). - -Finally, it should be noted that most \HTK\ tools require -all HMMs used in a system to be defined in\index{HMM lists} -a {\it HMM List}. \htool{HLEd} can be made to automatically generate such -a list as a by-product of editing the label files by using the -\texttt{-n} option. For example, the following command would apply -the script \texttt{timit.led} to all files in the directory \texttt{tlabs}, -write the converted files to the directory \texttt{hlabs} -and also write out a list of all new labels in the edited -files to \texttt{tlist}. -\begin{verbatim} - HLEd -n tlist -l hlabs -G TIMIT timit.led tlabs/* -\end{verbatim} -Notice here that the \texttt{-G} option is used to inform \htool{HLEd} -that the format of the source files is \texttt{TIMIT}. This could also -be indicated by setting the configuration variable -\texttt{SOURCELABEL}\index{sourcelabel@\texttt{SOURCELABEL}}. - -\mysect{Summary}{labelsum} - -Table~\href{t:labelcparms} -lists all of the -configuration parameters recognised by \htool{HLabel} -along with a brief description. A missing module name means -that it is recognised by -more than one module. - -\begin{center} -\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{6.4cm}|} \hline -Module & Name & Description \\ \hline -\htool{HLabel} & \texttt{LABELSQUOTE} & Specify label quote character \\ -\htool{HLabel} & \texttt{SOURCELABEL} & Source label format \\ -\htool{HLabel} & \texttt{SOURCERATE} & Sample period for SCRIBE format \\ -\htool{HLabel} & \texttt{STRIPTRIPHONES} & Remove triphone contexts on input \\ -\htool{HLabel} & \texttt{TARGETLABEL} & Target label format\\ -\htool{HLabel} & \texttt{TRANSALT} & Filter alternatives on input \\ -\htool{HLabel} & \texttt{TRANSLEV} & Filter levels on input \\ -\htool{HLabel} & \texttt{V1COMPAT} & Version 1.5 compatibility mode \\ - & \texttt{TRACE} & trace control (default=0) \\ \hline -\end{tabular} -\tabcap{labelcparms}{Configuration Parameters used with Labels} -\end{center} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/latex2html-init b/HTKBook/latex2html-init deleted file mode 100644 index 0a01ff7..0000000 --- a/HTKBook/latex2html-init +++ /dev/null @@ -1 +0,0 @@ -$ACCENT_IMAGES=textrm diff --git a/HTKBook/models.tex b/HTKBook/models.tex deleted file mode 100644 index a9e85d9..0000000 --- a/HTKBook/models.tex +++ /dev/null @@ -1,1543 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{HMM Definition Files}{HMMDefs} - -\sidepic{Tool.model}{80}{} -The principle function of \HTK\ is to manipulate sets of hidden -Markov models (HMMs). The definition of a HMM must specify the -model topology, the transition parameters and the output -distribution parameters. The HMM observation vectors can be -divided into multiple independent data streams and each stream can -have its own weight. In addition, a HMM can have ancillary -information such as duration parameters. -\HTK\ supports both continuous mixture densities and discrete -distributions. \HTK\ also provides a generalised tying mechanism which -allows parameters to be shared within and between models. - -\index{HMM!definitions} -In order to encompass this rich variety of HMM types within -a single framework, \HTK\ uses a formal language -to define HMMs. The interpretation of this language is handled -by the library module \htool{HModel} which is responsible for converting -between the external and internal representations of HMMs. In addition, -it provides all the basic probability function calculations. -A second module \htool{HUtil} provides various additional facilities for -manipulating HMMs once they have been loaded into memory. - -The purpose of this chapter is to describe -the HMM definition language in some detail. The chapter begins by -describing how to write -individual HMM definitions. \HTK\ macros are -then explained and the mechanisms for defining a complete -model set are presented. The various flavours of -HMM are then described and the use of binary files discussed. -Finally, a formal description of the \HTK\ HMM definition -language is given. - -As will be seen, the definition of a large -HMM system can involve considerable complexity. However, in -practice, HMM systems are built incremently. The usual -starting point is a single HMM definition which is then -repeatedly cloned and refined using the various \HTK\ tools -(in particular, \htool{HERest} and \htool{HHEd}). -Hence, in practice, the \HTK\ user rarely has to -generate complex HMM definition files directly. - -\mysect{The HMM Parameters}{HMMparm} - -A HMM consists of a number of states. Each state $j$ has an associated -observation probability distribution $b_{j}(\bm{o}_t)$ which -determines the probability of generating observation $\bm{o}_t$ at -time $t$ and each pair of states $i$ and $j$ has an associated -transition probability $a_{ij}$. In \HTK\, the entry state $1$ and -the exit state $N$ of an $N$ state HMM are non-emitting. - -\sidefig{hmm1}{70}{Simple Left-Right HMM}{-4}{ -Fig.~\href{f:hmm1} shows a simple left-right HMM with five states in -total. Three of these are emitting states and have output probability -distributions associated with them. The transition matrix for -this model will have 5 rows and 5 columns. Each row will sum to one -except for the final row which is always all zero since no -transitions are allowed out of the final state. - -\HTK\ is principally concerned with continuous\index{HMM!parameters} -density models in which each observation probability distribution -is represented by a mixture Gaussian density. In this case, -for state $j$ -the probability $b_{j}(\bm{o}_t)$ of generating -observation $\bm{o}_t$ is given by -} - -\hequation{ - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left[ - \sum_{m=1}^{M_{js}} c_{jsm} {\cal N}(\bm{o}_{st}; - \bm{\mu}_{jsm}, \bm{\Sigma}_{jsm}) - \right]^{\gamma_s} -}{cdpdf} -where $M_{js}$ is the number of mixture components\index{mixture component} -in state $j$ for stream $s$, -$c_{jsm}$ is the weight of the $m$'th component and -${\cal N}(\cdot; \bm{\mu}, \bm{\Sigma})$ is a multivariate Gaussian -with mean vector\index{mean vector} $\bm{\mu}$ and -covariance matrix\index{covariance matrix} $\bm{\Sigma}$, that -is\index{output probability!continuous case} -\hequation{ -{\cal N}(\bm{o}; \bm{\mu}, \bm{\Sigma}) = - \frac{1}{\sqrt{(2 \pi)^n | \bm{\Sigma} |}} - e^{- \frac{1}{2}(\bm{o}-\bm{\mu})^\transpose \bm{\Sigma}^{-1}(\bm{o}-\bm{\mu})} -}{gnorm} -where $n$ is the dimensionality of $\bm{o}$. The exponent $\gamma_s$ is -a stream weight\index{stream weight} and its -default value is one. Other values can be -used to emphasise particular streams, however, none of the standard -\HTK\ tools manipulate it. - -\HTK\ also supports discrete probability -distributions\index{discrete probability} in which -case \index{output probability!discrete case} -\hequation{ - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left\{ - P_{js}[v_s(\bm{o}_{st})] - \right\}^{\gamma_s} -}{ddpdf} -where $v_s(\bm{o}_{st})$ is the output of the vector -quantiser for stream $s$ -given input vector $\bm{o}_{st}$ and $P_{js}[v]$ is the -probability of state $j$ generating symbol $v$ in stream $s$. - -In addition to the above, any model or state can have an -associated vector of duration parameters -\index{duration parameters} $\{d_k\}$\footnote{ -No current \HTK\ tool can estimate or use these. -}. -Also, -it is necessary to specify the kind of the observation -vectors, and the width of the observation vector in each stream. -Thus, the total information needed to define a single HMM is -as follows - \begin{itemize} - \item type of observation vector - \item number and width of each data stream - \item optional model duration parameter vector - \item number of states - \item for each emitting state and each stream - \begin{itemize} - \item mixture component weights or discrete probabilities - \item if continuous density, then means and covariances - \item optional stream weight vector - \item optional duration parameter vector - \end{itemize} - \item transition matrix -\end{itemize} -The following sections explain how these are defined. - -\mysect{Basic HMM Definitions}{OneHMM} - -Some \HTK\ tools require a single HMM to be defined. For example, the -isolated-unit re-estimation tool \htool{HRest} would be invoked as -\begin{verbatim} - HRest hmmdef s1 s2 s3 .... -\end{verbatim} - -\noindent -This would cause the model defined in the file \texttt{hmmdef} -to be input and its parameters re-estimated using the speech data -files \texttt{s1}, \texttt{s2}, etc.\index{HMM definition!basic form} - -\sideprog{hmm1def}{60}{Definition for Simple L-R HMM}{ -\hmmc{h}{hmm1} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 0.2 0.1 0.1 0.9 \\ -\>\> \hmkw{Variance} 4 \\ -\>\>\> 1.0 1.0 1.0 1.0 \\ -\> \hmkw{State} 3 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 0.4 0.9 0.2 0.1 \\ -\>\> \hmkw{Variance} 4 \\ -\>\>\> 1.0 2.0 2.0 0.5 \\ -\> \hmkw{State} 4 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 1.2 3.1 0.5 0.9 \\ -\>\> \hmkw{Variance} 4 \\ -\>\>\> 5.0 5.0 5.0 5.0 \\ -\> \hmkw{TransP} 5 \\ -\>\> 0.0 0.5 0.5 0.0 0.0 \\ -\>\> 0.0 0.4 0.4 0.2 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 0.0 \\ -\>\> 0.0 0.0 0.0 0.7 0.3 \\ -\>\> 0.0 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -}{} -HMM definition files consist of a sequence of symbols representing -the elements of a simple language. These symbols are mainly -keywords written within angle brackets and integer and -floating point numbers. -The full \HTK\ definition language is presented -more formally later in section~\ref{s:hmmdef}. For now, the -main features of the language will be described by some -examples.\index{HMM definition!symbols in} - -Fig~\href{f:hmm1def} shows a HMM definition corresponding to the simple -left-right HMM illustrated in Fig~\href{f:hmm1}. It is a continuous density -HMM with 5 states in total, 3 of which are emitting. The first symbol in the -file \hmmt{h} indicates that the following string is the name of a macro of -type \textsf{h} which means that it is a HMM definition (macros are explained -in detail later). Thus, this definition describes a HMM called ``hmm1''. -Note that HMM names should be composed of alphanumeric characters only and must -not consist solely of numbers. The HMM definition itself is bracketed by the -symbols \hmkw{BeginHMM}\index{beginhmm@$<$BeginHMM$>$} and -\hmkw{EndHMM}\index{endhmm@$<$EndHMM$>$}.\index{HMM name} - -The first -line of the definition proper specifies\index{HMM definition!global features} -the \textit{global} features of the HMM. In any system -consisting of many HMMs, these -features will be the same for all of them. -In this case, the global definitions indicate that -the observation vectors have 4 components -(\hmkw{VecSize}\index{vecsize@$<$VecSize$>$} 4) and that they denote -MFCC coefficients\index{MFCC coefficients} (\hmkw{MFCC}). - -The next line specifies the number of states in the HMM. There -then follows a definition for each emitting state $j$, each of which -has a single mean -vector $\bm{\mu}_j$ introduced by the keyword \hmkw{Mean} -\index{mean@$<$Mean$>$} -and a diagonal variance vector $\bm{\Sigma}_j$ -introduced by the keyword \hmkw{Variance}. -\index{variance@$<$Variance$>$} -The definition ends with the transition matrix $\{a_{ij}\}$ -introduced by the keyword -\hmkw{TransP}\index{transp@$<$TransP$>$}. -\index{HMM definition!mean vector} -\index{HMM definition!covariance matrix} -\index{HMM definition!transition matrix} - -Notice that -the dimension of each vector or matrix is specified -explicitly before listing the component values. These -dimensions must be consistent with the corresponding observation -width (in the case of output distribution parameters) or -number of states (in the case of transition matrices). -Although in this example they could be inferred, -\HTK\ requires that -they are included explicitly since, as will -be described shortly, they can be detached from the HMM definition -and stored elsewhere as a macro.\index{vector dimensions}\index{matrix dimensions} - - -The definition for \textsf{hmm1} makes use of many defaults. -In particular, there is no definition for the number of -input data streams or for the number of -mixture components per output distribution. Hence, in both -cases, a default of 1 is assumed. - -Fig~\href{f:hmm2def} shows a HMM definition in which -the emitting states are 2 component mixture Gaussians. -The number of mixture components in each state $j$ is indicated by the keyword -\hmkw{NumMixes}\index{nummixes@$<$NumMixes$>$} and each mixture component -is prefixed by the keyword \hmkw{Mixture}\index{mixture@$<$Mixture$>$} followed by the -component index $m$ and component weight $c_{jm}$. Note -that there is no requirement for the number of mixture components -to be the same in each distribution.\index{HMM definition!mixture components} - - -State definitions and the mixture components within them may be -listed in any order. When a HMM definition is loaded, a check is made -that all the required components have been defined. In addition, -checks are made that the mixture component weights and each row -of the transition matrix sum to one. -If very rapid loading is required, this consistency checking can be inhibited -by setting the Boolean configuration variable -\texttt{CHKHMMDEFS}\index{chkhmmdefs@\texttt{CHKHMMDEFS}} to -false. - -As an alternative to diagonal variance vectors, a Gaussian distribution -can have a full rank covariance\index{full rank covariance} matrix. An example of -this is shown in the definition for \textsf{hmm3} shown in -Fig~\href{f:hmm3def}. Since covariance matrices are symmetric, -they are stored in upper triangular form\index{upper triangular form} -i.e. each row of the matrix -starts at the diagonal element\footnote{ -Covariance matrices are actually stored internally in lower triangular -form}. Also, covariance matrices are stored -in their inverse form i.e.\ HMM definitions contain $\bm{\Sigma}^{-1}$ -rather than $\bm{\Sigma}$. To reflect this, the keyword chosen to -introduce a full covariance matrix is \hmkw{InvCovar}\index{invcovar@$<$InvCovar$>$}. - - -\sideprog{hmm2def}{60}{Simple Mixture Gaussian HMM}{ -\hmmc{h}{hmm2} \\ -\hmkw{BeginHMM} \\ -\>\hmkw{VecSize} 4 \hmkw{MFCC} \\ -\>\hmkw{NumStates} 4 \\ -\>\hmkw{State} 2 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.4 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.3 0.2 0.2 1.0 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\>\> \hmkw{Mixture} 2 0.6 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.0 0.0 0.8 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\>\hmkw{State} 3 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.7 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.2 0.6 1.4 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\>\> \hmkw{Mixture} 2 0.3 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 2.1 0.0 1.0 1.8 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.5 0.5 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -}{} - -Notice that only the second -state has a full covariance Gaussian component. The first state -has a mixture of two diagonal variance Gaussian components. Again, this -illustrates the flexibility of HMM definition in \HTK. If required -the structure of every -Gaussian can be individually configured. - -Another possible way to store covariance information is in the form -of the Choleski decomposition\index{Choleski decomposition} $L$ of the -inverse covariance matrix -i.e. $\bm{\Sigma}^{-1} = LL^\transpose$. -Again this is stored externally in upper triangular form so $L^\transpose$ is -actually stored. It is distinguished from the normal inverse covariance -matrix by using the keyword \hmkw{LLTCovar}\index{lltcovar@$<$LLTCovar$>$} -in place of \hmkw{InvCovar}\footnote{ -The Choleski storage format is not used by default in \HTK\ Version 2}. - - -The definition for \textsf{hmm3} also illustrates another -macro type, that is, \hmmt{o}. This macro is used as an alternative -way of specifying global options and, in fact, it is the format used -by \HTK\ tools when they write out a HMM definition. It is provided so that global -options can be specified ahead of any other HMM parameters. As will -be seen later, this is useful when using many types of macro. -\index{HMM definition!global options macro} - -As noted earlier, the observation vectors used to represent -the speech signal can be divided into two or more statistically -independent data streams. This corresponds to the splitting-up -of the input speech vectors as described in section~\ref{s:streams}. -In HMM definitions, the use of multiple data -streams must be indicated by specifying the number of streams and -the width (i.e\ dimension) of each stream as a global -option. This is done using the keyword \hmkw{StreamInfo} -\index{streaminfo@$<$StreamInfo$>$} followed -by the number of streams, and then a sequence of numbers indicating -the width of each stream. The sum of these -stream widths must equal the original vector size as indicated -by the \hmkw{VecSize} keyword. - -An example of a HMM definition for multiple data -streams\index{HMM definition!multiple data streams} -is \textsf{hmm4} shown in -Fig~\href{f:hmm4def}. This HMM is intended to model 2 distinct -streams, the first has 3 components and the second has 1. -This is indicated by the global option \hmkw{StreamInfo} 2 3 1. -The definition of each state output distribution now -includes means and variances for each individual stream. - -Thus, in Fig~\href{f:hmm4def}, each state is subdivided into -2 streams using the \hmkw{Stream}\index{stream@$<$Stream$>$} keyword followed by the stream -number. Note also, that each individual stream can be weighted. -In state 2 of \textsf{hmm4}, the vector following the -\hmkw{SWeights}\index{sweights@$<$SWeights$>$} keyword indicates that -stream 1 has a weight of 0.9 whereas -stream 2 has a weight of 1.1. There is no stream weight -\index{HMM definition! stream weight} vector -in state 3 and hence the default weight of 1.0 will be -assigned to each stream. - -\vspace{1.0cm} - - -\putprog{hmm3def}{100}{HMM with Full Covariance}{ -\hmmt{o} \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\hmmc{h}{hmm3} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.4 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\> \> 0.3 0.2 0.2 1.0 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\> \> 1.0 1.0 1.0 1.0 \\ -\>\>\> \hmkw{Mixture} 2 0.6 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.0 0.0 0.8 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\> \>\> 1.0 1.0 1.0 1.0 \\ -\> \hmkw{State} 3 \hmkw{NumMixes} 1 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 0.1 \> 0.2 \> 0.6 \> 1.4 \\ -\>\> \hmkw{InvCovar} 4 \\ -\>\>\> 1.0 \> 0.1 \> 0.0 \> 0.0\\ -\>\>\> \> 1.0 \> 0.2 \> 0.0\\ -\>\>\> \>\> 1.0 \> 0.1\\ -\>\>\> \>\>\> 1.0 \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.5 0.5 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - -No \HTK\ tools are supplied for estimating optimal stream -weight\index{HMM definition!stream weight} -values. Hence, they must either be set manually or derived -from some outside source. However, once set, they are used in -the calculation of output probabilities as specified in -equations~\ref{e:cdpdf} and \ref{e:ddpdf}, and hence they will -affect the operation of both the training and recognition tools. - -\putprog{hmm4def}{100}{HMM with 2 Data Streams}{ -\hmmt{o} \> \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\> \hmkw{StreamInfo} 2 3 1 \\ -\hmmc{h}{hmm4} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \\ -\>\> \hmkw{SWeights} 2 0.9 1.1 \\ -\>\> \hmkw{Stream} 1 \\ -\>\>\> \hmkw{Mean} 3 \\ -\>\>\>\> 0.2 0.1 0.1 \\ -\>\>\> \hmkw{Variance} 3 \\ -\>\>\>\> 1.0 1.0 1.0 \\ -\>\> \hmkw{Stream} 2 \\ -\>\>\> \hmkw{Mean} 1 0.0 \\ -\>\>\> \hmkw{Variance} 1 4.0 \\ -\> \hmkw{State} 3 \\ -\>\> \hmkw{Stream} 1 \\ -\>\>\> \hmkw{Mean} 3 \\ -\>\>\>\> 0.3 0.2 0.0 \\ -\>\>\> \hmkw{Variance} 3 \\ -\>\>\>\> 1.0 1.0 1.0 \\ -\>\> \hmkw{Stream} 2 \\ -\>\>\> \hmkw{Mean} 1 0.5 \\ -\>\>\> \hmkw{Variance} 1 3.0 \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.6 0.4 0.0 \\ -\>\> 0.0 0.0 0.4 0.6 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - -\mysect{Macro Definitions}{HMMmac} - -So far, basic model definitions have been described in which -all of the information required to define a HMM has been -given directly between the \hmkw{BeginHMM} and \hmkw{EndHMM} -keywords. As an alternative, \HTK\ allows the internal -parts of a definition to be written as separate units, possibly -in several different files, and then referenced by name wherever they -are needed. Such definitions are called \textit{macros}. - - -\sideprog{mac5def}{50}{Simple Macro Definitions}{ -\hmmt{o} \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\\ -\hmmc{v}{var} \\ -\> \hmkw{Variance} 4 \\ -\>\> 1.0 1.0 1.0 1.0 \\ -}{} - -HMM (\hmmt{h}) and global option macros -\index{macros}\index{HMM definition!macros} (\hmmt{o}) -have already been described. In fact, these are both rather -special cases since neither is ever referenced explicitly by -another definition. Indeed, the option macro is unusual in that -since it is global and must be unique, it has no name. -As an illustration of the use of macros, it may be observed -that the variance vectors in the HMM definition \textsf{hmm2} given -in Fig~\href{f:hmm2def} are all identical. If this was -intentional, then the variance vector could be defined as a macro -as illustrated in Fig~\href{f:mac5def}. - -A macro definition\index{macro definition} consists of a macro type indicator -followed by a user-defined macro name. In this case, the indicator is \hmmt{v} -and the name is \textsf{var}. Notice that a global options macro is included -before the definition for \textsf{var}. \HTK\ must know these before it can -process any other definitions thus the first macro file specified on the -command line of any \HTK\ tool must have the global options macro. Global -options macro need not be repeated at the head of every definition file, but it -does no harm to do so. - -\sideprog{hmm5def}{60}{A Definition Using Macros}{ - -\hmmc{h}{hmm5} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.4 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.3 0.2 0.2 1.0 \\ -\>\>\> \hmmc{v}{var} \\ -\>\> \hmkw{Mixture} 2 0.6 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.0 0.0 0.8 \\ -\>\>\> \hmmc{v}{var} \\ -\> \hmkw{State} 3 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.7 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.2 0.6 1.4 \\ -\>\>\> \hmmc{v}{var} \\ -\>\> \hmkw{Mixture} 2 0.3 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 2.1 0.0 1.0 1.8 \\ -\>\>\> \hmmc{v}{var} \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.5 0.5 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} - -}{} - -Once defined, a macro is used simply by writing the type -indicator and name exactly as written in the definition. -Thus, for example, Fig~\href{f:hmm5def} defines a HMM called -\textsf{hmm5} which uses the variance macro \textsf{var} but -is otherwise identical to the earlier HMM definition \textsf{hmm2}. - -\index{macro substitution} -The definition for \textsf{hmm5} can be understood by substituting -the textual body of the \textsf{var} macro everywhere that it is -referenced. Textually this would make the definition for \textsf{hmm5} -identical to that for \textsf{hmm2}, and indeed, if input to a recogniser, -their effects would be similar. -However, as will become clear in later chapters, -the HMM definitions \textsf{hmm2} and \textsf{hmm5} differ -in two ways. Firstly, if -any attempt was made to re-estimate the parameters of \textsf{hmm2}, -the values of the variance vectors would almost certainly -diverge. However, -the variance vectors of \textsf{hmm5} are tied together and are -guaranteed to remain identical, even after re-estimation. Thus, -in general, the use of a macro enforces a \textit{tying} which -results in the corresponding parameters being shared amongst -all the HMM structures which reference that macro. -Secondly, when used in a recognition tool, the computation required -to decode using HMMs with tied parameters will often be reduced. -This is particularly true when higher level parts of a HMM definition -are tied such as whole states. - -There are many different macro types\index{HMM definition!macro types}\index{macros!types}. Some have special -meanings but the following correspond to -the various distinct points in the hierarchy of HMM parameters which -can be tied. -\begin{tabbing} -+ \= ++++ \= \kill -\> \hmmt{s} \> shared state distribution\\ -\> \hmmt{m} \> shared Gaussian mixture component \\ -\> \hmmt{u} \> shared mean vector \\ -\> \hmmt{v} \> shared diagonal variance vector \\ -\> \hmmt{i} \> shared inverse full covariance matrix \\ -\> \hmmt{c} \> shared Choleski $L^\transpose$ matrix \\ -\> \hmmt{x} \> shared arbitrary transform matrix\footnote{ -Transform matrices are not used by any of the supported HTK tools. -} - \\ -\> \hmmt{t} \> shared transition matrix \\ -\> \hmmt{d} \> shared duration parameters \\ -\> \hmmt{w} \> shared stream weight vector -\end{tabbing} - -Fig~\href{f:hierarch} illustrates these potential -tie points\index{parameter tie points} graphically for the case of continuous density HMMs. -In this figure, each solid black circle represents a potential -tie point, and the associated macro type is indicated alongside it. - -\centrefig{hierarch}{120}{HMM Hierarchy and Potential Tie Points} - -\noindent -The tie points for discrete HMMs are identical except that the -macro types \hmmt{m}, \hmmt{v}, \hmmt{c}, \hmmt{i} and \hmmt{u} are not -relevant and are therefore excluded. - -The macros with special meanings\index{macros!special meanings} are as follows -\begin{tabbing} -+ \= ++++ \= ++++++++++++++ \= ++++ \=\kill -\> \hmmt{l} \> logical HMM \> \hmmt{h} \> physical HMM \\ -\> \hmmt{o} \> global option values \> \hmmt{p} \> tied mixture \\ -\> \hmmt{r} \> regression class tree \> \hmmt{j} \> linear transform -\end{tabbing} -The distinction between logical and physical HMMs will be explained -in the next section and option macros have already been described. -The \hmmt{p} macro is used by the HMM editor \htool{HHEd} -for building tied mixture systems (see section~\ref{s:tmix}). -The \hmmt{l} or \hmmt{p} macros are special in the sense -that they are created implicitly in order to represent specific kinds -of parameter sharing and they never occur explicitly in HMM definitions. - -\mysect{HMM Sets}{hmmsets} - -The previous sections have described how a single HMM definition -can be specified. However, many \HTK\ tools require complete model -sets to be specified rather than just a single model.\index{HMM sets} -When this is the case, the individual HMMs which belong to the set -are listed in a file rather than being enumerated explicitly on -the command line. Thus, for example, a typical invocation of -the tool \htool{HERest} might be as follows -\begin{verbatim} - HERest ... -H mf1 -H mf2 ... hlist -\end{verbatim} -where each \texttt{-H} option names a macro file and \texttt{hlist} -contains a list of HMM names, one per line. For example, it might contain -\begin{verbatim} - ha - hb - hc -\end{verbatim} -In a case such as this, the macro files would normally\index{HMM lists} -contain definitions for the models \texttt{ha}, -\texttt{hb} and \texttt{hc}, along with any lower level macro -definitions that they might require. - -As an illustration, -Fig~\href{f:mac6def} and Fig~\href{f:hmm6def} give examples of -what the macro files \texttt{mf1} and \texttt{mf2} might contain. -The first file contains definitions for three states and a -transition matrix. The second file -contains definitions for the three HMMs. In this example, -each HMM shares the three -states and the common transition matrix. A HMM set such as -this is called a \textit{tied-state} system. - -The order in which macro files are listed on -the command line and the order of definition within -each file must ensure that all macro -definitions are defined before they are referenced. -Thus, macro files are typically organised such that all -low level structures come first followed by states and -transition matrices, with the actual HMM definitions coming last. - - -When the HMM list contains the name of a HMM for which no corresponding -macro has been defined, then an attempt is made to open a file with the -same name. This file is expected to contain a single definition -corresponding to the required HMM. Thus, the general mechanism for -loading a set of HMMs is as shown in Fig~\href{f:hsetdef}. In this -example, the HMM list \texttt{hlist} contains the names of five HMMs -of which -only three have been predefined via the macro files. Hence, the -remaining definitions are found in individual HMM definition files -\texttt{hd} and \texttt{he}. - -When a large number of HMMs must be loaded from individual files, it is -common to store them in a specific directory. Most \HTK\ tools allow -this directory to be specified explicitly using a command line option. -For example, in the command -\begin{verbatim} - HERest -d hdir ... hlist .... -\end{verbatim} -the definitions for the HMM listed in \texttt{hlist} will be -searched for in the subdirectory \texttt{hdir}. - - -After loading each HMM set,\index{tied-state} \htool{HModel} marks it as belonging -to one of the following categories (called the \textit{HSKind}\index{hskind@HSKind} -\begin{itemize} -\item \texttt{PLAINHS} -\item \texttt{SHAREDHS} -\item \texttt{TIEDHS} -\item \texttt{DISCRETEHS} -\end{itemize} - - -Any HMM set containing discrete output distributions is assigned\index{HMM sets!types} -to the \texttt{DISCRETEHS}\index{discretehs@\texttt{DISCRETEHS}} category (see section~\ref{s:dischmm}). -If all mixture components are tied, then it -is assigned to the \texttt{TIEDHS} category (see section~\ref{s:tmix}). -If it contains any shared states (\hmmt{s} macros) -or Gaussians (\hmmt{m} macros) then it is \texttt{SHAREDHS}\index{sharedhs@\texttt{SHAREDHS}}. -Otherwise, it is \texttt{PLAINHS}. The category assigned -to a HMM set determines which of several possible optimisations -the various \HTK\ tools can apply to it. As a check, the required kind of -a HMM set can also be set via the configuration variable \texttt{HMMSETKIND}. -For debugging purposes, this can also be used to re-categorise a -\texttt{SHAREDHS} system as \texttt{PLAINHS}\index{plainhs@\texttt{PLAINHS}}. - -As shown in Figure~\href{f:hierarch}, complete HMM -definitions can be tied as well as their individual parameters. However, -tying at the HMM level is defined in a different way. -HMM lists have so far\index{HMM tying} -been described as simply a list of model names. In fact, every HMM has two -names: a {\it logical} name and a {\it physical name}. The logical name -reflects the r\^{o}le of the model and the physical name is used to -identify the definition on disk. By default, the logical and physical names -are identical. HMM tying is implemented by letting several logically -distinct HMMs share the same physical definition. This is done by giving -an explicit physical name immediately after the logical name in a HMM -list\index{HMM lists}. - -\putprog{mac6def}{100}{File mf1: shared state and -transition matrix macros}{ - -\hmmt{o} \>\> \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\hmmc{s}{stateA} \\ -\> \hmkw{Mean} 4 \\ -\>\> 0.2 0.1 0.1 0.9 \\ -\> \hmkw{Variance} 4 \\ -\>\> 1.0 1.0 1.0 1.0 \\ -\hmmc{s}{stateB} \\ -\> \hmkw{Mean} 4 \\ -\>\> 0.4 0.9 0.2 0.1 \\ -\> \hmkw{Variance} 4 \\ -\>\> 1.0 2.0 2.0 0.5 \\ -\hmmc{s}{stateC} \\ -\> \hmkw{Mean} 4 \\ -\>\> 1.2 3.1 0.5 0.9 \\ -\> \hmkw{Variance} 4 \\ -\>\> 5.0 5.0 5.0 5.0 \\ -\hmmc{t}{tran} \\ -\> \hmkw{TransP} 5 \\ -\>\> 0.0 0.5 0.5 0.0 0.0 \\ -\>\> 0.0 0.4 0.4 0.2 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 0.0 \\ -\>\> 0.0 0.0 0.0 0.7 0.3 \\ -\>\> 0.0 0.0 0.0 0.0 0.0 -} - - -\putprog{hmm6def}{100}{Simple Tied-State System}{\hmmc{h}{ha} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmmc{s}{stateA} \\ -\> \hmkw{State} 3 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmkw{State} 4 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmmc{t}{tran} \\ -\hmkw{EndHMM} \\ - \\ -\hmmc{h}{hb} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmkw{State} 3 \\ -\>\> \hmmc{s}{stateA} \\ -\> \hmkw{State} 4 \\ -\>\> \hmmc{s}{stateC} \\ -\> \hmmc{t}{tran} \\ -\hmkw{EndHMM} \\ - \\ -\hmmc{h}{hc} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmmc{s}{stateC} \\ -\> \hmkw{State} 3 \\ -\>\> \hmmc{s}{stateC} \\ -\> \hmkw{State} 4 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmmc{t}{tran} \\ -\hmkw{EndHMM} -} - -\centrefig{hsetdef}{120}{Defining a Model Set} - -For example, in the HMM list shown in Fig~\href{f:hlisteg}, -the logical HMMs {\tt two}, {\tt too} and {\tt to} are tied -and share the same physical HMM definition {\tt tuw}. The HMMs {\tt one} -and {\tt won} are also tied but in this case {\tt won} shares {\tt one}'s -definition. There is, however, no subtle distinction here. The two different -cases are given just to emphasise that the names used for the logical and physical -HMMs can be the same or different, as is convenient. Finally, in this example, -the models {\tt three} and {\tt four} are untied. - - -\sideprog{hlisteg}{70}{HMM List with Tying}{ -two \>\>tuw \\ -too \>\> tuw \\ -to \>\> tuw \\ -one \\ -won \>\> one \\ -three \\ -four -}{} -This mechanism is implemented internally by creating a \hmmt{l} macro -definition for every HMM in the HMM list. If an explicit physical HMM -is also given in the list, then the logical HMM is linked to -that macro, otherwise a \hmmt{h} macro -is created with the same name as the \hmmt{l} macro. Notice that this is -one case where the ``define before use'' rule is relaxed. If an undefined -\hmmt{h} is encountered then a dummy place-holder is created for it and, -as explained above, -\htool{HModel} subsequently tries to find a HMM definition -file of the same name. - -Finally it should be noted that -in earlier versions of \HTK, there were no HMM macros. However, -HMM definitions could be listed in a single \index{master macro file} -\textit{master macro file} or MMF\index{MMF}. Each HMM definition began -with its name written as a quoted string and ended with a period -written on its own (just like master label files), and the first -line of an MMF contained the string \texttt{\#!MMF!\#}. \inthisversion -the use of MMFs has been subsumed within the general macro -definition facility using the \hmmt{h} type. -However, for compatibility, the older MMF style of file can still be -read by all \HTK\ tools. - -\mysect{Tied-Mixture Systems}{tmix} - -A Tied-Mixture System\index{tied-mixture system} is one in which all -Gaussian components are stored in -a pool and all state output distributions share this pool. Fig~\href{f:tmixeg} -illustrates this for the case of single data stream. - -\sidefig{tmixeg}{60}{Tied Mixture System}{-2}{} -Each state output distribution is defined by $M$ -mixture component weights and since all states share the same components, -all of the state-specific discrimination is encapsulated within these -weights. The set of Gaussian components selected for the pool -should be representative of the acoustic space covered by the feature -vectors. To keep $M$ manageable, multiple data streams are typically -used with tied-mixture systems. For example, static parameters may -be in one stream and delta parameters in another (see section~\ref{s:streams}). -Each stream then has a separate pool of Gaussians which are often referred -to as \textit{codebooks}. - -More formally, for $S$ independent data streams, -the output distribution for state $j$ -is defined as \index{tied-mixtures!output distribution} - -\hequation{ - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left[ - \sum_{m=1}^{M_s} c_{jsm} {\cal N}(\bm{o}_{st}; - \bm{\mu}_{sm}, \bm{\Sigma}_{sm}) - \right]^{\gamma_s} -}{tmixpdf} -where the notation is identical to that used in equation~\ref{e:cdpdf}. -Note however that this equation differs from equation~\ref{e:cdpdf} -in that the Gaussian component parameters and the -number of mixture components -per stream are state independent. - - -Tied-mixture systems lack the modelling accuracy of fully continuous -density systems. However, they can often be implemented more efficiently -since the total number of Gaussians which must be evaluated at -each input frame is independent of the number of active HMM states and -is typically much smaller. - - -A tied-mixture HMM system in \HTK\ is defined by representing the -pool of shared Gaussians as \hmmt{m} macros with names ``xxx1'', -``xxx2'', \ldots, ``xxxM'' where ``xxx'' is an arbitrary name. -Each HMM state definition is then specified by giving the name -``xxx'' followed by a list of the mixture weights. Multiple -streams are identified using the \hmkw{Stream}\index{stream@$<$Stream$>$} keyword as described -previously. - -As an example, Fig~\href{f:tmixpool} shows a set of macro -definitions which specify a 5 Gaussian component tied-mixture pool. - - -Fig~\href{f:tmixhmm} then shows a typical -tied-mixture\index{HMM definition!tied-mixture} HMM definition -which uses this pool. As can be seen, the mixture component weights -are represented an array of real numbers as in the continuous density case. - -The number of components in each tied-mixture codebook is typically -of the order of 2 or 3 hundred. Hence, the list of mixture weights in -each state is often long with many values being repeated, particularly -floor values. To allow more efficient coding, successive identical -values can be represented as a single value plus a repeat count in the -form of an asterix followed by an integer multiplier. For example, -Fig~\href{f:tmixhmm2} shows the same HMM definition as above but using -repeat counts. When \HTK\ writes out a tied-mixture definition, it -uses repeat counts wherever possible. - -\putprog{tmixpool}{60}{Tied-Mixture Codebook}{ -\hmmt{o} \hmkw{VecSize} 2 \hmkw{MFCC} \\ -\hmmc{m}{mix1} \\ - \> \hmkw{Mean} \>\>\> 2 0.0 0.1 \\ - \> \hmkw{Variance} \>\>\> 2 1.0 1.0 \\ -\hmmc{m}{mix2} \\ - \> \hmkw{Mean} \>\>\> 2 0.2 0.3 \\ - \> \hmkw{Variance} \>\>\> 2 2.0 1.0 \\ -\hmmc{m}{mix3} \\ - \> \hmkw{Mean} \>\>\> 2 0.0 0.1 \\ - \> \hmkw{Variance} \>\>\> 2 1.0 2.0 \\ -\hmmc{m}{mix4} \\ -\> \hmkw{Mean} \>\>\> 2 0.4 0.1 \\ -\> \hmkw{Variance} \>\>\> 2 1.0 1.5 \\ -\hmmc{m}{mix5} \\ -\> \hmkw{Mean} \>\>\> 2 0.9 0.7 \\ -\> \hmkw{Variance} \>\>\> 2 1.5 1.0 -} - -\mysect{Discrete Probability HMMs}{dischmm} - -Discrete probability\index{discrete probability} HMMs model -observation sequences which -consist of symbols drawn from a discrete and finite set of size -$M$. As in the case of tied-mixture systems described above, -this set is often referred to as a \textit{codebook}. - -The form of the output distributions in a discrete HMM was -given in -equation~\ref{e:ddpdf}. It consists of a table giving the -probability of each possible observation symbol. Each symbol is -identified by an index in the range 1 to $M$ and hence the -probability of any symbol can be determined by a simple -table look-up operation. - -For speech -applications, the observation symbols are generated by a -vector quantiser which typically associates a prototype -speech -vector with each codebook\index{codebook} symbol. Each incoming speech vector -is then represented by the symbol whose associated -prototype is closest. The prototypes themselves are chosen -to cover the acoustic space and they are usually calculated -by clustering a representative sample of speech vectors. - -In \HTK, discrete HMMs are specified using a very similar -notation to that used for tied-mixture HMMs. A discrete HMM\index{discrete HMMs} can -have multiple data streams but the width of each stream must be -1. The output probabilities are stored as logs in a scaled -\index{discrete HMM!output probability scaling} -integer format such that if $d_{js}[v]$ is the stored discrete -probability for symbol $v$ in stream $s$ of state $j$, the true -probability is given by -\hequation{ - P_{js}[v] = exp(-d_{js}[v]/2371.8) -}{dpscale} -Storage in the form of scaled logs allows discrete probability -HMMs to be implemented very efficiently since \HTK\ tools -mostly use log arithmetic and direct storage in log form -avoids the need for a run-time conversion. The -range determined by the constant 2371.8 -was selected to enable probabilities from 1.0 down to -0.000001 to be stored. - - -\putprog{tmixhmm2}{85}{HMM using Repeat Counts}{ - -\hmmc{h}{htm} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.2 0.1 0.3*2 0.1\\ -\>\hmkw{State} 3 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.4 0.3 0.1*3\\ -\>\hmkw{TransP} 4 \\ -\> \> ... \\ -\hmkw{EndHMM} -} - -As an example, Fig~\href{f:dischmm} shows the definition of a discrete -HMM called \textsf{dhmm1}. As can be seen, this has two streams. The codebook -for stream 1 is size 10 and for stream 2, it is size 2. For consistency with -the representation used for continuous density HMMs, these sizes are encoded -in the \hmkw{NumMixes}\index{nummixes@$<$NumMixes$>$} specifier. - -\mysect{Input Linear Transforms}{lintran} - -When reading feature vectors from files HTK will coerce them to the -\texttt{TARGETKIND} specified in the config file. Often the -\texttt{TARGETKIND} will contain certain qualifiers (specifying for -example delta parameters). In addition to this parameter coercion it -is possible to apply a linear transform before, or after, appending -delta, acceleration and third derivative parameters. - -\putprog{lintran}{70}{Input Linear Transform}{ -\hmmc{j}{lintran.mat} \\ -\hmkw{MMFIdMask} *\\ -\hmkw{MFCC} \\ -\hmkw{PreQual}\\ -\hmkw{LinXform}\\ -\> \hmkw{VecSize} 2\\ -\> \hmkw{BlockInfo} 1 2\\ -\> \hmkw{Block} 1\\ -\> \> \hmkw{Xform} 2 5\\ -\> \> \> 1.0 0.1 0.2 0.1 0.4\\ -\> \> \> 0.2 1.0 0.1 0.1 0.1 -} -Figure~\ref{f:lintran} shows an example linear transform. The -\hmkw{PreQual} keyword specifies that the linear transform -is to be applied before the delta and delta-delta -parameters specified in \texttt{TARGETKIND} are added. The default -mode, no \hmkw{PreQual} keyword, applies the linear transform -after the addition of the qualifiers. - -The linear transform fully supports projection from higher -number of features to a smaller number of features. In the -example, the parameterised data must consist of 5 \texttt{MFCC} -parameters\footnote{If C0 or normalised log-energy are added -these will be stripped prior to applying the linear transform}. -The model sets that are generated using this transform have -a vector size of 2. - -By default the linear transform is stored with the HMM. This is -achieved by adding the \hmkw{InputXform} keyword and specifying the -transform or macroname. To allow compatibility with tools only -supporting the old format models it is possible to specify that no -linear transform is to be stored with the model. -\begin{verbatim} - # Do not store linear transform - HMODEL: SAVEINPUTXFORM = FALSE -\end{verbatim} -In addition it is possible to specify the linear transform as a -\htool{HPARM} configuration variable, \texttt{MATRTRANFN}. -\begin{verbatim} - # Specifying an input linear transform - HPARM: MATTRANFN = /home/test/lintran.mat -\end{verbatim} -When a linear transform is specified in this form it is not necessary -to have a macroname linked with it. In this case the filename -will be used as the macroname (having stripped the directory name) - -\mysect{Tee Models}{teemods} - -Normally, the transition probability from the non-emitting entry -state to the non-emitting exit state of a HMM will be zero to ensure -that the HMM aligns with at least one observation vector. -Models which have a non-zero entry to exit transition probability -are referred to as {\it tee-models}. - -Tee-models\index{tee-models} are useful for modelling optional transient effects -such as short pauses and noise bursts, particularly between words. - -Although most \HTK\ tools support tee-models, they are incompatible with -those that work with isolated models such as \htool{HInit} and -\htool{HRest}. When a tee-model is loaded into one of these tools, its -entry to exit transition probability is reset to zero and the first row of -its transition matrix is renormalised. - -\putprog{tmixhmm}{80}{Tied-Mixture HMM}{ -\hmmc{h}{htm} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.2 0.1 0.3 0.3 0.1\\ -\>\hmkw{State} 3 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.4 0.3 0.1 0.1 0.1\\ -\>\hmkw{TransP} 4 \\ -\> \> 0.0 1.0 0.0 0.0 \\ -\> \> 0.0 0.5 0.5 0.0 \\ -\> \> 0.0 0.0 0.6 0.4 \\ -\> \> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - -\mysect{Binary Storage Format}{binsave} - -Throughout this chapter, a text-based representation -has been used for the external storage of HMM -definitions. For experimental work, text-based storage allows -simple and direct -access to HMM parameters and this can be invaluable. -However, when using very large HMM sets, storage in text form -is less practical since it is inefficient in its use of -memory and the time taken to load can be excessive due to -the large number of character to float conversions needed. - -To solve these problems, \HTK\ also provides a -binary storage\index{HMM definition!binary storage}\index{binary storage} -format. In binary mode, keywords are written as a single -colon followed by an 8 bit code representing the actual -keyword. Any subsequent numerical information following -the keyword is then in binary. Integers are written as -16-bit shorts and all floating-point numbers are written -as 32-bit single precision floats. The repeat -factor used in the run-length encoding -scheme for tied-mixture and discrete HMMs is written as -a single byte. Its presence immediately after a 16-bit -discrete log probability is indicated by setting the top -bit to 1 (this is the reason why the range of discrete -log probabilities is limited to -0 to 32767 i.e.\ only 15 bits are used for the actual -value). For tied-mixtures, the repeat count is signalled -by subtracting 2.0 from the weight. - -Binary storage format and text storage format can be mixed -within and between input files. Each time a keyword is -encountered, its coding is used to determine whether the -subsequent numerical information should be input in text -or binary form. This means, for example, that binary -files can be manually patched by replacing a binary-format -definition by a text format definition\footnote{The fact that -this is possible does not mean that it is recommended practice!}. - -\HTK\ tools provide a standard command line option (\texttt{-B}) to indicate -that HMM definitions should be output in binary format. -Alternatively, the Boolean configuration -variable \texttt{SAVEBINARY}\index{savebinary@\texttt{SAVEBINARY}} can be set to true to -force binary format output. - -\putprog{dischmm}{80}{Discrete Probability HMM}{ -\hmmt{o} \hmkw{DISCRETE} \hmkw{StreamInfo} 2 1 1 \\ -\hmmc{h}{dhmm1} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \\ -\>\> \hmkw{NumMixes} 10 2 \\ -\>\> \hmkw{SWeights} 2 0.9 1.1 \\ -\>\> \hmkw{Stream} 1 \\ -\> \>\> \hmkw{DProb} 3288*4 32767*6 \\ -\>\> \hmkw{Stream} 2 \\ -\>\> \> \hmkw{DProb} 1644*2 \\ -\> \hmkw{State} 3 \\ -\>\> \hmkw{NumMixes} 10 2 \\ -\>\> \hmkw{SWeights} 2 0.9 1.1 \\ -\> \> \hmkw{Stream} 1 \\ -\> \> \> \hmkw{DProb} 5461*10 \\ -\> \> \hmkw{Stream} 2 \\ -\> \> \> \hmkw{DProb} 1644*2 \\ -\>\hmkw{TransP} 4 \\ -\> \> 0.0 1.0 0.0 0.0 \\ - \> \> 0.0 0.5 0.5 0.0 \\ - \> \> 0.0 0.0 0.6 0.4 \\ -\> \> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - - -\mysect{The HMM Definition Language}{hmmdef} - -To conclude this chapter, -this section presents a formal\index{HMM definition!formal syntax} description -of the HMM definition language used by \HTK. -Syntax is described using an extended BNF notation in which -alternatives are separated by a vertical bar $|$, parentheses () denote -factoring, brackets [\ ] denote options, and braces \{\} denote zero or more -repetitions. - -All keywords are enclosed in angle brackets\footnote{ -This definition covers the textual version only. The syntax for -the binary format -is identical apart from the way that the lexical items are encoded.} and -the case of the -keyword name is not significant. -White space is not significant except within double-quoted strings. - -The top level structure of a HMM definition is shown by the following -rule. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> hmmdef = \> [ $\sim$h macro ] \\ -\>\> $<$BeginHMM$>$ \\ -\>\>\> [ globalOpts ] \\ -\>\>\> $<$NumStates$>$ short \\ -\>\>\> state \{ state \} \\ -\>\>\> transP \\ -\>\>\> [ duration ] \\ -\>\> $<$EndHMM$>$ -\end{tabbing} -} -A HMM definition consists of an optional set of global options\index{HMM definition!global options} followed by -the \hmkw{NumStates}\index{numstates@$<$NumStates$>$} keyword whose following argument specifies the number of states in -the model inclusive of the non-emitting entry and exit states\footnote{ -Integer numbers are specified as either \textsf{char} or \textsf{short}. -This has no effect on text-based definitions but for binary format it indicates -the underlying C type used to represent the number.}. -The information for each state is then given in turn, followed by the -parameters of the transition matrix and the model duration parameters, if any. -The name of the HMM is given by the \hmmt{h} macro. If the HMM is the -only definition within a file, the \hmmt{h} macro name can be omitted -and the HMM name is assumed to be the same as the file name. - -The global options\index{global options} are common to all HMMs. They can be given -separately using a \hmmt{o} option macro -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> optmacro = \> $\sim$o globalOpts -\end{tabbing} -} -\noindent -or they can be included in one or more HMM definitions. Global -options may be repeated but no definition can change a previous -definition. All global options must be defined before any other -macro definition is processed. In practice this means that any -HMM system which uses parameter tying must have a \hmmt{o} option macro -at the head of the first macro file processed. - -The full set of global options is given below. Every HMM set must -define the vector size (via \hmkw{VecSize}\index{vecsize@$<$VecSize$>$}), the stream widths -(via \hmkw{StreamInfo}\index{streaminfo@$<$StreamInfo$>$}) -and the observation parameter kind. However, if only the stream -widths are given, then the vector size will be inferred. If -only the vector size is given, then a single stream of identical -width will be assumed. All other options default to null. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> globalOpts = \> option \{ option \} \\ -\> option = \> $<$HmmSetId$>$ string $|$ \\ -\>\> $<$StreamInfo$>$ short \{ short \} $|$ \\ -\>\> $<$VecSize$>$ short $|$ \\ -\>\> $<$ProjSize$>$ short $|$ \\ -\>\> $<$InputXform$>$ inputXform $|$ \\ -\>\> $<$ParentXform$>$ $\sim$a macro $|$ \\ -\>\> covkind $|$ \\ -\>\> durkind $|$ \\ -\>\> parmkind -\end{tabbing} -} -\noindent -The {\sf $<$HmmSetId$>$} option allows the user to give the MMF an -identifier. This is used as a sanity check to make sure that a TMF can -be safely applied to this MMF. -The arguments to the -{\sf $<$StreamInfo$>$} option are the number of streams (default 1) and then -for each stream, the width of that stream. The {\sf $<$VecSize$>$} option -gives the total number of elements in each input vector. {\sf $<$ProjSize$>$} -is the number of ``nuisance'' dimensions removed using, for example, -an HLDA transform. The {\sf $<$ParentXForm$>$} allows the semi-tied macro, -if any, associated with the model-set to be specified. -If both \hmkw{VecSize} and \hmkw{StreamInfo} are included then the -sum of all the stream widths must equal the input vector size. - -The {\sf covkind } defines the kind of the covariance matrix -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> covkind =\> $<$DiagC$>$ $|$ $<$InvDiagC$>$ $|$ $<$FullC$>$ $|$ \\ -\>\> $<$LLTC$>$ $|$ $<$XformC$>$ -\end{tabbing} -} -\noindent -where {\sf $<$InvDiagC$>$} is used internally. {\sf $<$LLTC$>$} -and {\sf $<$XformC$>$} are not used in \HTK\ Version 3.4. -Setting the covariance kind as a global option forces all components to -have this kind. In particular, it prevents mixing full and diagonal covariances -within a HMM set. - -The {\sf durkind} denotes the type of duration -model used according to the following rules -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> durkind =\> $<$nullD$>$ $|$ $<$poissonD$>$ $|$ $<$gammaD$>$ $|$ $<$genD$>$ -\end{tabbing} -} -\noindent -For anything other than {\sf $<$nullD$>$}, a duration vector\index{duration vector} must -be supplied for the model or each state as described below. Note that no -current HTK tool can estimate or use such duration vectors. - -The parameter kind is any legal parameter kind including qualified forms -(see section~\ref{s:genio}) -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> parmkind =\> $<$basekind\{\_D$|$\_A$|$\_T$|$\_E$|$\_N$|$\_Z$|$\_O$|$\_V$|$\_C$|$\_K\}$>$ \\ -\> basekind =\> $<$discrete$>$$|$$<$lpc$>$$|$$<$lpcepstra$>$$|$$<$mfcc$>$ $|$ $<$fbank$>$ $|$ \\ - \> \> $<$melspec$>$$|$ $<$lprefc$>$$|$$<$lpdelcep$>$ $|$ $<$user$>$ -\end{tabbing} -} -\noindent -where the syntax rule for {\sf parmkind} is non-standard in that no spaces -are allowed between the base kind and any subsequent qualifiers. -As noted in chapter~\ref{c:speechio}, {\sf $<$lpdelcep$>$} is -provided only for compatibility -with earlier versions of \HTK\ and its further use should be avoided. - -Each state of each HMM must have its own section defining the parameters -associated with that state -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> state =\> $<$State: Exp $>$ short stateinfo -\end{tabbing} -} -\noindent -where the short following {\sf $<$State: Exp $>$} is the state number. State -information can be defined in any order. The syntax is as follows -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> stateinfo = \> $\sim$s macro $|$ \\ - \>\> [ mixes ] [ weights ] stream \{ stream \} [ duration ] \\ -\> macro = \> string -\end{tabbing} -} -\noindent -A {\sf stateinfo} definition consists of an -optional specification of the number of mixture components, an optional set of stream weights, -followed by a block of information for each stream, optionally terminated with -a duration vector. Alternatively, {\sf $\sim$s macro} can be -written where {\sf macro} is the name of a previously defined macro. - -The optional {\sf mixes} in a {\sf stateinfo} definition specify -the number of mixture components (or discrete codebook size) for -each stream of that state -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> mixes = \> $<$NumMixes$>$ short \{short\} -\end{tabbing} -} -\noindent -where there should be one {\sf short} for each stream. If this -specification is omitted, it is assumed that all streams -have just one mixture component. - -The optional {\sf weights} in a {\sf stateinfo} definition define -a set of exponent weights for each independent data stream. The -syntax is -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> weights = \> $\sim$w macro $|$ $<$SWeights$>$ short vector \\ -\> vector = \> float \{ float \} -\end{tabbing} -} -\noindent -where the {\sf short} gives the number $S$ of weights (which should match the -value given in the \hmkw{StreamInfo} option) and the {\sf vector} -contains the $S$ stream weights $\gamma_s$ (see section~\ref{s:HMMparm}). - -The definition of each {\sf stream} -depends on the kind of HMM set. In the normal case, it -consists of a sequence of mixture -component -definitions optionally preceded by the stream number. If the stream -number is omitted then it is assumed to be 1. For tied-mixture -and discrete HMM sets, special forms are used. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> stream = \> [ $<$Stream$>$ short ] \\ -\> \> (mixture \{ mixture \} $|$ tmixpdf $|$ discpdf) -\end{tabbing} -} - -The definition of each mixture component consists of a Gaussian -pdf optionally preceded by the mixture number and its weight -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> mixture = \> [ $<$Mixture$>$ short float ] mixpdf -\end{tabbing} -} -\noindent -If the \hmkw{Mixture}\index{mixture@$<$Mixture$>$} part is missing then mixture 1 is assumed and the -weight defaults to 1.0. - -The {\sf tmixpdf} option is used only for fully -tied mixture sets. Since the {\sf mixpdf} parts are all macros in -a tied mixture system and since they are identical for every stream -and state, it is only necessary to know the mixture weights. The -{\sf tmixpdf} syntax allows these to be specified in the following -compact form -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> tmixpdf = \> $<$TMix$>$ macro weightList \\ -\> weightList = \> repShort \{ repShort \} \\ -\> repShort = \> short [ $\ast$ char ] -\end{tabbing} -} -\noindent -where each {\sf short} is a mixture component weight scaled so that -a weight of 1.0 is represented by the integer 32767. -The optional asterix -followed by a {\sf char} is used to indicate -a repeat count. For example, {\tt 0*5} is equivalent to 5 zeroes. -The Gaussians which make-up the pool of tied-mixtures are defined -using \hmmt{m} macros called -{\sf macro1}, {\sf macro2}, {\sf macro3}, etc. - -Discrete probability HMMs are defined in a similar way -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> discpdf = \> $<$DProb$>$ weightList -\end{tabbing} -} -\noindent -The only difference is that the weights in the \textsf{weightList} -are scaled log probabilities as defined in section~\ref{s:dischmm}. - -The definition of a Gaussian pdf requires the mean vector to -be given and one of the possible forms of covariance -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> mixpdf = \> $\sim$m macro $|$ mean cov [ $<$GConst$>$ float ] \\ -\> mean = \> $\sim$u macro $|$ $<$Mean$>$ short vector \\ -\> cov = \> var $|$ inv $|$ xform \\ -\> var = \> $\sim$v macro $|$ $<$Variance$>$ short vector \\ -\> inv = \> $\sim$i macro $|$ \\ -\> \> ($<$InvCovar$>$ $|$ $<$LLTCovar$>$) short tmatrix \\ -\> xform = \> $\sim$x macro $|$ $<$Xform$>$ short short matrix \\ -\> matrix = \> float \{float\} \\ -\> tmatrix = \> matrix \\ -\end{tabbing} -} -\noindent -In {\sf mean} and {\sf var}, the {\sf short} preceding the {\sf vector} -defines the length of the vector, in {\sf inv} the {\sf short} preceding the {\sf -tmatrix} gives the size of this square upper triangular matrix, and in {\sf xform} the -two {\sf short}'s preceding the {\sf matrix} give the number of rows and -columns. -The optional {\sf $<$GConst$>$}\footnote{specifically, in equation -~\ref{e:gnorm} -the GCONST value seen in HMM sets is calculated by multiplying the determinant -of the covariance matrix by $\bm{(2 \pi)^n}$} \index{GCONST value} gives -that part of the log -probability of a Gaussian that can be precomputed. If it is omitted, then -it will be computed during load-in, including it simply saves some time. -\HTK\ tools which output HMM definitions always include this field. - -In addition to defining the output distributions, a state can have a -duration probability distribution defined for it. However, no current HTK -tool can estimate or use these. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> duration = \> $\sim$d macro $|$ $<$Duration$>$ short vector -\end{tabbing} -} -\noindent -Alternatively, as shown by the top level syntax for a {\sf hmmdef}, -duration parameters can be specified for a whole model. - -The transition matrix is defined by -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> transP = \> $\sim$t macro $|$ $<$TransP$>$ short matrix -\end{tabbing} -} -\noindent -where the {\sf short} in this case should be equal to the number of -states in the model. - -To support HMM adaptation (as described in -chapter~\ref{c:Adapt}) baseclasses and regression class trees are -defined. A baseclass is defined as {\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> baseClass = \> $\sim$b macro baseopts classes\\ -\> baseopts = \> $<$MMFIdMask$>$ string $<$Parameters$>$ baseKind $<$NumClasses$>$ int\\ -\> baseKind = \>MIXBASE $|$ MEANBASE $|$ COVBASE \\ -\> classes = \> $<$Class$>$ int itemlist \{ classes \} \\ -\end{tabbing} -} -\noindent -where itemlist is a list of mixture components specified using -the same conventions as the \htool{HHEd} command -described in section~\ref{s:parmtying}. A regression class tree may -also exist for an HMM set. This is defined by {\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> regTree = \> $\sim$r macro $<$BaseClass$>$ baseclasses node \\ -\> baseclasses = \> $\sim$b macro $|$ baseopts classes \\ -\> node = \> ($<$Node$>$ int int int \{ int \} $|$ $<$TNode$>$ int int -int \{ int \}) \{ node \} -\end{tabbing} -} -\noindent -For the definition of a node ($<$Node$>$) in {\sf node} the first integer is the -node number, the second the number of children followed the of children -node numbers\footnote{Though the notation support n-ary trees, the regression -class tree code can only generate binary regression class trees.}. The -integers in the definition of a terminal node ($<$TNode$>$) define the node number, -number of base classes associated with the terminal and the base class-index numbers. - -Adaptation transforms are defined using -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> adaptXForm = \> $\sim$a macro adaptOpts $<$XformSet$>$ xformset \\ -\> adaptOpts = \> $<$AdaptKind$>$ adaptkind $<$BaseClass$>$ baseclasses [$<$ParentXForm$>$ parentxform] \\ -\> parentxform = \> $\sim$a macro $|$ adaptOpts $<$XformSet$>$ xformset\\ -\> adaptKind = \> TREE $|$ BASE\\ -\> xformset = \> $<$XFormKind$>$ xformKind $<$NumXForms$>$ int \{ linxform \}\\ -\> xformKind = \> MLLRMEAN $|$ MLLRCOV $|$ MLLRVAR $|$ CMLLR $|$ SEMIT\\ -\> linxform = \> $<$LinXForm$>$ int $<$VecSize$>$ int [$<$OFFSET$>$ xformbias] \\ -\> \> $<$BlockInfo$>$ -int int \{int\} block \{block\}\\ -\> xformbias = \> $\sim$y macro $|$ $<$Bias$>$ short vector \\ -\> block = \> $<$Block$>$ int xform\\ -\end{tabbing} -} -\noindent -In the definition of the $<$BlockInfo$>$ the first integer is the number of blocks, -followed the size of each of the clocks. For examples of the adaptation transform -format see section~\ref{s:tmfs}. - -Finally the input transform is defined by -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> inputXform = \> $\sim$j macro $|$ inhead inmatrix\\ -\> inhead = \> $<$MMFIdMask$>$ string parmkind [$<$PreQual$>$]\\ -\> inmatrix = \> $<$LinXform$>$ $<$VecSize$>$ int $<$BlockInfo$>$ -int int \{int\} block \{block\}\\ -\> block = \> $<$Block$>$ int xform -\end{tabbing} -} -\noindent -where the {\sf short} following \hmkw{VecSize} is the number of dimensions -after applyingthe linear transform and must match the vector size -of the HMM definition. The first {\sf short} after \hmkw{BlockInfo} -is the number of block, this is followed by the number of output -dimensions from each of the blocks. - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/netdict.tex b/HTKBook/netdict.tex deleted file mode 100644 index b3054ea..0000000 --- a/HTKBook/netdict.tex +++ /dev/null @@ -1,1131 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\mychap{Networks, Dictionaries and Language Models}{netdict} - -\sidepic{Tool.netdict}{80}{ -The preceding chapters have described how to process speech -data and how to train various types of HMM. -This and the following chapter are concerned with building -a speech recogniser using \HTK. This chapter focuses on -the use of networks\index{networks} and dictionaries\index{dictionaries}. -A network describes the -sequence of words that can be recognised and, for the case of sub-word -systems, a dictionary describes the sequence of HMMs that constitute -each word. -A word level network will typically represent either -a \textit{Task Grammar} which defines all of the legal word -sequences explicitly -or a \textit{Word Loop} which simply puts all words of the vocabulary -in a loop and therefore allows any word to follow any other word. -Word-loop networks are often augmented by a stochastic language model. -Networks can also be used -to define phone recognisers and various types of word-spotting systems. -} - -Networks are specified using the \HTK\ \textit{Standard Lattice Format} (SLF) -which is described in detail in Chapter~\ref{c:htkslf}. -This is a general purpose text format which is used for representing -multiple hypotheses in a recogniser output as well as word networks. -Since SLF\index{SLF} format is text-based, it can be written directly using any text editor. -However, this can be rather tedious and \HTK\ provides -two tools which allow the application designer to use a higher-level -representation. Firstly, the tool \htool{HParse} allows networks -to be generated from a source text containing extended BNF format -grammar rules. This format was the only grammar definition -language provided in earlier versions of \HTK\ and hence -\htool{HParse} also provides backwards compatibility. -\index{standard lattice format} - -\htool{HParse} task grammars are very easy to write, but they -do not allow fine control -over the actual network used by the recogniser. -The tool \htool{HBuild} works directly at the SLF level to provide -this detailed control. Its main function is to -enable a large word network to be decomposed into -a set of small self-contained sub-networks using as input an extended -SLF format. This enhances the -design process and avoids the need for unnecessary repetition. - -\htool{HBuild} can also be used to perform a number -of special-purpose functions. Firstly, it can construct -word-loop and word-pair grammars automatically. Secondly, -it can incorporate a statistical bigram -language model into a network. These can be generated from label -transcriptions using \htool{HLStats}. However, -\HTK\ supports the standard ARPA MIT-LL text format for backed-off -N-gram language models, and hence, import from other sources is possible. - -Whichever tool is used to generate a word network, it is important -to ensure that the generated network represents the intended grammar. -It is also helpful to have some measure of the difficulty of the -recognition task. To assist with this, the tool \htool{HSGen} is -provided. This tool will generate example word sequences from -an SLF network using random sampling. It will also estimate the -perplexity of the network. - -When a word network is loaded into a recogniser, -a dictionary is consulted to convert each -word in the network into a sequence of phone HMMs. The dictionary can -have multiple pronunciations in which case several sequences may be joined -in parallel to make a word. Options exist in this process to automatically -convert the dictionary entries to context-dependent triphone -models, either within a word or cross-word. Pronouncing -dictionaries are a vital resource in building speech recognition -systems and, in practice, word pronunciations can be derived from -many different sources. The \HTK\ tool \htool{HDMan} enables a dictionary -to be constructed automatically from different sources. Each source -can be individually edited and translated and merged to form a -uniform \HTK\ format dictionary. - -The various facilities for describing a word network and expanding into a -HMM level network suitable for building a recogniser are implemented -by the \HTK\ library module \htool{HNet}. The facilities for loading -and manipulating dictionaries are implemented by the \HTK\ library module -\htool{HDict} and for loading -and manipulating language models are implemented by -\htool{HLM}. These facilities and those provided by -\htool{HParse}, \htool{HBuild}, \htool{HSGen}, -\htool{HLStats} and \htool{HDMan} are -the subject of this chapter. - -\mysect{How Networks are Used}{netuse} - -Before delving into the details of word networks\index{networks!in recognition} and dictionaries, it will -be helpful to understand their r\^{o}le in building a speech recogniser -using \HTK. Fig~\href{f:recsys} illustrates the overall recognition -process. A word network is defined using HTK Standard Lattice Format -(SLF). An SLF word network is just a text file and it can be written -directly with a text editor or a tool can be used to build it. \HTK\ provides -two such tools, \htool{HBuild} and -\htool{HParse}. These both take as input a textual description and -output an SLF file. -% Another way to generate SLF files is to use Entropic's \textit{grapHvite} package, which includes a -% graphical tool that allows the required networks to be constructed on -% the screen. -Whatever method is chosen, word network SLF generation -is done \textit{off-line} -and is part of the system build process. - -An SLF file contains a list of nodes representing words and a -list of arcs representing the transitions between words. The transitions -can have probabilities attached to them and these can be used to indicate -\textit{preferences} in a grammar network. They can also be used to -represent bigram probabilities in a back-off bigram network and -\htool{HBuild} can generate such a bigram network automatically. -In addition to an SLF file, a \HTK\ recogniser requires a -dictionary to supply pronunciations for each word in the network -and a set of acoustic HMM phone models. -Dictionaries are input via the \HTK\ interface module \htool{HDict}. - -The dictionary, HMM set and word network are input to the \HTK\ library -module \htool{HNet} whose function is to generate an equivalent network of -HMMs. Each word in the dictionary may have several pronunciations and in -this case there will be one branch in the network corresponding to each -alternative pronunciation. Each pronunciation may consist either of a list -of phones or a list of HMM names. In the former case, \htool{HNet} can -optionally expand the HMM network to use either word internal triphones or -cross-word triphones. -Once the HMM network has been constructed, it can be -input to the decoder module \htool{HRec} and used to recognise -speech input. Note that HMM network construction is performed \textit{on-line} -at recognition time as part of the initialisation process. - -\centrefig{recsys}{100}{Overview of the Recognition Process} - -For convenience, \HTK\ provides a recognition\index{recognition!overall process} tool called \htool{HVite} -to allow the functions provided by \htool{HNet} and \htool{HRec} -to be invoked from the command line. \htool{HVite} is particularly -useful for running experimental evaluations on test speech stored -in disk files and for basic testing using live audio input. -However, application developers -should note that \htool{HVite} is just a shell containing calls to -load the word network, dictionary and models; generate the recognition -network and then repeatedly recognise each input utterance. -For embedded applications, it may well be appropriate to -dispense with \htool{HVite} and call the functions in -\htool{HNet} and \htool{HRec} directly from the application. -The use of \htool{HVite} is explained in the next chapter. - -\mysect{Word Networks and Standard Lattice Format}{slfintro} - -\index{standard lattice format} -This section provides a basic introduction to the \HTK\ Standard Lattice -Format (SLF). SLF files are used for a variety of functions some of -which lie beyond the scope of the standard \HTK\ package. The -description here is limited to those features of SLF which are required -to describe word networks suitable for input to \htool{HNet}. The -following Chapter describes the further features of SLF used for -representing the output of a recogniser. For reference, a full -description of SLF is given in Chapter~\ref{c:htkslf}. - -\index{SLF!format} -A word network in SLF\index{SLF} consists of a list of nodes and a list of arcs. -The nodes represent words and the arcs represent the transition between -words\footnote{More precisely, nodes represent the ends of -words and arcs represent the transitions between word ends. -This distinction becomes important when describing -recognition output since acoustic scores are attached -to arcs not nodes. }. -Each node and arc definition is written on a single line and -consists of a number of fields. Each field specification consists of a -``name=value'' pair. Field names can be any length but all commonly used -field names consist of a single letter. By convention, field names -starting with a capital letter are mandatory whereas field names -starting with a lower-case letter are optional. Any line beginning with -a \texttt{\#} is a comment and is ignored. - -\centrefig{wdnet}{80}{A Simple Word Network} - -The following example should illustrate the basic format \index{SLF!word network} -of an SLF word network file. It corresponds to the network -illustrated in Fig~\href{f:wdnet} which represents all sequences -consisting of the words ``bit'' and ``but'' starting with the -word ``start'' and ending with the word ``end''. As will be -seen later, the start and end words will be mapped to a silence -model so this grammar allows speakers to -say ``bit but but bit bit ....etc''. -\begin{verbatim} - # Define size of network: N=num nodes and L=num arcs - N=4 L=8 - # List nodes: I=node-number, W=word - I=0 W=start - I=1 W=end - I=2 W=bit - I=3 W=but - # List arcs: J=arc-number, S=start-node, E=end-node - J=0 S=0 E=2 - J=1 S=0 E=3 - J=2 S=3 E=1 - J=3 S=2 E=1 - J=4 S=2 E=3 - J=5 S=3 E=3 - J=6 S=3 E=2 - J=7 S=2 E=2 -\end{verbatim} -Notice that the first line which defines the size of the network must be -given before any node or arc definitions. -A node is a \textit{network start node} if it has no predecessors, -and a node is \textit{network end node} if it has no successors. -There must be one and only one network start node and one network -end node. -In the above, node 0 is a network start node and node 1 is a -network end node. -The choice of the names ``start'' and ``end'' for these nodes -has no significance. - -\centrefig{wdnet1}{80}{A Word Network Using Null Nodes} - -A word network can have null nodes indicated by the special -predefined word name \texttt{!NULL}. Null nodes are useful for reducing -the number of arcs required. For example, the \textit{Bit-But} -network could be defined as follows\index{SLF!null nodes} -\begin{verbatim} - # Network using null nodes - N=6 L=7 - I=0 W=start - I=1 W=end - I=2 W=bit - I=3 W=but - I=4 W=!NULL - I=5 W=!NULL - J=0 S=0 E=4 - J=1 S=4 E=2 - J=2 S=4 E=3 - J=3 S=2 E=5 - J=4 S=3 E=5 - J=5 S=5 E=4 - J=6 S=5 E=1 -\end{verbatim} -In this case, there is no significant saving, however, if there -were many words in parallel, the total number of arcs would be -much reduced by using null nodes to form common start and end points for -the loop-back connections. - -By default, all arcs are equally likely. However, the optional -field \texttt{l=x} can be used to attach the log transition probability -\texttt{x} to an arc. For example, if the word ``but'' was twice -as likely as ``bit'', the arcs numbered 1 and 2 in the last example -could be changed to -\begin{verbatim} - J=1 S=4 E=2 l=-1.1 - J=2 S=4 E=3 l=-0.4 -\end{verbatim} -Here the probabilities have been normalised to sum to 1, however, -this is not necessary. The recogniser simply adds the scaled log probability -to the path score and hence it can be regarded as an additive -word transition penalty.\index{SLF!arc probabilities} - -\mysect{Building a Word Network with \htool{HParse}}{usehparse} - -Whilst the construction of a word level SLF network file by hand -is not difficult, it can be somewhat tedious. In earlier versions -of \HTK, a high level grammar notation based on extended -Backus-Naur\index{extended Backus-Naur Form} -Form (EBNF\index{EBNF}) was used to specify recognition grammars. This -\textit{HParse} -format was read-in directly by the recogniser and compiled into -a finite state recognition network at run-time. - -\inthisversion \textit{HParse} format is still supported but in the form of -an \textit{off-line} compilation into an SLF word network which can -subsequently be used to drive a recogniser. - -A HParse format\index{HParse format} grammar\index{grammar} consists of an -extended form of regular expression -enclosed within parentheses. Expressions are constructed -from sequences of words and the metacharacters -\begin{description} -\item[\texttt{|}] denotes alternatives -\item[\texttt{[ ]}] encloses options -\item[\texttt{\{ \}}] denotes zero or more repetitions -\item[\texttt{< >}] denotes one or more repetitions -\item[\texttt{<< >>}] denotes context-sensitive loop -\end{description} -The following examples will illustrate the use of all of these -except the last which is a special-purpose facility provided -for constructing context-sensitive loops as found in for example, -context-dependent phone loops and word-pair grammars. It is described -in the reference entry for \htool{HParse}\index{hparse@\htool{HParse}}. - -As a first example, suppose -that a simple isolated word single digit recogniser\index{digit recogniser} was required. -A suitable syntax would be -\begin{verbatim} - ( - one | two | three | four | five | - six | seven | eight | nine | zero - ) -\end{verbatim} -This would translate into the network shown in part (a) of -Fig.~\href{f:digitnets}. -If this HParse format syntax definition -was stored in a file called {\tt digitsyn}, -the equivalent SLF word network would be generated in the -file \texttt{digitnet} by typing -\begin{verbatim} - HParse digitsyn digitnet -\end{verbatim} - -The above digit syntax assumes that each input digit is -properly end-pointed. This -requirement can be removed by adding a silence model -before and after the digit -\begin{verbatim} - ( - sil (one | two | three | four | five | - six | seven | eight | nine | zero) sil - ) -\end{verbatim} -As shown by graph (b) in Fig.~\href{f:digitnets}, the allowable sequence of -models now consists of silence followed by a digit followed by silence. -If a sequence of digits needed to be recognised then angle brackets can -be used to indicate one or more repetitions, the HParse grammar -\begin{verbatim} - ( - sil < one | two | three | four | five | - six | seven | eight | nine | zero > sil - ) -\end{verbatim} -would accomplish this. -Part (c) of Fig.~\href{f:digitnets} -shows the network that would result in this case. - -\centrefig{digitnets}{120}{Example Digit Recognition Networks} - -HParse\index{HParse format!variables} grammars can define -variables to represent sub-expressions. -Variable names start with a dollar symbol and they are given values -by definitions of the form -\begin{verbatim} - $var = expression ; -\end{verbatim} -For example, the above connected digit grammar could be rewritten as -\begin{verbatim} - $digit = one | two | three | four | five | - six | seven | eight | nine | zero; - ( - sil < $digit > sil - ) -\end{verbatim} -Here \texttt{\$digit} is a variable whose value is the expression appearing -on the right hand side of the assignment. Whenever the name of a variable -appears within an expression, the corresponding expression is substituted. -Note however that variables must be defined before use, hence, recursion -is prohibited. - -As a final refinement of the digit grammar, the start and end silence -can be made optional by enclosing them within square brackets thus -\begin{verbatim} - $digit = one | two | three | four | five | - six | seven | eight | nine | zero; - ( - [sil] < $digit > [sil] - ) -\end{verbatim} -Part (d) of Fig.~\href{f:digitnets} -shows the network that would result in this last case. - -HParse format grammars are a convenient way of specifying -task grammars\index{task grammar} for interactive voice interfaces. As a final -example, the following defines a simple grammar for the control -of a telephone by voice. -\begin{verbatim} - $digit = one | two | three | four | five | - six | seven | eight | nine | zero; - $number = $digit { [pause] $digit}; - $scode = shortcode $digit $digit; - $telnum = $scode | $number; - $cmd = dial $telnum | - enter $scode for $number | - redial | cancel; - $noise = lipsmack | breath | background; - ( < $cmd | $noise > ) -\end{verbatim} -The dictionary entries for \texttt{pause}, \texttt{lipsmack}, -\texttt{breath} and \texttt{background} would reference HMMs trained -to model these types of noise and the corresponding output symbols -in the dictionary would be null. - -Finally, it should be noted that when the HParse -format\index{HParse format!in V1.5} was used in -earlier versions of \HTK, word grammars contained word pronunciations -embedded within them. This was done by using the reserved node names -\texttt{WD\_BEGIN} and \texttt{WD\_END} to delimit word boundaries. To -provide backwards compatibility, \htool{HParse} can process these old -format networks but when doing so it outputs a dictionary as well as a -word network. This compatibility mode\index{HParse format!compatibility mode} is defined fully in the -reference section, to use it the configuration variable -\texttt{V1COMPAT}\index{v1compat@\texttt{V1COMPAT}} must be set -true or the \texttt{-c} option set. - -Finally on the topic of word -networks\index{word networks!tee-models in}, it is important to note that -any network containing an unbroken loop of one or more tee-models -will generate an error. -For example, if \texttt{sp} is a single state tee-model used to -represent short pauses, then the following network would generate an -error\index{tee-models!in networks} -\begin{verbatim} - ( sil < sp | $digit > sil ) -\end{verbatim} -the intention here is to recognise a sequence of digits which may -optionally be separated by short pauses. However, the syntax allows -an endless sequence of \texttt{sp} models and hence, the recogniser could -traverse this sequence without ever consuming any input. The solution to -problems such as these is to rearrange the network. For example, the -above could be written as -\begin{verbatim} - ( sil < $digit sp > sil ) -\end{verbatim} -%$ - -\mysect{Bigram Language Models}{biglms} - -\index{language models!bigram} -Before continuing with the description of network generation -and, in particular, the use of \htool{HBuild}\index{hbuild@\htool{HBuild}}, the -use of bigram language models needs to be described. -Support for statistical language models in \HTK\ is provided -by the library module \htool{HLM}. Although the interface to -\htool{HLM}\index{hlm@\htool{HLM}} can support general N-grams\index{N-grams}, -the facilities for -constructing and using N-grams are limited to bigrams. - -A bigram language model can be built using \htool{HLStats}\index{hlstats@\htool{HLStats}} -invoked as follows where it is a assumed that all of the -label files used for -training are stored in an MLF called \texttt{labs} -\begin{verbatim} - HLStats -b bigfn -o wordlist labs -\end{verbatim} -All words used in the label files must be listed in the \texttt{wordlist}. -This command will read all of the transcriptions in \texttt{labs}, -build a table of -bigram counts in memory, and then output a back-off bigram\index{back-off bigrams} -to the file \texttt{bigfn}. The formulae used for this are -given in the reference entry for \htool{HLStats}. However, the -basic idea is encapsulated in the following formula -\[ - p(i,j) = \left\{ - \begin{array}{ll} - (N(i,j) - D )/N(i) & \mbox{if $N(i,j) > t$} \\ - b(i) p(j) & \mbox{otherwise} - \end{array} - \right. -\] -where $N(i,j)$ is the number of times word $j$ follows word $i$ and -$N(i)$ is the number of times that word $i$ appears. -Essentially, a small part of the available probability mass -is deducted from the higher bigram counts and distributed amongst -the infrequent bigrams. This process is called \textit{discounting}. -The default value for the discount constant $D$ is 0.5 but -this can be altered using the configuration variable -\texttt{DISCOUNT}\index{discount@\texttt{DISCOUNT}}. -When a bigram count falls below the threshold -$t$, the bigram is backed-off to the unigram probability suitably scaled -by a back-off weight in order to ensure that all bigram probabilities for a given -history sum to one. - -Backed-off bigrams\index{back-off bigrams!ARPA MIT-LL format} are -stored in a text file using the standard -ARPA MIT-LL format which as used in \HTK\ is as follows - -\begin{verbatim} - \data\ - ngram 1= - ngram 2= - - \1-grams: - P(!ENTER) !ENTER B(!ENTER) - P(W1) W1 B(W1) - P(W2) W2 B(W2) - ... - P(!EXIT) !EXIT B(!EXIT) - - \2-grams: - P(W1 | !ENTER) !ENTER W1 - P(W2 | !ENTER) !ENTER W2 - P(W1 | W1) W1 W1 - P(W2 | W1) W1 W2 - P(W1 | W2) W2 W1 - .... - P(!EXIT | W1) W1 !EXIT - P(!EXIT | W2) W2 !EXIT - \end\ -\end{verbatim} -where all probabilities are stored as base-10 logs. The default -start and end words, \texttt{!ENTER} and \texttt{!EXIT} can be changed -using the \htool{HLStats} \texttt{-s} option. - -For some applications, a simple matrix style of bigram representation -may be more appropriate. If the \texttt{-o} option is omitted in -the above invocation of \htool{HLStats}, then a simple full bigram -matrix will be output using the format -\begin{verbatim} - !ENTER 0 P(W1 | !ENTER) P(W2 | !ENTER) ..... - W1 0 P(W1 | W1) P(W2 | W1) ..... - W2 0 P(W1 | W2) P(W2 | W2) ..... - ... - !EXIT 0 PN PN ..... -\end{verbatim} -where the probability $P(w_j|w_i)$ is given by row $i,j$ of the matrix. -If there are a total of N words in the vocabulary then \texttt{PN} -in the above is set to $1/(N+1)$, this ensures that the last row -sums to one. As a very crude form of smoothing, a floor can be set -using the \texttt{-f minp} option to prevent any entry falling -below \texttt{minp}. Note, however, that this does not affect the -bigram entries in the first -column which are zero by definition. Finally, as with the storage -of tied-mixture and discrete probabilities, a run-length encoding -scheme is used whereby any value can be followed by an -asterisk and a repeat count (see section~\ref{s:tmix}). - -\mysect{Building a Word Network with \htool{HBuild}}{usehbuild} - -\sidefig{decinet}{62}{Decimal Syntax}{-2}{ -As mentioned in the introduction, the main function of \htool{HBuild} -is allow a word-level network to be constructed from -a main lattice and a set of sub-lattices\index{sub-lattices}. Any lattice -can contain node definitions which refer to other lattices. -This allows a word-level recognition network to be decomposed -into a number of sub-networks which can be reused at different -points in the network. -}\index{hbuild@\htool{HBuild}} - -For example, suppose that decimal number -input was required. A suitable network structure would be -as shown in Fig.~\href{f:decinet}. However, to write this directly -in an SLF file would require the digit loop to be written twice. -This can be avoided by defining the digit loop as a sub-network -and referencing it within the main \textit{decimal} network as -follows - -\begin{verbatim} - # Digit network - SUBLAT=digits - N=14 L=21 - # define digits - I=0 W=zero - I=1 W=one - I=2 W=two - ... - I=9 W=nine - # enter/exit & loop-back null nodes - I=10 W=!NULL - I=11 W=!NULL - I=12 W=!NULL - I=13 W=!NULL - # null->null->digits - J=0 S=10 E=11 - J=1 S=11 E=0 - J=2 S=11 E=1 - ... - J=10 S=11 E=9 - # digits->null->null - J=11 S=0 E=12 - ... - J=19 S=9 E=12 - J=20 S=12 E=13 - # finally add loop back - J=21 S=12 E=11 - . - - # Decimal netork - N=5 L=4 - # digits -> point -> digits - I=0 W=start - I=1 L=digits - I=2 W=pause - I=3 L=digits - I=4 W=end - # digits -> point -> digits - J=0 S=0 E=1 - J=1 S=1 E=2 - J=2 S=2 E=3 - J=3 S=3 E=4 -\end{verbatim} -The sub-network is identified by the field -\texttt{SUBLAT}\index{sublat@\texttt{SUBLAT}} in the header -and it is terminated by a single period on a line by itself. The -main body of the sub-network is written as normal. -Once defined, a sub-network can be substituted into a higher level -network using an \texttt{L} field in a node definition, as in nodes -1 and 3 of the decimal network above. - -Of course, this process can be continued and a higher level network -could reference the decimal network wherever it needed decimal -number entry. - -\centrefig{bobig}{100}{Back-off Bigram Word-Loop Network} - -One of the commonest form of recognition network is the -word-loop\index{word-loop network} -where all vocabulary items are placed in parallel with a loop-back -to allow any word sequence to be recognised. This is the basic -arrangement used in most dictation or transcription applications. -\htool{HBuild} can build such a loop automatically from a list -of words. It can also read in a bigram in either ARPA MIT-LL -format or HTK matrix format and attach a bigram probability to -each word transition. Note, however, that using a full bigram -language model means that every distinct pair of words must -have its own unique loop-back transition. This increases the size of -the network considerably and slows down the recogniser. -When a back-off bigram is used, however, backed-off transitions -can share a common loop-back transition. Fig.~\href{f:bobig} -illustrates this. When backed-off bigrams are input via an ARPA MIT-LL -format file, \htool{HBuild} will exploit this where possible. - -Finally, \htool{HBuild} can automatically construct a -word-pair grammar\index{word-pair grammar} as -used in the ARPA Naval Resource Management task. - - -\mysect{Testing a Word Network using \htool{HSGen}}{usehsgen} - -When designing task grammars, it is useful to be able to check -that the language defined by the final word network is as envisaged. -One simple way to check this is to use the network as a generator by -randomly traversing it and outputting the name of each word node -encountered. \HTK\ provides a very simple tool called -\htool{HSGen}\index{hsgen@\htool{HSGen}} -for doing this. - -As an example if the file \texttt{bnet} contained the simple Bit-But -netword described above and the file \texttt{bdic} contained a corresponding -dictionary then the command -\begin{verbatim} - HSGen bnet bdic -\end{verbatim} -would generate a random list of examples of the language -defined by \texttt{bnet}, for example, -\begin{verbatim} - start bit but bit bit bit end - start but bit but but end - start bit bit but but end - .... etc -\end{verbatim} -This is perhaps not too informative in this case but for more -complex grammars, this type of output can be quite illuminating. - -\htool{HSGen} will also estimate the empirical entropy -by recording -the probability of each sentence generated\index{sentence generation}. -To use this facility, it -is best to suppress the sentence output and generate a large number -of examples. For example, executing -\begin{verbatim} - HSGen -s -n 1000 -q bnet bdic -\end{verbatim} -where the \texttt{-s} option requests statistics, the \texttt{-q} option -suppresses the output and \texttt{-n 1000} asks for 1000 sentences -would generate the following output -\begin{verbatim} - Number of Nodes = 4 [0 null], Vocab Size = 4 - Entropy = 1.156462, Perplexity = 2.229102 - 1000 Sentences: average len = 5.1, min=3, max=19 -\end{verbatim} - -\mysect{Constructing a Dictionary}{usehdman} - -As explained in section~\ref{s:netuse}, the word level network is expanded by -\htool{HNet} to create the network of HMM instances needed by the recogniser. -The way in which each word is expanded is determined from a -dictionary\index{dictionary!construction}. - -A dictionary for use in \HTK\ has a very simple format.\index{dictionary!formats} -Each line consists of a single word pronunciation with format -\begin{verbatim} - WORD [ '['OUTSYM']' ] [PRONPROB] P1 P2 P3 P4 .... -\end{verbatim} -where \texttt{WORD} represents the word, followed by the optional -parameters \texttt{OUTSYM} and \texttt{PRONPROB}, where -\texttt{OUTSYM} is the symbol to output when that word is -recognised (which must be enclosed in square brackets, \verb|[| and -\verb|]|) and \texttt{PRONPROB} is the pronunciation probability -($0.0$ - $1.0$). \texttt{P1}, \texttt{P2}, \ldots is the sequence of -phones or HMMs to be used in recognising that word. The output symbol -and the pronunciation probability are optional. If an output symbol is -not specified, the name of the word itself is output. If a -pronunciation probability is not specified then a default of 1.0 is -assumed. Empty square brackets, -\texttt{[]}, can be used to suppress any output when that word is recognised. -For example, a dictionary might contain -\begin{verbatim} - bit b ih t - but b ah t - dog [woof] d ao g - cat [meow] k ae t - start [] sil - end [] sil -\end{verbatim} - -\noindent -If any word has more than one pronunciation, then the word -has a repeated entry, for example, -\begin{verbatim} - the th iy - the th ax -\end{verbatim} -corresponding to the stressed and unstressed forms of the word -``the''.\index{dictionary!output symbols} - -The pronunciations in a dictionary are normally at the phone -level as in the above examples. However, if context-dependent -models are wanted, these can be included directly in the dictionary. -For example, the Bit-But entries might be written as -\begin{verbatim} - bit b+ih b-ih+t ih-t - but b+ah b-ah+t ah-t -\end{verbatim} -In principle, this is never necessary since \htool{HNet} can perform context -expansion automatically, however, it saves computation to do this -off-line as part of the dictionary construction process. Of course, -this is only possible for word-internal context dependencies. -Cross-word dependencies can only be generated by \htool{HNet}. - -\centrefig{dmaker}{110}{Dictionary Construction using \htool{HDMan}} - -Pronouncing dictionaries are a valuable resource and if produced -manually, they can require considerable investment. There are -a number of commercial and public domain dictionaries available, -however, these will typically have differing formats and will -use different phone sets. To assist in the process of -dictionary construction, \HTK\ provides a tool called \htool{HDMan} -which can be used to edit and merge differing source dictionaries -to form a single uniform dictionary. The way that -\htool{HDMan}\index{hdman@\htool{HDMan}} works is illustrated in Fig.~\href{f:dmaker}. - -Each source dictionary file must have one pronunciation per line and the -words must be sorted into alphabetical order. The word entries must be -valid \HTK\ strings as defined in section~\ref{s:htkstrings}. If an -arbitrary character sequence is to be allowed, then the input edit -script should have the command \texttt{IM RAW} as its first command. - -The basic operation of -\htool{HDMan} is to scan the input streams and for each new word -encountered, copy the entry to the output. In the figure, a word list -is also shown. This is optional but if included -\htool{HDMan} only copies words in the list. Normally, \htool{HDMan} -copies just the first pronunciation that it finds for any word. Thus, -the source dictionaries are usually arranged in order of -\textit{reliability}, possibly preceded by a small dictionary of special -word pronunciations. For example, in Fig.~\href{f:dmaker}, the main -dictionary might be \texttt{Src2}. \texttt{Src1} might be a small -dictionary containing correct pronunciations for words in \texttt{Src2} -known to have errors in them. Finally, \texttt{Src3} might be a large -poor quality dictionary (for example, it could be generated -by a rule-based text-to-phone system) which is included as a last resort -source of pronunciations for words not in the main dictionary. - -As shown in the figure, \htool{HDMan} can apply a set of editing -commands to each source dictionary and it can also edit the -output stream. The commands available are described in full in -the reference section. They operate in a similar way to -those in \htool{HLEd}. Each set of commands is written in -an edit script with one command per line. Each input edit script -has the same name as the corresponding source dictionary but with -the extension \texttt{.ded} added. The output edit script is stored -in a file called \texttt{global.ded}\index{global@\texttt{global.ded}}. -The commands provided -include replace and delete at the word and phone level, context-sensitive -replace and automatic conversions to left biphones, right biphones -and word internal triphones.\index{dictionary!edit commands} - -When \htool{HDMan} loads a dictionary it adds word boundary symbols to -the start and end of each pronunciation and then deletes them when -writing out the new dictionary. The default for these word boundary -symbols is \texttt{\#} but it can be redefined using the \texttt{-b} -option. The reason for this is to allow context-dependent edit commands -to take account of word-initial and word-final phone positions. -The examples below will illustrate this. - -Rather than go through each \htool{HDMan} edit command in detail, some examples -will illustrate the typical manipulations that can be performed -by \htool{HDMan}. Firstly, suppose that a dictionary transcribed -unstressed ``-ed'' endings as \texttt{ih0 d} -but the required dictionary -does not mark stress but uses a schwa in such cases, that is, -the transformations\index{mp@\texttt{MP} command}\index{sp@\texttt{SP} command} -\begin{verbatim} - ih0 d # -> ax d - ih0 -> ih (otherwise) -\end{verbatim} -are required. -These could be achieved by the following 3 commands -\begin{verbatim} - MP axd0 ih0 d # - SP axd0 ax d # - RP ih ih0 -\end{verbatim} -The context sensitive replace is achieved by merging all sequences -of \texttt{ih0 d \#} and then splitting the result into the sequence -\texttt{ax d \#}. The final \texttt{RP} command\index{rp@\texttt{RP} command} then unconditionally -replaces all occurrences of \texttt{ih0} by \texttt{ih}. -As a second similar example, suppose that all examples of \texttt{ax l} -(as in ``bottle'') are to be replaced by the single phone \texttt{el} -provided that the immediately following phone is a non-vowel. -This requires the use of the \texttt{DC} command\index{dc@\texttt{DC} command} to define a -context consisting of all non-vowels, then a merge using \texttt{MP} -as above followed by a context-sensitive replace -\begin{verbatim} - DC nonv l r w y .... m n ng # - MP axl ax l - CR el * axl nonv - SP axl ax l -\end{verbatim} -the final step converts all non-transformed cases of \texttt{ax l} -back to their original form. - -As a final example, a typical output transformation applied via -the edit script \texttt{global.ded} will convert all phones to -context-dependent form and append a short pause model \texttt{sp} -at the end of each pronunciation. The following two commands will -do this -\begin{verbatim} - TC - AS sp -\end{verbatim} -For example, these commands would convert the dictionary entry -\begin{verbatim} - BAT b ah t -\end{verbatim} -into -\begin{verbatim} - BAT b+ah b-ah+t ah-t sp -\end{verbatim} - -Finally, if the \texttt{-l} option is set, -\htool{HDMan} will generate a log file containing -a summary of the pronunciations used from each source and -how many words, if any are missing. It is also possible to -give \htool{HDMan} a phone list using the \texttt{-n} option. -In this case, \htool{HDMan} will record how many times each phone -was used and also, any phones that appeared in pronunciations but -are not in the phone list. This is useful for detecting errors and -unexpected phone symbols in the source dictionary. - -\mysect{Word Network Expansion}{netexpand} - -\index{word network@expansion rules} -Now that word networks and dictionaries have been explained, -the conversion of word level networks -to model-based recognition networks will be described. Referring -again to Fig~\href{f:recsys}, this expansion -is performed automatically by the module \htool{HNet}. By default, -\htool{HNet} attempts to infer the required expansion from the -contents of the dictionary and the associated list of HMMs. -However, 5 configurations parameters are supplied to apply -more precise control where required: -\texttt{ALLOWCXTEXP}\index{allowcxtexp@\texttt{ALLOWCXTEXP}}, -\texttt{ALLOWXWRDEXP}\index{allowxwrdexp@\texttt{ALLOWXWRDEXP}}, -\texttt{FORCECXTEXP}\index{forcecxtexp@\texttt{FORCECXTEXP}}, -\texttt{FORCELEFTBI}\index{forceleftbi@\texttt{FORCELEFTBI}} and -\texttt{FORCERIGHTBI}\index{forcerightbi@\texttt{FORCERIGHTBI}}. - -The expansion proceeds in four stages. -\begin{enumerate} -\item \textit{Context definition} \\ -The first step is to determine how model -names are constructed from the dictionary entries and whether -cross-word context expansion should be performed. -The dictionary is scanned and each distinct phone is -classified as either -\begin{enumerate} -\item \textit{Context Free} \\ - In this case, the phone is skipped when determining context. - An example is a model (\texttt{sp}) for short pauses. - This will typically be inserted at the end of every word - pronunciation but since it tends to cover a very short - segment of speech it should not block context-dependent - effects in a cross-word triphone system. -\item \textit{Context Independent} \\ - The phone only exists in context-independent form. A typical - example would be a silence model (\texttt{sil}). - Note that the distinction that would be made by \htool{HNet} between - \texttt{sil} and \texttt{sp} is that whilst both would - only appear in the HMM set - in context-independent form, \texttt{sil} would appear in the contexts - of other phones whereas \texttt{sp} would not. -\item \textit{Context Dependent} \\ - This classification depends on whether a phone appears in the context - part of the name and whether - any context dependent versions of the phone exist in the HMMSet. - Context Dependent phones will be subject to model name expansion. -\end{enumerate} - -\item \textit{Determination of network type} \\ -The default behaviour is to produce the simplest network -possible. If the dictionary is closed (every phone name appears -in the HMM list), then no expansion of phone names is performed. -The resulting network is generated by straightforward -substitution of each dictionary pronunciation for each -word in the word network. If the dictionary is not closed, -then if word internal context expansion -would find each model in the HMM set then word internal -context expansion is used. -Otherwise, full cross-word -context expansion is applied. - -The determination of the network type\index{network type} can be modified by -using the configuration parameters mentioned earlier. By default -\texttt{ALLOWCXTEXP} is set true. If \texttt{ALLOWCXTEXP} is set false, then -no expansion of phone names is performed and each phone corresponds to the -model of the same name. The default value of \texttt{ALLOWXWRDEXP} is false thus -preventing context expansion across word boundaries. This also limits the -expansion of the phone labels in the dictionary to word internal contexts -only. If \texttt{FORCECXTEXP} is set true, then context expansion will be -performed. For example, if the HMM set contained all monophones, all biphones -and all triphones, then given a monophone dictionary, the default behaviour of -\htool{HNet} would be to generate a monophone recognition network since the -dictionary would be closed. However, if \texttt{FORCECXTEXP} is set true and -\texttt{ALLOWXWRDEXP} is set false then word internal context expansion will -be performed. If \texttt{FORCECXTEXP} is set true and \texttt{ALLOWXWRDEXP} is -set true then full cross-word context expansion will be performed. - -\item \textit{Network expansion} \\ -Each word in the word network is transformed into a \textit{word-end} -node preceded by the sequence of model nodes corresponding to -the word's pronunciation. -For cross word context expansion, the initial and final context -dependent phones (and any preceding/following context independent -ones) are duplicated as many times as is necessary -to cater for each different cross -word context. Each duplicated word-final phone is followed by -a similarly duplicated word-end node. -Null words are simply transformed into word-end nodes with -no preceding model nodes. - -\item \textit{Linking of models to network nodes} \\ -Each model node is linked to the corresponding HMM definition. -In each case, the required HMM model name is -determined from the phone name and the surrounding -context names. The algorithm used for this is -\begin{enumerate} -\item Construct the context-dependent name and see if the - corresponding model exists. -\item Construct the context-independent name and see if the - corresponding model exists. -\end{enumerate} -If the configuration variable \texttt{ALLOWCXTEXP} is false (a) -is skipped and if the configuration variable \texttt{FORCECXTEXP} is true -(b) is skipped. If no matching model is found, an error is -generated. When the right context -is a boundary or \texttt{FORCELEFTBI} is true, then the -context-dependent name takes the form of a left biphone, that is, -the phone \texttt{p} with left context \texttt{l} becomes \texttt{l-p}. -When the left context -is a boundary or \texttt{FORCERIGHTBI} is true, then the -context-dependent name takes the form of a right biphone, that is, -the phone \texttt{p} with right context \texttt{r} becomes \texttt{p+r}. -Otherwise, the context-dependent name is a full triphone, that is, -\texttt{l-p+r}. -Context-free phones are skipped in this process so -\begin{verbatim} - sil aa r sp y uw sp sil -\end{verbatim} -would be expanded as -\begin{verbatim} - sil sil-aa+r aa-r+y sp r-y+uw y-uw+sil sp sil -\end{verbatim} -assuming that \texttt{sil} is context-independent and \texttt{sp} is -context-free. -\index{cfwordboundary@\texttt{CFWORDBOUNDARY}} For word-internal systems, -the context expansion can be further controlled via the configuration variable -\texttt{CFWORDBOUNDARY}. When set true (default setting) context-free phones -will be treated as word boundaries so -\begin{verbatim} - aa r sp y uw sp -\end{verbatim} -would be expanded to -\begin{verbatim} - aa+r aa-r sp y+uw y-uw sp -\end{verbatim} -Setting \texttt{CFWORDBOUNDARY} false would produce -\begin{verbatim} - aa+r aa-r+y sp r-y+uw y-uw sp -\end{verbatim} - -\end{enumerate} -Note that in practice, stages (3) and (4) above actually proceed concurrently -so that for the first and last phone of context-dependent models, logical -models which have the same underlying physical model can be merged. - -\centrefig{mononet}{100}{Monophone Expansion of Bit-But Network} - -Having described the expansion process in some detail, some simple -examples will help clarify the process. All of these are based -on the Bit-But word network illustrated in Fig.~\href{f:wdnet}. -Firstly, assume that the dictionary contains simple monophone -pronunciations, that is -\begin{verbatim} - bit b i t - but b u t - start sil - end sil -\end{verbatim} -and the HMM set consists of just monophones -\begin{verbatim} - b i t u sil -\end{verbatim} -In this case, \htool{HNet} will find a closed dictionary. There will -be no expansion and it will directly generate the network -shown in Fig~\href{f:mononet}. In this figure, the rounded boxes -represent model nodes and the square boxes represent word-end nodes. - -Similarly, if the dictionary -contained word-internal triphone pronunciations such as -\begin{verbatim} - bit b+i b-i+t i-t - but b+u b-u+t u-t - start sil - end sil -\end{verbatim} -and the HMM set contains all the required models -\begin{verbatim} - b+i b-i+t i-t b+u b-u+t u-t sil -\end{verbatim} -then again \htool{HNet} will find a closed dictionary -and the network shown in Fig.~\href{f:wintnet} would be generated. - -\centrefig{wintnet}{100}{Word Internal Triphone Expansion of Bit-But Network} - -If however the dictionary contained just the simple monophone pronunciations -as in the first case above, but the HMM set contained just triphones, -that is -\begin{verbatim} - sil-b+i t-b+i b-i+t i-t+sil i-t+b - sil-b+u t-b+u b-u+t u-t+sil u-t+b sil -\end{verbatim} -then \htool{HNet} would perform full cross-word expansion and -generate the network shown in Fig.~\href{f:xwrdnet}. - -\centrefig{xwrdnet}{100}{Cross-Word Triphone Expansion of Bit-But Network} - -Now suppose that still using the simple monophone pronunciations, -the HMM set contained all monophones, biphones and triphones. In this -case, the default would be to generate the monophone network of -Fig~\href{f:mononet}. If \texttt{FORCECXTEXP} is true but -\texttt{ALLOWXWRDEXP} is set false then the word-internal -network\index{word-internal network expansion} -of Fig.~\href{f:wintnet} would be generated. Finally, if both -\texttt{FORCECXTEXP} and -\texttt{ALLOWXWRDEXP} are set true then the cross-word network -\index{cross-word network expansion} -of Fig.~\href{f:xwrdnet} would be generated. - -\mysect{Other Kinds of Recognition System}{othernets} - -Although the recognition facilities of \HTK\ are aimed primarily -at sub-word based connected word recognition, it can nevertheless -support a variety of other types of recognition system. - -To build a phoneme recogniser, a word-level network is defined using -an SLF file in the usual -way except that each ``word'' in the network represents a single phone. -The structure of the network will typically be a loop in which all -phones loop back to each other.\index{phone recognition} - -The dictionary then contains an entry for each ``word'' such that the word and -the pronunciation are the same, for example, the dictionary might contain -\begin{verbatim} - ih ih - eh eh - ah ah - ... etc -\end{verbatim} - -Phoneme recognisers often use biphones to provide some measure of -context-dependency. Provided that the HMM set contains all the necessary -biphones, then \htool{HNet} will expand a simple phone loop into a context-sensitive -biphone loop simply by setting the configuration variable -\texttt{FORCELEFTBI} or \texttt{FORCERIGHTBI} to true, as appropriate. - -Whole word recognisers can be set-up in a similar way. The word network -is designed using the same considerations as for a sub-word based system -but the dictionary gives the name of the whole-word HMM in place of each -word pronunciation.\index{whole word recognition} - -Finally, word spotting\index{word spotting} systems can be defined by placing each keyword -in a word network in parallel with the appropriate filler models. -The keywords can be whole-word models or subword based. Note in this -case that word transition penalties placed on the transitions can be -used to gain fine control over the false alarm rate. - - -%%% Local Variables: -%%% mode: plain-tex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/openviron.tex b/HTKBook/openviron.tex deleted file mode 100644 index 2114fe7..0000000 --- a/HTKBook/openviron.tex +++ /dev/null @@ -1,764 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{The Operating Environment}{openviron} - -\sidepic{Tool.shell}{80}{ -This chapter discusses the various ways of controlling the operation of -\HTK\ tools along with related aspects of file system organisation, error -reporting and memory management. All of the operating -system\index{operating system} and user -interface functions are provided by the \HTK\ -module \htool{HShell}. -Memory management is a low level function which is largely invisible to -the user, but it is useful to have a basic understanding of it in order to -appreciate memory requirements and interpret diagnostic output from -tools. Low level memory management in \HTK\ is provided by -\htool{HMem} and the management of -higher level structures such as vectors -and matrices is provided by \htool{HMath}. -} -\index{hshell@\htool{HShell}} -\index{hmath@\htool{HMath}} -\index{hmem@\htool{HMem}} - -The behaviour of a \HTK\ tool depends on three sources of information. -Firstly, -all \HTK\ tools are executed by issuing commands to the operating -system shell. -Each command typically contains the names of the various files that the -tool needs to function and a number of optional arguments which -control the detailed behaviour of the tool. -Secondly, -as noted in chapter~\ref{c:htkoview} and shown in the adjacent figure, every \HTK\ tool uses a set -of standard library modules to interface to the various file types and -to connect with the outside world. Many of these modules can be -customised by setting parameters in a {\it configuration file}. -Thirdly, a small number of parameters are specified using -environment variables. - -Terminal output mostly depends on the specific tool -being used, however, there -are some generic output functions which are provided by the library -modules and which are therefore common across tools. These include -version reporting, memory usage and error reporting. - -Finally, \HTK\ can read and write most data sources through pipes\index{pipes} as an alternative -to direct input and output from data files. This allows -filters to be used, and in particular, it allows many of the external -files used by \HTK\ to be stored directly in compressed form and then decompressed -\textit{on-the-fly} when the data is read back in. - -All of the above is discussed in more detail in the following sections. - -\mysect{The Command Line}{cmdline} - -The general form of command line for invoking a tool -is\footnote{All of the examples in this book assume the -UNIX Operating System and the C Shell but the principles apply to -any OS which supports hierarchical files and command line arguments} -\index{command line!arguments}\index{command line!options} -\begin{verbatim} - tool [options] files ... -\end{verbatim} -Options always consist of a dash followed by a single letter. Some options -are followed by an argument as follows -\begin{tabbing} -+++++ \= ++++++++++++ \= \kill -\> \texttt{-i} \> - a switch option \\ -\> \texttt{-t 3} \> - an integer valued option \\ -\> \texttt{-a 0.01} \> - a float valued option \\ -\> \texttt{-s hello} \> - a string valued option -\end{tabbing} -Option names consisting of a capital letter are common across all tools -(see section~\ref{s:stdopts}). -Integer arguments\index{command line!integer argument formats} may be given -in any of the standard C formats, for example, -\texttt{13}, \texttt{0xD} and \texttt{015} all represent the same number. -Typing the name of a tool on its own always causes a short summary of -the command line options to be printed in place of its normal -operation. For example, typing -\begin{verbatim} - HERest -\end{verbatim} -would result in the following output -\begin{verbatim} - USAGE: HERest [options] hmmList dataFiles... - - Option Default - - -c f Mixture pruning threshold 10.0 - -d s dir to find hmm definitions current - -m N set min examples needed per model 3 - -o s extension for new hmm files as src - -p N set parallel mode to N off - ... -\end{verbatim} -The first line shows the names of the required files and the rest -consists of a listing of each option, its meaning, and its default -value. - -The precise naming convention for specifying files depends on the operating -system being used, but \HTK\ always assumes the existence of a hierarchical -file system and it maintains a distinction between directory paths -and file names. - -In general, a file will be located either in -the current directory, some subdirectory of the current directory or some -subdirectory of the root directory. For example, in the command -\begin{verbatim} - HList s1 dir/s2 /users/sjy/speech/s3 -\end{verbatim} -file \texttt{s1} must be in the current directory, \texttt{s2} must be in the -directory \texttt{dir} within the current directory and \texttt{s3} must be in the -directory \texttt{/users/sjy/speech}. - -Some tools allow directories to be specified via configuration -parameters and command line options. In all cases, the final path -character (eg / in UNIX) need not (but may be) -included. For example, both of the following are acceptable and have -equivalent effect -\begin{verbatim} - HInit -L mymodels/new/ hmmfile data* - HInit -L mymodels/new hmmfile data* -\end{verbatim} -where the \texttt{-L} option specifies the directory in which to find the -label files associated with the data files. - -\mysect{Script Files}{script} - -Tools which require a potentially very long list of files (e.g.\ training -tools) always allow the files to be specified in a script\index{files!script} -file\index{script files} via the \texttt{-S} option instead of via the command -line. -\index{standard options!aaas@\texttt{-S}}This is particularly useful when running -under an OS with limited file name expansion capability. Thus, for example, -\htool{HInit}\index{hinit@\htool{HInit}} may be invoked by either -\begin{verbatim} - HInit hmmfile s1 s2 s3 s4 s5 .... -\end{verbatim} -or -\begin{verbatim} - HInit -S filelist hmmfile -\end{verbatim} -where \texttt{filelist} holds the list of files \texttt{s1}, \texttt{s2}, etc. -Each file listed in a script should be separated by white space or a new line. -Usually, files are listed on separate lines, however, when using -\htool{HCopy}\index{hcopy@\htool{HCopy}} which read pairs of files as its -arguments, it is normal to write each pair on a single line. Script files -should only be used for storing ellipsed\index{command line!ellipsed arguments} -file list arguments. Note that shell meta-characters should not be -used in script files and will not be interpreted by the \HTK\ tools. - -Starting with \HTK\ 3.1 the syntax of script files has been extended. -In addition to directly specifying the name of a physical file it is -possible to define aliases and to select a segment from a file. The -general syntax of an extended filename \index{extended filenames} is -\begin{verbatim} - logfile=physfile[s,e] -\end{verbatim} -where \texttt{logfile} is the logical filename used by the HTK tools -and will appear in mlf files and similar. \texttt{physfile} is the -physical name of the actual file on disk that will be accessed and -\texttt{s} and \texttt{e} are indices that can be used to select only -a segment of the file. One example of a use of this feature is the -evaluation of different segmentations of the audio data. A new -segmentation can be used by creating a new script file without having -to create multiple copies of the data. - -A typical script file might look like: -\begin{verbatim} -s23-0001-A_000143_000291.plp=/data/plp/complete/s23-0001-A.plp[143,291] -s23-0001-A_000291_000500.plp=/data/plp/complete/s23-0001-A.plp[291,500] -s23-0001-A_000500_000889.plp=/data/plp/complete/s23-0001-A.plp[500,889] -\end{verbatim} - - -\mysect{Configuration Files}{config} - -Configuration files\index{configuration files|(}\index{files!configuration} -are used for customising the \HTK\ working environment. -They consist of a list of parameter-values pairs along with an optional -prefix which limits the scope of the parameter to a specific module -or tool. - -The name of a configuration file can be specified explicitly on the -command line using the \texttt{-C}\index{standard -options!aaac@\texttt{-C}} command. For example, when executing -\begin{verbatim} - HERest ... -C myconfig s1 s2 s3 s4 ... -\end{verbatim} -The operation of \htool{HERest} will depend on the parameter settings -in the file \texttt{myconfig}. - -When an explicit configuration file is specified, only those parameters mentioned -in that file are actually changed and all other parameters retain their -default values. These defaults are built-in. However, user-defined defaults -can be set by assigning the name of a default configuration file to -the environment variable \texttt{HCONFIG}\index{HCONFIG@\texttt{HCONFIG}}. -\index{configuration files!default} -Thus, for example, using the UNIX C Shell, writing -\begin{verbatim} - setenv HCONFIG myconfig - HERest ... s1 s2 s3 s4 ... -\end{verbatim} -would have an identical effect to the preceding example. However, in this -case, a further refinement of the configuration values is possible since -the opportunity to specify an explicit configuration file on the command -line remains. For example, in -\begin{verbatim} - setenv HCONFIG myconfig - HERest ... -C xconfig s1 s2 s3 s4 ... -\end{verbatim} - -\sidefig{Config}{60}{Defining a Configuration}{2} -\noindent -the parameter values in \texttt{xconfig} will over-ride those in -\texttt{myconfig} which in turn will over-ride the built-in defaults. -In practice, most \HTK\ users will set general-purpose -default configuration values using \texttt{HCONFIG} and will then over-ride -these as required for specific tasks using the \texttt{-C} command line option. -This is illustrated in Fig.~\href{f:Config} where the darkened rectangles -indicate \textit{active} parameter definitions. -Viewed from above, -all of the remaining parameter definitions can be seen to be masked by -higher level over-rides. - -The configuration file itself consists of a sequence of parameter -definitions of the form\index{configuration files!format} -\begin{verbatim} - [MODULE:] PARAMETER = VALUE -\end{verbatim} -One parameter definition is written per line and square brackets -indicate that the module name is -optional. Parameter definitions are not case sensitive -but by convention they are written in upper case. A \verb+#+ character -indicates that the rest of the line is a comment. - -As an example, the following is a simple configuration file -\begin{verbatim} - # Example config file - TARGETKIND = MFCC - NUMCHANS = 20 - WINDOWSIZE = 250000.0 # ie 25 msecs - PREEMCOEF = 0.97 - ENORMALISE = T - HSHELL: TRACE = 02 # octal - HPARM: TRACE = 0101 -\end{verbatim} -The first five lines contain no module name and hence they apply -globally, that is, any library module or tool which is interested -in the configuration parameter \texttt{NUMCHANS} will read the given -parameter value. In practice, this is not a problem with library modules -since nearly all configuration parameters have unique -names. The final two lines show the same parameter name being given -different values within different modules. This is an example of -a parameter which every module responds to and hence does not have a unique -name. - -This example also shows each of the four possible types of value that can -appear in a configuration file: string\index{string values}, -integer\index{integer values}, float\index{float values} and -Boolean\index{Boolean values}. -The configuration parameter \texttt{TARGETKIND} -\index{targetkind@\texttt{TARGETKIND}} requires a string -value specifying the name of a speech parameter kind. Strings not -starting with a letter should be enclosed in double quotes. -\texttt{NUMCHANS}\index{numchans@\texttt{NUMCHANS}} requires an -integer value specifying the number of -filter-bank channels to use in the analysis. -\texttt{WINDOWSIZE}\index{windowsize@\texttt{WINDOWSIZE}} actually requires a floating-point value -specifying the window size in units of 100ns. However, an integer -can always be given wherever a float is required. -\texttt{PREEMCOEF} also requires a floating-point value specifying the -pre-emphasis coefficient to be used. Finally, \texttt{ENORMALISE} -\index{enormalise@\texttt{ENORMALISE}} is -a Boolean parameter which determines whether or not energy -normalisation is to be performed, its value must be \texttt{T}, \texttt{TRUE} or -\texttt{F}, \texttt{FALSE}. Notice also that, as in command line options, -integer values can use the C conventions for writing in non-decimal bases. -Thus, the trace value of 0101 is equal to decimal 65. This is particularly -useful in this -case because trace values are typically interpreted as bit-strings by -\HTK\ modules and tools.\index{configuration files!types} - -If the name of a configuration variable is mis-typed, there will be no -warning and the variable will simply be ignored. To help guard -against this, the standard option \texttt{-D} can be used. This -displays all of the configuration variables before and after the tool -runs. In the latter case, all configuration variables which are still -unread are marked by a hash character. The initial display allows the -configuration values to be checked before potentially wasting a large -amount of cpu time through incorrectly set parameters. The final -display shows which configuration variables were actually used during -the execution of the tool. The form of the output is shown by the -following example -\begin{verbatim} - HTK Configuration Parameters[3] - Module/Tool Parameter Value - # SAVEBINARY TRUE - HPARM TARGETRATE 256000.000000 - TARGETKIND MFCC_0 -\end{verbatim} -Here three configuration parameters have been set but the hash -(\verb+#+) indicates that \texttt{SAVEBINARY} has not been used. -\index{configuration variables!display} -\index{configuration files|)} - -\mysect{Standard Options}{stdopts} - -\index{standard options} As noted in section~\ref{s:cmdline}, options -consisting of a capital letter are common across all tools. Many are -specific to particular file types and they will be introduced as they -arise. However, there are six options that are standard across all -tools. Three of these have been mentioned already. The -option \texttt{-C}\index{standard options!aaac@\texttt{-C}} is used to -specify a configuration file name and the option -\texttt{-S}\index{standard options!aaas@\texttt{-S}} is used to -specify a script file name, whilst the option -\texttt{-D}\index{standard options!aaad@\texttt{-D}} is used to -display configuration settings. - -The two remaining standard options provided directly by -\htool{HShell} are \texttt{-A}\index{standard options!aaaa@\texttt{-A}} -and \texttt{-V}. -The option \texttt{-A} causes the current command line arguments to -be printed. When running experiments via -scripts, it is a good idea to use this option to record in a log file the -precise settings used for each tool. -The option \texttt{-V}\index{standard options!aaav@\texttt{-V}} -causes version information for the tool and each module used by that -tool to be listed. These should always be quoted when making bug reports. - -Finally, all tools implement the trace -option \texttt{-T}\index{standard options!aaat@\texttt{-T}}. -Trace values are typically bit strings and the meaning of each bit -is described in the reference section for each tool. Setting a trace\index{tracing} -option via the command line overrides any setting for that same trace -option in a configuration file. This is a general rule, command line -options always override defaults set in configuration files. - -All of the standard options are listed in the final summary section of -this chapter. As a general rule, you should consider passing at least --A -D -V -T 1 to all tools, which will guarantee that sufficient -information is available in the tool output. - - -\mysect{Error Reporting}{erep} - -The \htool{HShell} module provides a standard mechanism for reporting -errors\index{errors} and warnings\index{warnings}. -A typical error message is as follows -\begin{verbatim} - HList: ERROR [+1110] - IsWave: cannot open file speech.dat -\end{verbatim} -This indicates that the tool \htool{HList} is reporting an error -number +1110. All errors have positive error -numbers\index{error numbers!structure of} and always -result in the tool terminating. Warnings have negative error numbers -and the tool does not terminate. The first two digits of an error -number indicate the module or tool in which the error is located -(\htool{HList} in this case) -and the last two digits define the class of error. -The second line of the error message names the actual routine -in which the error occurred (here \texttt{IsWave}) and the -actual error message. All errors and warnings are listed -in the reference section at the end of this book indexed by -error/warning number. This listing contains more details on each -error or warning along with suggested causes. - -Error messages are sent to the standard error stream but warnings -are sent to the standard output stream. The reason for the latter -is that most -\HTK\ tools are run with progress tracing enabled. Sending warnings -to the standard output stream ensures that they are properly -interleaved with the trace of progress so that it is easy to determine -the point at which the warning was issued. Sending warnings to -standard error would lose this information. - -The default behaviour of a \HTK\ tool on terminating due to an -error is to exit normally returning the error number as exit status. -If, however, the configuration variable -\texttt{ABORTONERR}\index{abortonerr@\texttt{ABORTONERR}} is set to -true then the tool will core dump. This is a debugging facility which -should not concern most users.\index{termination} - -\mysect{Strings and Names}{htkstrings} - -Many \HTK\ definition files include names of various types of -objects: for example labels, model names, words, etc. -In order to achieve some uniformity, \HTK\ applies standard -rules for reading strings which are names.\index{strings!rules for} -These rules are not, however, necessary when using the language -modelling tools -- see below. - -A name string consists of a single white space delimited word or -a quoted string. Either the single quote \verb+'+ or -the double quote \verb+"+ can be used to quote strings but the -start and end quotes must be matched. The backslash \verb+\+ -character can also -be used to introduce otherwise reserved characters. The -character following a backslash is inserted into the string without special -processing unless that character is a digit in the range 0 to 7. -In that case, the three -characters following the backslash are read and interpreted as an octal -character code. When the three characters are not octal digits the result -is not well defined.\index{strings!metacharacters in} - -In summary the special processing is -\begin{center} -\begin{tabular}{|c|l|} \hline -Notation & Meaning \\ \hline -\verb+\\+ & \verb+\+ \\ \hline -\verb+\_ + & represents a space that will not terminate a string \\ \hline -\verb+\'+ & \verb+'+ (and will not end a quoted string) \\ \hline -\verb+\"+ & \verb+"+ (and will not end a quoted string) \\ \hline -\verb+\nnn+ & the character with octal code \verb+\nnn+ \\ \hline -\end{tabular} -\end{center} - -\noindent\index{non-printing chars} -Note that the above allows the same effect to be achieved in a number of -different ways. For example, -\begin{verbatim} - "\"QUOTE" - \"QUOTE - '"QUOTE' - \042QUOTE -\end{verbatim} -all produce the string \verb+"QUOTE+. - -The only exceptions to the above general rules are: -\begin{itemize} - -\item Where models are specified in \htool{HHEd} scripts, -commas (\verb+,+), -dots (\verb+.+), -and closing brackets (\verb+)+) -are all used as extra delimiters to allow \htool{HHEd} scripts -created for earlier versions of \HTK\ to be used unchanged. -Hence for example, \texttt{(a,b,c,d)} would be split into 4 -distinct name strings \texttt{a}, \texttt{b}, \texttt{c} and \texttt{d}. - -\item When the configuration variable -\texttt{RAWMITFORMAT} is set true, each word in a language model -definition file consists of a white space delimited string with no -special processing being performed. - -\item Source dictionaries read by \htool{HDMan} are read using -the standard \HTK\ string conventions, however, the command \texttt{IR} -can be used in a \htool{HDMan} source edit script to switch to using -this raw format. - -\item -To ensure that the general definition of a name string works -properly in \HTK\ master label files, all -MLFs must have the reserved \texttt{.} and \verb+///+ terminators -alone on a line with no surrounding white space. -If this causes problems reading old MLF files, the configuration -variable \texttt{V1COMPAT} should be set true in the module \htool{HLabel}. -In this case, -\HTK\ will attempt to simulate the behaviour of the older version 1.5. - -\item -To force numbers to be interpreted as strings rather than times or scores in a -label file, they must be quoted. If the configuration variable -\texttt{QUOTECHAR} is set to \verb+'+ or \verb+"+ then output labels will be -quoted with the specified quote character. If \texttt{QUOTECHAR} is set to -\verb+\+, then output labels will be escaped. The default is to select the -simplest quoting mechanism.\index{strings!output of} -\end{itemize} - -Note that under some versions of \texttt{Unix} \HTK\ can support the 8-bit -character sets used for the representation of various orthographies. In -such cases the shell environment variable \texttt{\$LANG} usually governs -which ISO character set is in use. - -\subsubsection{Language modelling tools} -Although these string conventions are unnecessary in \HLM, to maintain -compatibility with \HTK the same conventions are used. However, a -number of options are provided to allow a mix of escaped and unescaped -text files to be handled. Word maps allow the type of escaping (HTK -or none) to be defined in their headers. When a degenerate form of -word map is used (i.e. a map with no header), the \htool{LWMap} -configuration variable \texttt{INWMAPRAW} may be set to true to -disable \HTK\ escaping. By default, \HLM\ tools output word lists and -maps in HTK escaped form. However, this can be overridden by setting -the configuration variable \texttt{OUTWMAPRAW} to true. Similar -conventions apply to class maps. A degenerate class map can be read -in raw mode by setting the \htool{LClass} configuration variable -\texttt{INCMAPRAW} to true, and a class map can be written in raw form -by setting \texttt{OUTCMAPRAW} to true. - -Input/output of N-gram language model files are handled by the \HLM\ -module \texttt{LModel}. Hence, by default input/output of LMs stored -in the ARPA-MIT text format will assume \HTK\ escaping conventions. -This can be disabled for both input and output by setting -\texttt{RAWMITFORMAT} to true. - -% $ - -\mysect{Memory Management}{memman} - -Memory management\index{memory management} is a very low level function and is -mostly invisible to \HTK\ users. However, some applications require very large -amounts of memory. For example, building the models for a large vocabulary -continuous speech dictation system might require 150MB or more. Clearly, when -memory demands become this large, a proper understanding of the impact of -system design decisions on memory usage is important. The first step in this -is to have a basic understanding of memory allocation in \HTK. - -Many \HTK\ tools dynamically construct large and complex data structures in -memory. To keep strict control over this and to reduce memory allocation -overheads to an absolute minimum, \HTK\ performs its own memory -management. Thus, every time that a module or tool wishes to allocate some -memory, it does so by calling routines in -\htool{HMem}\index{hmem@\htool{HMem}}. At a slightly higher level, math objects -such as vectors and matrices are allocated by \htool{HMath} but using the -primitives provided by \htool{HMem}. - -To make memory allocation\index{memory!allocators} and de-allocation very fast, -tools create specific memory allocators for specific objects or groups of -objects. These memory allocators are divided into a sequence of blocks, and -they are organised as either Stacks\index{stacks}, M-heaps\index{M-heaps} or -C-heaps\index{C-heaps}. A Stack constrains the pattern of allocation and -de-allocation requests to be made in a last-allocated first-deallocated order -but allows objects of any size to be allocated. An M-heap allows an arbitrary -pattern of allocation and de-allocation requests to be made but all allocated -objects must be the same size. Both of these memory allocation disciplines are -more restricted than the general mechanism supplied by the operating system, -and as a result, such memory operations are faster and incur no storage -overhead due to the need to maintain hidden housekeeping information in each -allocated object. Finally, a C-heap uses the underlying operating system and -allows arbitrary allocation patterns, and as a result incurs the associated -time and space overheads. The use of C-heaps is avoided wherever possible. - -Most tools provide one or more trace options which show how -much memory has been allocated. The following shows the form of -the output\index{memory!statistics} -\begin{verbatim} - ---------------------- Heap Statistics ------------------------ - nblk=1, siz= 100000*1, used= 32056, alloc= 100000 : Global Stack[S] - nblk=1, siz= 200*28, used= 100, alloc= 5600 : cellHeap[M] - nblk=1, siz= 10000*1, used= 3450, alloc= 10000 : mlfHeap[S] - nblk=2, siz= 7504*1, used= 9216, alloc= 10346 : nameHeap[S] - --------------------------------------------------------------- -\end{verbatim} -Each line describes the status of each memory allocator and gives the number of -blocks allocated, the current block size (number of elements in block $\times$ -the number of bytes in each element)\footnote{ Block sizes typically grow as -more blocks are allocated}, the total number of bytes in use by the tool and -the total number of bytes currently allocated to that allocator. The end of -each line gives the name of the allocator and its type: Stack[S], M-heap[M] or -C-heap[M]. The element size for Stacks will always be 1 but will be variable -in M-heaps.\index{memory!element sizes} The documentation for the memory -intensive \HTK\ tools indicates what each of the main memory allocators are -used for and this information allows the effects of various system design -choices to be monitored. - -\mysect{Input/Output via Pipes and Networks}{iopipes} - -Most types of file in \HTK\ can be input or output via a pipe\index{pipes} -instead of directly from or to disk. The mechanism for doing this is to assign -the required input or output filter\index{output filter} command to a -configuration parameter or to an environment variable, either can be used. -Within this command, any occurrence of the dollar symbol -\verb+$+ will be replaced by the name of the required file. The -output of the command will then be input to or output from the \HTK\ tool via a -pipe.\index{filters} - -For example, the following command will -normally list the contents of the speech waveform file \texttt{spfile} -\begin{verbatim} - HList spfile -\end{verbatim} -However, if the value of the environment variable \texttt{HWAVEFILTER} -is set as follows -\begin{verbatim} - setenv HWAVEFILTER 'gunzip -c $' -\end{verbatim} -then the effect is to invoke the decompression filter\index{decompression -filter} \texttt{gunzip} with its input connected to the file \texttt{spfile} -and its output connected to \htool{HList} via a pipe. Each different type of -file has a unique associated variable so that multiple input and/or filters can -be used. The full list of these is given in the summary section at the end of -this chapter. - -\HTK\ is often used to process large amounts of data and typically this -data is distributed across a network. In many systems, an attempt to open a -file can fail because of temporary network \textit{glitches}. In the majority -of cases, a second or third attempt to open the file a few seconds later will -succeed and all will be well. To allow this to be done automatically, -\HTK\ tools can be configured to retry opening a file several times before giving up. -This is done simply by setting the configuration parameter -\texttt{MAXTRYOPEN}\index{maxtryopen@\texttt{MAXTRYOPEN}} to the required -number of retries\footnote{ This does not work if input filters are used. }. -\index{files!network problems}\index{files!opening} - -\mysect{Byte-swapping of HTK data files}{byteswap} - -\index{natreadorder@\texttt{NATURALREADORDER}} -\index{natwriteorder@\texttt{NATURALWRITEORDER}} -\index{byte swapping} -Virtually all \HTK\ tools can read and write data to and from binary files. The -use of binary format as opposed to text can speed up the performance of the -tools and at the same time reduce the file size when manipulating large -quantities of data. Typical binary files used by the \HTK\ tools are speech -waveform/parameter files, binary master model files (MMF), binary accumulator -files used in HMM parameter estimation and binary lattice files. However, the -use of binary data format often introduces incompatibilities between different -machine architectures due to the different byte ordering conventions used to -represent numerical quantities. In such cases, byte swapping of the data is -required. To avoid incompatibilities across different machine architectures, -all \HTK\ binary data files are written out using big-endian (\texttt{NONVAX}) -representation of numerical values. Similarly, during loading \HTK\ binary -format files are assumed to be in \texttt{NONVAX} byte order. The default -behaviour can be altered using the configuration parameters -\texttt{NATURALREADORDER} and -\texttt{NATURALWRITEORDER}. Setting \texttt{NATURALREADORDER} to true will -instruct the \HTK\ tools to interpret the binary input data in the machine's -natural byte order (byte swapping will never take place). Similarly, setting -\texttt{NATURALWRITEORDER} to true will instruct the tools to write out data -using the machine's natural byte order. The default value of these two -configuration variables is false which is the appropriate setting when using -\HTK\ in a multiple machine architecture environment. In an environment -comprising entirely of machines with \texttt{VAX} byte order both configuration -parameters can be set true which will disable the byte swapping procedure -during reading and writing of data. - -\mysect{Summary}{openvsum} - -This section summarises the globally-used environment -variables\index{environment variables} and configuration -parameters\index{configuration parameters!operating environment}. It -also provides a list of all the standard command line options used -with \HTK. - -Table~\href{t:openvcparms} lists all of the configuration parameters -along with a brief description. A missing module name means that it -is recognised by more than one module. Table~\href{t:openvars} lists -all of the environment parameters used by these modules. Finally, -table~\href{t:stdopts} lists all of the standard options. - -\begin{center} -\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{6.4cm}|} \hline -Module & Name & Description \\ \hline -\htool{HShell} & \texttt{ABORTONERR} & Core dump on error (for debugging) \\ -\htool{HShell} & \texttt{HWAVEFILTER} & Filter for waveform file input\\ -\htool{HShell} & \texttt{HPARMFILTER} & Filter for parameter file input\\ -\htool{HShell} & \texttt{HLANGMODFILTER} & Filter for language model file input\\ -\htool{HShell} & \texttt{HMMLISTFILTER} & Filter for HMM list file input\\ -\htool{HShell} & \texttt{HMMDEFFILTER} & Filter for HMM definition file input\\ -\htool{HShell} & \texttt{HLABELFILTER} & Filter for Label file input\\ -\htool{HShell} & \texttt{HNETFILTER} & Filter for Network file input\\ -\htool{HShell} & \texttt{HDICTFILTER} & Filter for Dictionary file input \\ -\htool{HShell} & \texttt{LGRAMFILTER} & Filter for gram file input\\ -\htool{HShell} & \texttt{LWMAPFILTER} & Filter for word map file input\\ -\htool{HShell} & \texttt{LCMAPFILTER} & Filter for class map file input\\ -\htool{HShell} & \texttt{LMTEXTFILTER} & Filter for text file input\\ -\htool{HShell} & \texttt{HWAVEOFILTER} & Filter for waveform file output\\ -\htool{HShell} & \texttt{HPARMOFILTER} & Filter for parameter file output\\ -\htool{HShell} & \texttt{HLANGMODOFILTER} & Filter for language model file output\\ -\htool{HShell} & \texttt{HMMLISTOFILTER} & Filter for HMM list file output\\ -\htool{HShell} & \texttt{HMMDEFOFILTER} & Filter for HMM definition file output\\ -\htool{HShell} & \texttt{HLABELOFILTER} & Filter for Label file output\\ -\htool{HShell} & \texttt{HNETOFILTER} & Filter for Network file output\\ -\htool{HShell} & \texttt{HDICTOFILTER} & Filter for Dictionary file output \\ -\htool{HShell} & \texttt{LGRAMOFILTER} & Filter for gram file output\\ -\htool{HShell} & \texttt{LWMAPOFILTER} & Filter for word map file output\\ -\htool{HShell} & \texttt{LCMAPOFILTER} & Filter for class map file output\\ -\htool{HShell} & \texttt{MAXTRYOPEN} & Number of file open retries \\ -\htool{HShell} & \texttt{NONUMESCAPES} & Prevent string output using \verb+\012+ format \\ -\htool{HShell} & \texttt{NATURALREADORDER} & Enable natural read order for HTK binary files \\ -\htool{HShell} & \texttt{NATURALWRITEORDER} & Enable natural write order for HTK binary files \\ -\htool{HMem} & \texttt{PROTECTSTAKS} & Warn if stack is cut-back (debugging) \\ - & \texttt{TRACE} & Trace control (default=0) \\ - & \texttt{STARTWORD} & Set sentence start symbol ({\tt }) \\ - & \texttt{ENDWORD} & Set sentence end symbol ({\tt }) \\ - & \texttt{UNKNOWNNAME} & Set OOV class symbol ({\tt !!UNK}) \\ - & \texttt{RAWMITFORMAT} & Disable \HTK\ escaping for LM tools\\ -\htool{LWMap} & \texttt{INWMAPRAW} & Disable \HTK\ escaping for input word lists and maps \\ -\htool{LWMap} & \texttt{OUTWMAPRAW} & Disable \HTK\ escaping for output word lists and maps \\ -\htool{LCMap} & \texttt{INCMAPRAW} & Disable \HTK\ escaping for input class lists and maps \\ -\htool{LCMap} & \texttt{OUTCMAPRAW} & Disable \HTK\ escaping for output class lists and maps \\ -\hline -\end{tabular} -\tabcap{openvcparms}{Configuration Parameters used in Operating Environment} -\end{center} - -\vspace*{1cm} -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.2cm}|} \hline -Env Variable & Meaning \\ \hline -\texttt{HCONFIG} & Name of default configuration file\\ -\texttt{HxxxFILTER} & Input/Output filters as above \\ \hline -\end{tabular} -\tabcap{openvars}{Environment Variables used in Operating Environment} -\end{center} - -\vspace*{1cm} -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.2cm}|} \hline -Standard Option & Meaning \\ \hline -\texttt{-A} & Print command line arguments\\ -\texttt{-B} & Store output HMM macro files in binary \\ -\texttt{-C cf} & Configuration file is cf \\ -\texttt{-D} & Display configuration variables\\ -\texttt{-E dir [ext]} & Search for parent transform macros in directory dir \\ -\texttt{-F fmt} & Set source data file format to fmt \\ -\texttt{-G fmt} & Set source label file format to fmt \\ -\texttt{-H mmf} & Load HMM macro file mmf \\ -\texttt{-I mlf} & Load master label file mlf \\ -\texttt{-J dir [ext]} & Search for transform macros in directory dir \\ -\texttt{-K dir [ext]} & Save transform models in directory dir \\ -\texttt{-L dir} & Look for label files in directory dir \\ -\texttt{-M dir} & Store output HMM macro files in directory dir \\ -\texttt{-O fmt} & Set output data file format to fmt \\ -\texttt{-P fmt} & Set output label file format to fmt \\ -\texttt{-Q} & Print command summary info\\ -\texttt{-S scp} & Use command line script file scp \\ -\texttt{-T N} & Set trace level to N \\ -\texttt{-V} & Print version information\\ -\texttt{-X ext} & Set label file extension to ext \\ \hline -\end{tabular} -\tabcap{stdopts}{Summary of Standard Options} -\end{center}\index{standard options!summary} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/refine.tex b/HTKBook/refine.tex deleted file mode 100644 index c419d37..0000000 --- a/HTKBook/refine.tex +++ /dev/null @@ -1,799 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{HMM System Refinement}{Refine} - -\sidepic{Tool.hedit}{55}{ } -In chapter~\ref{c:Training}, the basic processes involved in training -a continuous density HMM system were explained and examples were given -of building a set of HMM phone models. In the practical application -of these techniques to building real systems, there are often a number of -problems to overcome. Most of these arise from the conflicting desire -to have a large number of model parameters in order to -achieve high accuracy, whilst at the same time having limited and uneven -training data. \index{HMM refinement} - -As mentioned previously, -the \HTK\ philosophy is to build systems incrementally. Starting -with a set of context-independent -monophone HMMs, a system can be refined in a sequence of stages. Each refinement -step typically uses the \HTK\ HMM definition editor \htool{HHEd} followed -by re-estimation using \htool{HERest}. These incremental manipulations of -the HMM set often involve parameter tying, thus many of \htool{HHEd}'s -operations involve generating new macro definitions. - -The principle types of manipulation that can be performed -by \htool{HHEd}\index{hhed@\htool{HHEd}} -are -\begin{itemize} -\item HMM cloning to form context-dependent model sets -\item Generalised parameter tying -\item Data driven and decision tree based clustering. -\item Mixture component splitting -\item Adding/removing state transitions -\item Stream splitting, resizing and recasting -\end{itemize} -This chapter describes how the \HTK\ tool \htool{HHEd} is used, its -editing language and the main operations that can be -performed. - -\mysect{Using \htool{HHEd}}{usingHHEd} - -The HMM editor \htool{HHEd} takes as input a set of HMM definitions and -outputs a new modified set, usually to a new directory. It is invoked -by a command line of the form -\begin{verbatim} - HHEd -H MMF1 -H MMF2 ... -M newdir cmds.hed hmmlist -\end{verbatim} -where \texttt{cmds.hed} is an edit script containing -a list of edit commands. Each command -is written on a separate line and begins with a 2 letter command name. -\index{model training!HMM editing} - -The effect -of executing the above command line would be to read in the HMMs listed in -\texttt{hmmlist} and defined -by files \texttt{MMF1}, \texttt{MMF2}, etc., apply the editing operations -defined in \texttt{cmds.hed} and then write the resulting system out -to the directory \texttt{newdir}. As with all tools, \HTK\ will -attempt to replicate the file structure of the input in the output -directory. By default, any new macros generated by \htool{HHEd} will be -written to one or more of the existing MMFs. In doing this, \HTK\ will -attempt to ensure that the ``definition before use'' rule for macros is -preserved, but it cannot always guarantee this. Hence, it is usually -best to define explicit target file names for new macros. This can be -done in two ways. Firstly, explicit target file names can be -given in the edit script -using the \texttt{UF}\index{uf@\texttt{UF} command} command. -For example, if \texttt{cmds.hed} contained -\begin{verbatim} - .... - UF smacs - # commands to generate state macros - .... - UF vmacs - # commands to generate variance macros - .... -\end{verbatim} -then the output directory would contain an MMF called \texttt{smacs} -containing a set of state macro definitions and an MMF called \texttt{vmacs} -containing a set of variance macro definitions, these would be in addition -to the existing MMF files \texttt{MMF1}, \texttt{MMF2}, etc. - -Alternatively, the whole HMM system can be written to a single -file using the \texttt{-w} option. For example, -\begin{verbatim} - HHEd -H MMF1 -H MMF2 ... -w newMMF cmds.hed hmmlist -\end{verbatim} -would write the whole of the edited HMM set to the file \texttt{newMMF}. - -\index{master macro files!input/output} -As mentioned previously, each execution of \htool{HHEd} is normally followed -by re-estimation using \htool{HERest}. Normally, all the information -needed by \htool{HHEd} is contained in the model set itself. However, -some clustering operations require various statistics about the -training data (see sections~\ref{s:ddclust} and \ref{s:tbclust}). -These statistics are gathered by \htool{HERest}\index{herest@\htool{HERest}} and -output to a \textit{stats file}, which is then read in by \htool{HHEd}. -Note, however, that the statistics file\index{statistics file} -generated by \htool{HERest} -refers to the input model set not the re-estimated set. Thus -for example, in the following sequence, the \htool{HHEd} edit script in -\texttt{cmds.hed} contains a command -(see the \texttt{RO} command\index{ro@\texttt{RO} command} -in section~\ref{s:ddclust}) -which references a statistics file (called \texttt{stats}) -describing the HMM set defined by \texttt{hmm1/MMF}. -\begin{verbatim} - HERest -H hmm1/MMF -M hmmx -s stats hmmlist train1 train2 .... - HHEd -H hmm1/MMF -M hmm2 cmds.hed hmmlist -\end{verbatim} -The required statistics file is generated by \htool{HERest} but the re-estimated -model set stored in \texttt{hmmx/MMF} is ignored and can be deleted. - -\mysect{Constructing Context-Dependent Models}{mkCDHMMs} - -\index{model training!context dependency} -The first stage of model refinement is usually to convert a set of -initialised and trained context-independent monophone HMMs to a -set of context dependent models\index{context dependent models}. As -explained in section~\ref{s:edlab}, \HTK\ uses the convention that a HMM -name of the form \texttt{l-p+r} denotes the context-dependent version of the -phone \texttt{p} which is to be used when the left neighbour is the phone -\texttt{l} and the right neighbour is the phone \texttt{r}. To make a set -of context dependent phone models, it is only necessary to construct a HMM -list, called say \texttt{cdlist}, containing the required context-dependent models and -then execute \htool{HHEd} with a single command in its edit script -\begin{verbatim} - CL cdlist -\end{verbatim} -The effect of this command is that for each model \texttt{l-p+r} in \texttt{cdlist} -it makes a copy of the monophone \texttt{p}. -\index{cloning}\index{cl@\texttt{CL} command} - -The set of context-dependent models output by the above must be reestimated using -\htool{HERest}. To do this, the training data transcriptions must be converted -to use context-dependent labels and the original monophone hmm list must be -replaced by \texttt{cdlist}. In fact, it is best to do this conversion before -cloning the monophones because if the \htool{HLEd} \texttt{TC} -command\index{tc@\texttt{TC} command} -is used then the \texttt{-n} option -can be used to generate the required list of context dependent HMMs automatically. - -Before building a set of context-dependent models, -it is necessary to decide whether or not cross-word -triphones\index{cross-word triphones} are -to be used. If they are, then word boundaries in the training data can be ignored and -all monophone labels can be converted to triphones. If, however, word internal triphones -are to be used, then word boundaries in the training transcriptions must be marked in -some way (either by an explicit marker which is subsequently deleted or by using a short -pause \textit{tee-model}). This word boundary marker is then identified to \htool{HLEd} -using the \texttt{WB} command\index{wb@\texttt{WB} command} to make the \texttt{TC} command use biphones rather -than triphones at word boundaries\index{marking word boundaries} (see -section~\ref{s:edlab}). - -All \HTK\ tools can read and write -HMM definitions in text or binary form. Text is good for seeing exactly -what the tools are producing, but binary is much faster to load and store, and -much more compact. Binary output is enabled either using the standard option -\texttt{-B} or by setting the configuration variable -\texttt{SAVEBINARY}\index{savebinary@\texttt{SAVEBINARY}}. -In the above example, the HMM set input to \htool{HHEd} will contain a small -set of monophones whereas the output will be a large set of triphones. -In order, to save storage and computation, this is usually a good point to -switch to binary storage\index{binary storage} of MMFs. - -\mysect{Parameter Tying and Item Lists}{parmtying} - -As explained in Chapter~\ref{c:HMMDefs}, \HTK\ uses macros to support a -generalised parameter tying facility. Referring again to -Fig.~7.\ref{f:hierarch}, each of the solid black circles denotes a potential -{\em tie-point} in the hierarchy of HMM parameters. When two or more -parameter sets are tied, the same set of parameter values are shared by all -the {\em owners} of the tied set. Externally, tied parameters\index{tied parameters} are -represented by macros and internally they are represented by structure -sharing. The accumulators needed for the numerators and denominators of -the Baum-Welch re-estimation formulae given in section~\ref{s:bwformulae} -are attached directly to the parameters themselves. Hence, when the values -of a tied parameter set are re-estimated, all of the data which would have -been used to estimate each individual untied parameter are effectively -pooled leading to more robust parameter estimation.\index{model training!tying} - -Note also that although parameter tying is implemented in -a way which makes it transparent to the \HTK\ re-estimation and recognition -tools, in practice, these tools do notice when a system has been tied -and try to take advantage of it by avoiding redundant computations. - -Although macro definitions could be written by hand, in practice, -tying is performed by executing \htool{HHEd} commands and the -resulting -macros are thus generated automatically. The basic \htool{HHEd} command for -tying a set of parameters is the \texttt{TI} command which has the form -\begin{verbatim} - TI macroname itemlist -\end{verbatim} -This causes all items in the given \texttt{itemlist} to be tied together -and output as a macro called \texttt{macroname}. Macro names are -written as a string of -characters optionally enclosed in double quotes. The latter are necessary -if the name contains one or more characters which are not letters or digits. - -\sidefig{itemtree}{62}{Item List Construction}{2}{ -Item lists use a simple language to identify sets of points in the -HMM parameter hierarchy illustrated in Fig.~7.\ref{f:hierarch}. -This language is defined fully in the reference entry -for \htool{HHEd}. -The essential idea is that item lists\index{item lists} represent paths down the hierarchical -parameter tree where the direction {\it down} should be regarded as -travelling from the {\it root} -of the tree to towards the {\it leaves}. -A path can be unique, or more usually, it can -be a pattern representing a set of paths down the tree. The point at -which each path stops identifies one member of the set represented by -the item list. -Fig.~\href{f:itemtree} shows the possible paths down the tree. In -text form the branches are replaced by dots and the underlined node -names are possible terminating points. At the topmost level, an -item list is a comma separated list of paths enclosed in braces. -} - -Some examples, should make all this clearer. Firstly, the -following is a legal but somewhat long-winded way of specifying -the set of items comprising states 2, 3 and 4 of the HMM called \texttt{aa} -\begin{verbatim} - { aa.state[2],aa.state[3],aa.state[4] } -\end{verbatim} -however in practice this would be written much more compactly as -\begin{verbatim} - { aa.state[2-4] } -\end{verbatim} -It must be emphasised that indices in item lists are really {\it patterns}. -The set represented by an item list consists of all those elements which -match the patterns. Thus, if \texttt{aa} only had two emitting states, the above item -list would not generate an error. It would simply only match two items. -The reason for this is that the same pattern can be applied to many different -objects. For example, the HMM name can be replaced by a list of names -enclosed in brackets, furthermore each HMM name can include `?' characters -which match any single character and `*' characters which match zero or -more characters. Thus \index{item lists!pattern matching} -\begin{verbatim} - { (aa+*,iy+*,eh+*).state[2-4] } -\end{verbatim} -represents states 2, 3 and 4 -of all biphone models corresponding to -the phonemes \texttt{aa}, \texttt{iy} and \texttt{eh}. If \texttt{aa} had just 2 emitting -states and the others had 4 emitting states, then this item list would include -2 states from each of the \texttt{aa} models and 3 states from -each of the others. Moving further down the tree, the item list -\begin{verbatim} - { *.state[2-4].stream[1].mix[1,3].cov } -\end{verbatim} -denotes the set of all covariance vectors (or matrices) of the first and -third mixture -components of stream 1, of states 2 to 4 of all HMMs. Since many HMM systems -are single stream, the \texttt{stream} part of the path can be omitted if its value -is 1. Thus, the above could have been written -\begin{verbatim} - { *.state[2-4].mix[1,3].cov } -\end{verbatim} -These last two examples also show that indices\index{item lists!indexing} can be written as comma -separated lists as well as ranges, for example, \texttt{[1,3,4-6,9]} -is a valid index list representing states 1, 3, 4, 5, 6, and 9. - -When item lists are used as the argument to a \texttt{TI} -command\index{ti@\texttt{TI} command}, the -kind of items represented by the list determines the macro type in a fairly -obvious way. The only non-obvious cases are firstly that lists ending -in \texttt{cov} generate \hmmt{v}, \hmmt{i}, \hmmt{c}, or \hmmt{x} macros as -appropriate. If an explicit set of mixture components is defined -as in -\begin{verbatim} - { *.state[2].mix[1-5] } -\end{verbatim} -then \hmmt{m} macros are generated but omitting -the indices altogether denotes a special case of mixture -tying\index{tied-mixtures} -which is explained later in Chapter~\ref{c:discmods}. - -To illustrate the use of item lists, some example \texttt{TI} commands -can now be given. Firstly, when a set of context-dependent models is created, it can -be beneficial to share one transition matrix across all variants -of a phone rather than having a distinct transition matrix for each. -This could be achieved by adding \texttt{TI} -commands immediately after the \texttt{CL} command described in -the previous section, that is\index{tying!examples of} -\begin{verbatim} - CL cdlist - TI T_ah {*-ah+*.transP} - TI T_eh {*-eh+*.transP} - TI T_ae {*-ae+*.transP} - TI T_ih {*-ih+*.transP} - ... etc -\end{verbatim} - -As a second example, a so-called Grand Variance\index{grand variance} -HMM system can -be generated very easily with the following HHEd command -\begin{verbatim} - TI "gvar" { *.state[2-4].mix[1].cov } -\end{verbatim} -where it is assumed that the HMMs are 3-state -single mixture component models. The effect -of this command is to tie all state distributions to a single global variance -vector. For applications, where there is limited training data, this technique -can improve performance, particularly in noise. - -Speech recognition systems will often have distinct -models for silence and short pauses. A -silence model\index{silence model} \texttt{sil} may have -the normal 3 state topology whereas a short pause model may have just -a single state. To avoid the two models \textit{competing} with each other, the -\texttt{sp} model state can be tied to the centre state of the \texttt{sil} model -thus -\begin{verbatim} - TI "silst" { sp.state[2], sil.state[3] } -\end{verbatim} - -So far nothing has been said about how the parameters are actually -determined when a set of items is replaced by a single shared representative. -When states are tied, the state with the broadest variances and as few as -possible zero mixture component weights is selected from the pool and used -as the representative. When mean vectors are tied, the average of all the -mean vectors in the pool is used and when variances are tied, the largest -variance in the the pool is used. In all other cases, the last item in the -tie-list is arbitrarily chosen as representative. -All of these selection criteria are \textit{ad hoc}, but since -the tie operations are always followed by explicit re-estimation -using \htool{HERest}, the precise choice of representative for a tied -set is not critical.\index{tying!exemplar selection} - -Finally, tied parameters can be -untied. For example, subsequent refinements of the context-dependent model set -generated above with tied transition matrices might result in -a much more compact set of models for which individual transition -parameters could be robustly estimated. This -can be done using the \texttt{UT} command\index{ut@\texttt{UT} command} whose effect is to untie all of the -items in its argument list. For example, the command -\begin{verbatim} - UT {*-iy+*.transP} -\end{verbatim} -would untie the transition parameters in all variants of the \texttt{iy} -phoneme. -This untying works by simply making unique copies of the tied parameters. -These untied parameters can then subsequently be re-estimated. - -\mysect{Data-Driven Clustering}{ddclust} - -In -section~\ref{s:mkCDHMMs}, a method of triphone construction was described -which involved cloning all monophones and then re-estimating them using data -for which monophone labels have been replaced by triphone labels. -This will lead to a very large set of models, and relatively little -training data for each model. Applying the argument that context will not greatly affect -the centre states of triphone models, one way to reduce the -total number of parameters without -significantly altering the models' ability to represent the different -contextual effects might be to tie all of the centre states across all -models derived from the same monophone. This tying could -be\index{clustering!data-driven} -done by writing an edit script of the form -\begin{verbatim} - TI "iyS3" {*-iy+*.state[3]} - TI "ihS3" {*-ih+*.state[3]} - TI "ehS3" {*-eh+*.state[3]} - .... etc -\end{verbatim} -Each \texttt{TI} command would tie all the centre states of all triphones -in each phone group. Hence, if there were an average of 100 triphones -per phone group then the total number of states per group -would be reduced from -300 to 201. - -Explicit tyings such as these can have some positive effect but overall they -are not very satisfactory. Tying all centre states is too severe and worse -still, the problem of undertraining for the left and right states remains. -A much better approach is to use clustering to decide which states to -tie. \htool{HHEd} provides two mechanisms for this. In this section -a data-driven clustering approach will be described and in -the next section, an alternative decision tree-based approach is presented. - -Data-driven clustering is performed by the \index{model training!clustering} -\texttt{TC}\index{tc@\texttt{TC} command} and -\texttt{NC}\index{nc@\texttt{NC} command} -commands. These both invoke the same top-down hierarchical -procedure. Initially all states are placed in individual -clusters. The pair of clusters which when combined would form the smallest -resultant cluster are merged. This process repeats until either the -size of the largest -cluster reaches the threshold set by the \texttt{TC} command or -the total number of clusters has fallen to that -specified by by the \texttt{NC} command. The size of cluster -is defined as the greatest distance between any two states. -The distance metric depends on the type of state distribution. -For single Gaussians, a weighted Euclidean distance between the means -is used and for tied-mixture systems a Euclidean distance between the -mixture weights is used. For all other cases, the average probability -of each component mean with respect to the other state is used. -The details of the algorithm and these metrics are given in the reference -section for \htool{HHEd}. - -\centrefig{tiedstate}{100}{Data-driven state tying} - -As an example, the following \htool{HHEd} script would cluster and tie the -corresponding states of the triphone group for the phone \texttt{ih} -\begin{verbatim} - TC 100.0 "ihS2" {*-ih+*.state[2]} - TC 100.0 "ihS3" {*-ih+*.state[3]} - TC 100.0 "ihS4" {*-ih+*.state[4]} -\end{verbatim} -In this example, each \texttt{TC} command performs clustering on the specified -set of states, each cluster is tied and output as a macro. The macro name -is generated by appending the cluster index to -the macro name given in the command. The effect of this command -is illustrated in Fig.~\href{f:tiedstate}. Note that if a word-internal -triphone system is being built, it is sensible to include biphones as well -as triphones in the item list, for example, the first command above would -be written as -\begin{verbatim} - TC 100.0 "ihS2" {(*-ih,ih+*,*-ih+*).state[2]} -\end{verbatim} -If the above \texttt{TC} commands are repeated for all phones, the resulting set of -tied-state models will have far -fewer parameters in total than the original untied set. The numeric argument -immediately following the \texttt{TC} command name is the cluster threshold. Increasing -this value will allow larger and hence, fewer clusters. The aim, of -course, is to strike the right balance between compactness and the acoustic -accuracy of the individual models. In practice, the use of this command -requires some experimentation to find a good threshold value. \htool{HHEd} provides -extensive trace output for monitoring clustering operations. Note in this -respect that as well as setting tracing from the command line and the -configuration file, tracing in \htool{HHEd} can be set by the \texttt{TR} command. -Thus, tracing can be controlled at the command level. Further trace -information can be obtained by including the \texttt{SH} command\index{sh@\texttt{SH} command} at strategic -points in the edit script. The effect of executing this command is to list -out all of the parameter tyings currently in force. - -A potential problem with the use of the \texttt{TC} and \texttt{NC} commands is -that {\it outlier} states will tend to form their own singleton -clusters\index{singleton clusters} for -which there is then insufficient data to properly train. One solution to -this is to use the \texttt{RO} command\index{ro@\texttt{RO} command} to -remove outliers\index{removing outliers}. This command has -the form -\begin{verbatim} - RO thresh "statsfile" -\end{verbatim} -where \texttt{statsfile} is the name of a statistics file\index{statistics -file} output using the -\texttt{-s} option of \htool{HERest}. This statistics file holds the -{\em occupation counts} for all states of the HMM set being trained. -The term {\em occupation count} refers to the number of frames allocated to a -particular state and can be used as a measure of how much training data is -available for estimating the parameters of that state. -The \texttt{RO} command must be executed {\it before} the \texttt{TC} or -\texttt{NC} commands used to do the actual clustering. Its effect is to simply -read in the statistics information from the given file and then to set a flag -instructing the -\texttt{TC} or \texttt{NC} commands to remove any outliers remaining at -the conclusion -of the normal clustering process. This is done by repeatedly finding the -cluster with the smallest total occupation count and merging it with its -nearest neighbour. This process is repeated until all clusters have a total -occupation count which exceeds \texttt{thresh}, thereby ensuring that every -cluster of states will be properly trained in the subsequent re-estimation -performed by \htool{HERest}.\index{state tying} - - -On completion of the above clustering and tying procedures, many of the models -may be effectively identical, since acoustically similar triphones may share -common clusters for all their emitting states. They are then, in effect, -so-called {\it generalised triphones}.\index{generalised triphones} State tying -can be further exploited if the HMMs which are effectively equivalent are -identified and then tied via the physical-logical mapping\footnote{The physical -HMM which corresponding to several logical HMMs will be arbitrarily named after -one of them.} facility provided by HMM lists (see section~\ref{s:hmmsets}). The -effect of this would be to reduce the total number of HMM definitions required. -\htool{HHEd} provides a compaction command to do all of this automatically. -For example, the command -\begin{verbatim} - CO newList -\end{verbatim} -\index{co@\texttt{CO} command}will compact\index{model training!compacting} -the currently loaded HMM set by identifying equivalent models -and then tying them via the new HMM list output to the -file \texttt{newList}. Note, however, that for two HMMs to be tied, they -must be identical in all respects. -This is one of the reasons why transition parameters are often tied -across triphone groups otherwise HMMs with identical states would still -be left distinct due to minor differences in their transition matrices. - -\mysect{Tree-Based Clustering}{tbclust} - -\index{clustering!tree-based} -One limitation of the data-driven clustering procedure described above is -that it does not deal with triphones for which there are no examples in the -training data. When building word-internal triphone systems, this -problem can often -be avoided by careful design of the training database but when building large -vocabulary cross-word triphone systems \textit{unseen} triphones are unavoidable. -\index{unseen triphones} - -\centrefig{qstree}{100}{Decision tree-based state tying} - -\htool{HHEd} provides an alternative decision -tree based clustering\index{decision tree-based clustering} mechanism -which provides a similar quality of clustering but offers a solution -to the unseen triphone problem. Decision tree-based clustering is invoked -by the command \texttt{TB} which is analogous to the \texttt{TC} command -described above and has an identical form, that is -\begin{verbatim} - TB thresh macroname itemlist -\end{verbatim} -Apart from the clustering mechanism, there are some other differences between -\texttt{TC} and \texttt{TB}. Firstly, \texttt{TC} uses a distance metric between -states whereas \texttt{TB} uses a log likelihood criterion. Thus, the threshold -values are not directly comparable. Furthermore, \texttt{TC} supports any type -of output distribution whereas \texttt{TB} only supports single-Gaussian -continuous density output distributions. -Secondly, although the following describes only state clustering, -the \texttt{TB} command\index{tb@\texttt{TB} command} can also be used to cluster whole -models. - -A phonetic decision tree is a binary tree in which a yes/no phonetic -question\index{phonetic questions} -is attached to each node. -Initially all states in a given item list (typically a specific phone state position) -are placed at the -root node of a tree. Depending on each answer, the pool of states is -successively split and this continues until the states have trickled -down to leaf-nodes. All states in the same leaf node are then tied. -For example, Fig~\href{f:qstree} illustrates the case of tying the centre -states of all triphones of the phone /aw/ (as in ``out''). All of the states trickle -down the tree and depending on the answer to the questions, they end up -at one of the shaded terminal nodes. For example, in the illustrated -case, the centre state of \texttt{s-aw+n} would join the second leaf -node from the right since its right context is a central consonant, -and its right -context is a nasal but its left context is not a central stop. - -The question at each node is chosen to (locally) maximise the likelihood -of the training data given the final set of state tyings. -Before any tree building can take place, all of the possible phonetic -questions must be loaded into \htool{HHEd} using \texttt{QS} -commands\index{qs@\texttt{QS} command}. Each -question takes the form ``Is the left or right context in the set P?'' where the -context is the model context as defined by its logical name. The -set P is -represented by an item list and -for convenience every question is given a name. As an example, the -following command -\begin{verbatim} - QS "L_Nasal" { ng-*,n-*,m-* } -\end{verbatim} -defines the question ``Is the left context a nasal?''. - -It is possible to calculate the log likelihood of the training -data given any pool of states (or models). Furthermore, this -can be done without reference to the -training data itself since for single Gaussian distributions the means, variances -and state occupation counts (input via a stats file) form sufficient statistics. -Splitting any pool into two will increase the log likelihood since it provides twice -as many parameters to model the same amount of data. The increase obtained when -each possible question is used can thus be calculated and the question selected -which gives the biggest improvement. - -Trees are therefore built using a top-down sequential optimisation process. -Initially all states (or models) are placed in a single cluster at the root -of the tree. The question is then found which gives the best split of the root -node. This process is repeated until the increase in log likelihood falls -below the threshold specified in the \texttt{TB} command. -As a final stage, the decrease in log likelihood is calculated for merging -terminal nodes with differing parents. Any pair of nodes for which this -decrease is less than the threshold used to stop splitting are then merged. -\index{tree optimisation} - -As with the \texttt{TC} command, it is useful to prevent the creation of -clusters with very little associated training data. The \texttt{RO} command -can therefore be used in tree clustering as well as in data-driven clustering. -When used with trees, any split which would result in a total occupation count -falling below the value specified is prohibited. Note that the \texttt{RO} -command can also be used to load the required stats file. Alternatively, -the stats file can be loaded using the \texttt{LS} command\index{ls@\texttt{LS} command}. - -As with data-driven clustering, using the trace facilities provided by -\htool{HHEd} is recommended for monitoring and setting the appropriate thresholds. -Basic tracing provides the following summary data for each tree -\begin{verbatim} - TB 350.00 aw_s3 {} - Tree based clustering - Start aw[3] : 28 have LogL=-86.899 occ=864.2 - Via aw[3] : 5 gives LogL=-84.421 occ=864.2 - End aw[3] : 5 gives LogL=-84.421 occ=864.2 - TB: Stats 28->5 [17.9%] { 4537->285 [6.3%] total } -\end{verbatim} -This example corresponds to the case illustrated in Fig~\href{f:qstree}. -The \texttt{TB} -command has been invoked with a threshold of 350.0 to cluster -the centre states of the triphones of the phone \textit{aw}. -At the start of clustering with all 28 states in a single pool, the average -log likelihood per unit of occupation is -86.9 and on completion with -5 clusters this has increased to -84.4. The middle line labelled ``via'' gives -the position after the tree has been built but before terminal nodes have been -merged (none were merged in this case). The last line summarises the overall -position. After building this tree, a total of 4537 states were reduced -to 285 clusters.\index{clustering!tracing in} - -As noted at the start of this section, an important advantage of tree-based clustering -is that it allows triphone models which have no training data to be synthesised. -This is done in \htool{HHEd} using the \texttt{AU} command\index{au@\texttt{AU} command} which has the form -\begin{verbatim} - AU hmmlist -\end{verbatim} -Its effect is to scan the given \texttt{hmmlist} and any physical models listed -which are not in the currently loaded set are synthesised. This is done -by descending the previously constructed trees for that phone and answering the -questions at each node based on the new unseen context. When each leaf node is -reached, the state representing that cluster is used for the corresponding state -in the unseen triphone\index{unseen triphones!synthesising}. - -The \texttt{AU} command can be used within the same edit script as the tree building -commands. However, it will often be the case that a new set of triphones is needed -at a later date, perhaps as a result of vocabulary changes. To make this possible, -a complete set of trees can be saved using the \texttt{ST} -command\index{st@\texttt{ST} command} and then later -reloaded using the \texttt{LT} command\index{lt@\texttt{LT} command}. -\index{decision trees!loading and storing} - -\mysect{Mixture Incrementing}{upmix} - -When building sub-word based continuous density systems, -the final system will typically consist of multiple mixture component -context-dependent HMMs. However, as indicated previously, the early -stages of triphone construction, particularly state tying, are best done -with single Gaussian models. Indeed, if tree-based clustering is to be -used there is no option.\index{mixture incrementing}\index{up-mixing} - -In \HTK\ therefore, the conversion from single Gaussian HMMs to multiple -mixture component HMMs is usually one of the final steps in building -a system. The mechanism provided to do this is the \htool{HHEd} \texttt{MU} command -which will increase the number of components in a mixture by -a process called \textit{mixture splitting}. -This approach to building a multiple -mixture component system is extremely -flexible since it allows the number of mixture components to be repeatedly increased -until the desired level of performance is achieved.\index{mixture splitting} - -The \texttt{MU} command\index{mu@\texttt{MU} command} has the form -\begin{verbatim} - MU n itemList -\end{verbatim} -where \texttt{n} gives the new number of mixture components required -and \texttt{itemList} defines the actual mixture distributions to -modify. This command works by repeatedly splitting the 'heaviest' -mixture component until the required number of components is obtained. -The 'heaviness' score of a mixture component is defined as the mixture -weight minus the number of splits involving that component that have -already been carried out by the current MU command. Subtracting the -number of splits discourages repeated splitting of the same mixture -component. If the GCONST value~\ref{s:hmmdef} of a component is more -than four standard deviations smaller than the average gConst, a -further adjustment is made to the 'heaviness' score of the component -in order to make it very unlikely that the component will be selected -for splitting. The actual split is performed by copying the mixture -component, dividing the weights of both copies by 2, and finally -perturbing the means by plus or minus 0.2 standard deviations. For -example, the command -\begin{verbatim} - MU 3 {aa.state[2].mix} -\end{verbatim} -would increase the number of mixture components in the output distribution -for state 2 of model \texttt{aa} to 3. Normally, however, the number of -components in all mixture distributions will be increased at the same time. -Hence, a command of the form is more usual -\begin{verbatim} - MU 3 {*.state[2-4].mix} -\end{verbatim} -It is usually a good idea to increment mixture components in -stages, for example, by incrementing by 1 or 2 then re-estimating, then -incrementing by 1 or 2 again and re-estimating, and so on until the -required number of components are obtained. This also allows recognition performance -to be monitored to find the optimum. - -One final point with regard to multiple mixture component distributions is that -all \HTK\ tools ignore mixture components whose weights fall below a threshold value -called \texttt{MINMIX} (defined in \texttt{HModel.h}). Such mixture components -are called {\it defunct}. Defunct mixture components can be -prevented by setting the \texttt{-w} option in \htool{HERest} so that all mixture -weights are floored to some level above -\texttt{MINMIX}\index{minmix@\texttt{MINMIX}}. If -mixture weights\index{mixture weight floor} -are allowed to fall below \texttt{MINMIX} then the corresponding Gaussian -parameters will not be written out when the model containing that component -is saved. It is possible to recover from this, however, since the \texttt{MU} command -will replace defunct mixtures\index{defunct mixtures} before performing any requested mixture -component increment. - -\mysect{Regression Class Tree Construction}{hhedregtree} - -In order to perform most model adaptation tasks (see -chapter~\ref{c:Adapt}), it will be necessarily to produce a binary regression -class tree\index{adaptation!regression tree}. -This tree is stored in the MMF, along with a regression -base class identifier for each mixture component. An example -regression tree and how it may be used is shown in -subsection~\ref{s:reg_classes}. \htool{HHEd} provides the means to -construct a regression class tree for a given MMF, and is invoked -using the \texttt{RC} command\index{rc@\texttt{RC} command}. -It is also necessary to supply a -statistics file, which is output using the \texttt{-s} option of -\texttt{HERest}. The statistics file can be loaded by invoking the -\texttt{LS}\index{ls@\texttt{LS} command} command. - -A centroid-splitting algorithm using a Euclidean distance measure is -used to grow the binary regression class tree to cluster the model -set's mixture components. Each leaf node therefore specifies a -particular mixture component cluster. This algorithm proceeds -as follows until the requested number of terminals has been achieved. -\begin{itemize} -\item Select a terminal node that is to be split. -\item Calculated the mean and variance from the mixture components clustered -at this node. -\item Create two children. Initialise their means to the parent mean -perturbed in opposite directions (for each child) by a fraction of -the variance. -\item For each component at the parent node assign the component -to one of the children by using a Euclidean distance measure to -ascertain which child mean the component is closest to. -\item Once all the components have been assigned, calculate the new -means for the children, based on the component assignments. -\item Keep re-assigning components to the children and re-estimating -the child means until there is no change in assignments from one -iteration to the next. Now finalise the split. -\end{itemize} - -As an example, the following \htool{HHEd} script would produce a -regression class tree with 32 terminal nodes, or regression base -classes:- -\begin{verbatim} - LS "statsfile" - RC 32 "rtree" -\end{verbatim} - -A further optional argument is possible with the -\texttt{RC} command. -This argument allows the user to specify the non-speech class -mixture components using an \texttt{itemlist}, -such as the silence mixture components. -\begin{verbatim} - LS "statsfile" - RC 32 "rtree" {sil.state[2-4].mix} -\end{verbatim} -In this case the first split that will be made in the regression class tree -will be to split the speech and non-speech sounds, after which the -tree building continues as usual. - -\mysect{Miscellaneous Operations}{misedit} - -The preceding sections have described the main \htool{HHEd} commands used for -building continuous density systems with tied parameters. A further group -of commands (\texttt{JO}, \texttt{TI} and \texttt{HK}) are used to build -tied-mixture systems and these are described in Chapter~\ref{c:discmods}. -Those -remaining cover a miscellany of functions. They are documented in the -reference entry for \htool{HHEd} and include commands to add and remove -state transitions\index{state transitions!adding/removing} -(\texttt{AT}\index{at@\texttt{AT} command}, -\texttt{RT}\index{rt@\texttt{RT} command}); synthesise triphones from -biphones (\texttt{MT}\index{mt@\texttt{MT} command}); -change the parameter kind of a HMM (\texttt{SK}\index{sk@\texttt{SK} command}); -modify stream dimensions (\texttt{SS}\index{ss@\texttt{SS} command}, -\texttt{SU}\index{su@\texttt{SU} command}, -\texttt{SW}\index{sw@\texttt{SW} command}); change/add an identifier name -to an MMF (\texttt{RN}\index{rn@\texttt{RN}} command); and expand -HMM sets by duplication, for example, as needed in making gender -dependent models (\texttt{DP}\index{dp@\texttt{DP} command}). - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/speechio.tex b/HTKBook/speechio.tex deleted file mode 100644 index 9550b57..0000000 --- a/HTKBook/speechio.tex +++ /dev/null @@ -1,1959 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{Speech Input/Output}{speechio} - -Many tools need to input parameterised speech data and \HTK\ provides -a number of different methods for doing this: -\begin{itemize} -\item input from a previously encoded speech parameter file -\item input from a waveform file which is encoded as part of the - input processing -\item input from an audio device which is encoded as part of the - input processing. -\end{itemize} -For input from a waveform file, a large number of different file formats -are supported, including all of the commonly used CD-ROM formats. -Input/output for parameter files is limited to the standard \HTK\ file format -and the new Entropic Esignal format. - - -\sidepic{Tool.spio}{60}{} -All \HTK\ speech input\index{speech input} is controlled by configuration -parameters which give details of what processing operations to apply to each -input speech file or audio source. This chapter describes speech input/output -in \HTK. The general mechanisms are explained and the various configuration -parameters are defined. The facilities for signal pre-processing, linear -prediction-based processing, Fourier-based processing and vector quantisation -are presented and the supported file formats are given. Also described are the -facilities for augmenting the basic speech parameters with energy measures, -delta coefficients and acceleration (delta-delta) coefficients and for -splitting each parameter vector into multiple data streams to form -\textit{observations}. The chapter concludes with a brief description of the -tools \htool{HList} and \htool{HCopy} which are provided for viewing, -manipulating and encoding speech files. - -\mysect{General Mechanism}{genio} - -The facilities for speech input and output in \HTK\ are provided -by five distinct modules: \htool{HAudio}, \htool{HWave}, -\htool{HParm}, \htool{HVQ} and \htool{HSigP}. The interconnections -between these modules are shown in Fig.~\href{f:Spmods}. -\index{speech input!general mechanism} - -\sidefig{Spmods}{62}{Speech Input Subsystem}{2}{ -Waveforms -are read from files using \htool{HWave}, or are input direct from -an audio device using \htool{HAudio}. In a few rare cases, such as -in the display tool \htool{HSLab}, only the speech waveform is needed. -However, in most cases the waveform is wanted in parameterised form and -the required encoding is performed by \htool{HParm} -using the signal processing operations defined in -\htool{HSigP}. The parameter vectors are output by \htool{HParm} -in the form of observations which are the basic units of data processed -by the \HTK\ recognition and training tools. An observation contains all -components of a raw parameter vector but it may be possibly split into -a number of independent parts. Each such part is regarded by a \HTK\ tool -as a statistically independent data stream. Also, an observation -may include VQ indices attached to each data stream. Alternatively, -VQ indices can be read directly from a parameter file in which case the -observation will contain only VQ indices. -} - -Usually a \HTK\ tool will require a number of speech data files to be -specified on the command line. In the majority of cases, these -files will be required in parameterised form. Thus, the following example -invokes the \HTK\ embedded training tool \htool{HERest} -to re-estimate a set of models using the speech data -files \texttt{s1}, \texttt{s2}, \texttt{s3}, \ldots . These are -input via the library module \htool{HParm} and they -must be in exactly the form needed by the models. -\begin{verbatim} - HERest ... s1 s2 s3 s4 ... -\end{verbatim} - -However, if the external form of the speech data files is not in the -required form, it will often be possible to convert them automatically during -the input process. -To do this, configuration parameter values are specified whose function -is to define exactly -how the conversion should be done. -The key idea is that there is a -\textit{source parameter kind} and \textit{target parameter kind}. -The source refers to the natural form of the data in -the external medium and the target refers to the form of the -data that is required internally by the \HTK\ tool. -The principle function of the speech -input subsystem is to convert the source parameter kind into the -required target parameter kind. \index{speech input!automatic conversion} - -Parameter kinds consist of a base form to which one or more -qualifiers may be attached where each qualifier consists of -a single letter preceded by an underscore character.\index{qualifiers} -Some examples of parameter kinds are -\begin{varlist} - \fwitem{2cm}{WAVEFORM} simple waveform - \fwitem{2cm}{LPC} linear prediction coefficients - \fwitem{2cm}{LPC\_D\_E} LPC with energy and delta coefficients - \fwitem{2cm}{MFCC\_C} compressed mel-cepstral coefficients -\end{varlist} -\index{speech input!target kind} - -The required source and target parameter kinds are specified -using the configuration parameters \texttt{SOURCEKIND} -\index{sourcekind@\texttt{SOURCEKIND}} and -\texttt{TARGETKIND}\index{targetkind@\texttt{TARGETKIND}}. -Thus, if the following configuration parameters were defined -\begin{verbatim} - SOURCEKIND = WAVEFORM - TARGETKIND = MFCC_E -\end{verbatim} -then the speech input subsystem would expect each input file to contain -a speech waveform and it would convert it to mel-frequency cepstral -coefficients with log energy appended. - -The source need not be a waveform. For example, the configuration -parameters -\begin{verbatim} - SOURCEKIND = LPC - TARGETKIND = LPREFC -\end{verbatim} -would be used to read in files containing linear prediction coefficients -and convert them to reflection coefficients. - -For convenience, a special parameter kind called -\texttt{ANON}\index{anon@\texttt{ANON}} is provided. When the source is -specified as \texttt{ANON} then the actual kind of the source is determined -from the input file. When \texttt{ANON} is used in the target kind, then it is -assumed to be identical to the source. For example, the effect of the -following configuration parameters -\begin{verbatim} - SOURCEKIND = ANON - TARGETKIND = ANON_D -\end{verbatim} -would simply be to add delta coefficients to whatever the source form -happened to be. -The source and target parameter kinds default to \texttt{ANON} -to indicate that by default -no input conversions are performed. Note, however, that where two or more -files are listed on the command line, the meaning of -\texttt{ANON} will not be re-interpreted from one file to the next. Thus, it -is a general rule, that any tool reading multiple source speech files requires -that all the files have the same parameter kind. - -The conversions applied by \HTK's input subsystem can be complex and may -not always behave exactly as expected. There are two facilities that can -be used to help check and debug the set-up of the speech i/o -configuration parameters. -Firstly, the tool \htool{HList} simply displays speech data by listing it -on the terminal. However, since \htool{HList} uses the speech -input subsystem like -all \HTK\ tools, if a value for \texttt{TARGETKIND} is set, then -it will display the target -form rather than the source form. This is the simplest way to check the form of -the speech data that will actually be delivered to a \HTK\ tool. -\htool{HList} is described -in more detail in section~\ref{s:UseHList} below. - -Secondly, trace output can be generated from the \htool{HParm} module -by setting the \texttt{TRACE} configuration file parameter. This is a -bit-string in which individual bits cover different parts of the -conversion processing. The details are given in the reference section. - -To summarise, speech input in \HTK\ is controlled by configuration -parameters. The key parameters are \texttt{SOURCEKIND} and {\tt -TARGETKIND} which specify the source and target parameter kinds. -These determine the end-points of the required input conversion. -However, to properly specify the detailed steps in between, more -configuration parameters must be defined. -These are described in subsequent sections. - -\mysect{Speech Signal Processing}{sigproc} - -In this section, the basic mechanisms involved in transforming a -speech waveform into a sequence of parameter vectors will be -described. Throughout this section, it is assumed that the -\texttt{SOURCEKIND} is \texttt{WAVEFORM} and that data is being read from -a HTK format file via \htool{HWave}. Reading from different format -files is described below in section~\ref{s:waveform}. -Much of the -material in this section also applies to data read direct from an audio -device, the -additional features needed to deal with this latter case are -described later in section~\ref{s:audioio}. -\vspace{0.2cm} -\index{speech input!blocking} - -The overall process is illustrated in Fig.~\href{f:Blocking} -which shows the sampled waveform being converted into a -sequence of parameter blocks. In general, \HTK\ regards -both waveform files and parameter files as being just -sample sequences, the only difference being that in the former -case the samples are 2-byte integers and in the latter they -are multi-component vectors. The sample rate of the input -waveform will normally be determined from the input file -itself. However, it can be set explicitly using the -configuration parameter \texttt{SOURCERATE}. The period -between each parameter vector determines the output sample -rate and it is set using the configuration parameter -\texttt{TARGETRATE}. The segment of waveform used to determine -each parameter vector is usually referred to as a window -and its size is set by the -configuration parameter \texttt{WINDOWSIZE}. Notice that the -window size and frame rate are independent. Normally, -the window size will be larger than the frame rate so that -successive windows overlap as illustrated in -Fig.~\href{f:Blocking}. -\index{sourcerate@\texttt{SOURCERATE}} -\index{targetrate@\texttt{TARGETRATE}} -\index{windowsize@\texttt{WINDOWSIZE}} - -For example, a waveform sampled -at 16kHz -would be converted into 100 parameter vectors per -second using a 25 msec window by setting the following -configuration parameters. -\begin{verbatim} - SOURCERATE = 625 - TARGETRATE = 100000 - WINDOWSIZE = 250000 -\end{verbatim} -Remember that all durations are specified in 100 nsec units\footnote{ -The somewhat bizarre choice of 100nsec units originated in Version 1 of -\HTK\ when times were represented by integers and this unit was the best -compromise between precision and range. Times are now represented by -doubles and hence the constraints no longer apply. However, the need for backwards -compatibility means that 100nsec units have been retained. The names -\texttt{SOURCERATE} and \texttt{TARGETRATE} are also non-ideal, -\texttt{SOURCEPERIOD} and \texttt{TARGETPERIOD} would be better. -}. - -\sidefig{Blocking}{50}{Speech Encoding Process}{2}{} -Independent of what parameter kind is required, there are some simple -pre-processing operations that can be applied prior to performing the actual -signal analysis.\index{speech input!pre-processing} -Firstly, the DC mean can be removed from the source waveform by setting the -Boolean configuration parameter -\texttt{ZMEANSOURCE}\index{zmeansource@\texttt{ZMEANSOURCE}} to true -(i.e.\ \texttt{T}). This is useful when\index{speech input!DC offset} -the original analogue-digital conversion has added a DC offset to the -signal. It is applied to each window individually so that it can be -used both when reading from a file and when using direct audio -input\footnote{ This method of applying a zero mean is different to -HTK Version 1.5 where the mean was calculated and subtracted from the -whole speech file in one operation. The configuration variable -\texttt{V1COMPAT} can be set to revert to this older behaviour.}. - -Secondly, it is common practice to pre-emphasise -the signal by applying the first order difference equation -\hequation{ - {s^{\prime}}_n = s_n - k\,s_{n-1} -}{preemp} -to the samples\index{speech input!pre-emphasis} -$\{s_n, n=1,N \}$ in each window. Here $k$ is the -pre-emphasis\index{pre-emphasis} coefficient which should be in the range -$0 \leq k < 1$. It is specified using the configuration -parameter \texttt{PREEMCOEF}\index{preemcoef@\texttt{PREEMCOEF}}. -Finally, -it is usually beneficial to taper the -samples in each window so that discontinuities at the window -edges are attenuated. This is done by setting the -Boolean configuration -parameter \texttt{USEHAMMING}\index{usehamming@\texttt{USEHAMMING}} -to true. -This applies the following transformation to the samples -$\{s_n, n=1,N\}$ in the window -\hequation{ - {s^{\prime}}_n = \left\{ 0.54 - 0.46 \cos \left( \frac{2 \pi (n-1)}{N-1} - \right) \right\} s_n -}{ham} -When both pre-emphasis and Hamming windowing are enabled, -pre-emphasis is performed -first.\index{speech input!Hamming window function} \index{Hamming Window} - -In practice, all three of the above are usually applied. -Hence, a configuration file will typically contain the -following -\begin{verbatim} - ZMEANSOURCE = T - USEHAMMING = T - PREEMCOEF = 0.97 -\end{verbatim} -Certain types of artificially generated waveform data can cause numerical -overflows with some coding schemes. In such cases adding a small amount of -random noise to the waveform data solves the problem. The noise is added -to the samples using -\hequation{ - {s^{\prime}}_n = s_n + q RND() -}{dither} -where $RND()$ is a uniformly distributed random value over the interval -$[-1.0, +1.0)$ and $q$ is the scaling factor. The amount of noise added -to the data ($q$) is set with the configuration parameter -\index{adddither@\texttt{ADDDITHER}}\texttt{ADDDITHER} (default value $0.0$). -A positive value causes the noise signal added to be the same every time -(ensuring that the same file always gives exactly the same results). With a -negative value the noise is random and the same file may produce slightly -different results in different trials. - -One problem that can arise when processing speech waveform files obtained from -external sources, such as databases on CD-ROM, is that the -byte-order\index{byte-order} may be different to that used by the machine on -which \HTK\ is running. To deal with this problem, \htool{HWave} can perform -automatic byte-swapping in order to preserve proper byte order. \HTK\ assumes -by default that speech waveform data is encoded as a sequence of 2-byte -integers as is the case for most current speech databases\footnote{Many of the -more recent speech databases use compression. In these cases, the data may be -regarded as being logically encoded as a sequence of 2-byte integers even if -the actual storage uses a variable length encoding scheme.}. -If the source format is known, then \htool{HWave} will also make an assumption -about the byte order used to create speech files in that format. It then checks -the byte order of the machine that it is running on and automatically performs -byte-swapping if the order is different. For unknown formats, proper byte order -can be ensured by setting the configuration parameter -\texttt{BYTEORDER}\index{byteorder@\texttt{BYTEORDER}} to \texttt{VAX} if the -speech data was created on a little-endian machine such as a VAX or an IBM PC, -and to anything else (e.g. \texttt{NONVAX}) if the speech data was created on a -big-endian machine such as a SUN, HP or Macintosh machine. \index{speech -input!byte order} - -The reading/writing of \HTK\ format waveform files can be further controlled -via the configuration parameters \texttt{NATURALREADORDER} and -\texttt{NATURALWRITEORDER}. The effect and default settings of these parameters -are described in section~\href{s:byteswap}. -\index{byte swapping} -Note that \texttt{BYTEORDER} should not be used when \texttt{NATURALREADORDER} -is set to true. Finally, note that \HTK\ can also byte-swap parameterised -files in a similar way provided that only the byte-order of each 4 byte float -requires inversion. - -\mysect{Linear Prediction Analysis}{lpcanal} - -In linear prediction (LP) \index{linear prediction} analysis, the -vocal tract transfer function -is modelled by an all-pole filter\index{all-pole filter} with transfer function\footnote{ -Note that some textbooks define the denominator of equation~\ref{e:allpole} -as $1 - \sum_{i=1}^p a_i z^{-i}$ so that the filter coefficients are the -negatives of those computed by \HTK.} -\hequation{ -H(z) = \frac{1}{\sum_{i=0}^p a_i z^{-i}} -}{allpole} -where $p$ is the number of poles and $a_0 \equiv 1$. -The filter coefficients $\{a_i \}$ are chosen to minimise -the mean square filter prediction error summed over the analysis -window. The \HTK\ module \htool{HSigP} uses the \textit{autocorrelation -method} to perform this optimisation as follows. - -Given a window of speech samples $\{s_n, n=1,N \}$, -the first $p+1$ terms of the autocorrelation sequence are -calculated from -\hequation{ -r_i = \sum_{j=1}^{N-i} s_j s_{j+i} -}{autoco} -where $i = 0,p$. -The filter coefficients are then computed recursively -using a set of auxiliary coefficients $\{k_i\}$ which can be -interpreted as the reflection coefficients of an equivalent -acoustic tube and the prediction error $E$ which is initially -equal to $r_0$. Let $\{k_j^{(i-1)} \}$ and $\{a_j^{(i-1)} \}$ -be the reflection and filter coefficients for a filter of order -$i-1$, then a filter of order $i$ can be calculated in three steps. -Firstly, a new set of reflection coefficients\index{reflection coefficients} are calculated. -\hequation{ - k_j^{(i)} = k_j^{(i-1)} -}{kupdate1} -for $j = 1,i-1$ and -\hequation{ - k_i^{(i)} = \left\{ r_i + - \sum_{j=1}^{i-1} a_j^{(i-1)} r_{i-j} \right\} / E^{(i-1)} -}{kupdate2} -Secondly, the prediction energy is updated. -\hequation{ -E^{(i)} = (1 - k_i^{(i)} k_i^{(i)} ) E^{(i-1)} -}{Eupdate} -Finally, new filter coefficients are computed -\hequation{ -a_j^{(i)} = a_j^{(i-1)} - k_i^{(i)} a_{i-j}^{(i-1)} -}{aupdate1} -for $j = 1,i-1$ and -\hequation{ -a_i^{(i)} = - k_i^{(i)} -}{aupdate2} -This process is repeated from $i=1$ through to the required filter order -$i=p$. - -To effect the above transformation, the target parameter kind must -be set to either \texttt{LPC}\index{lpc@\texttt{LPC}} to obtain the LP filter parameters $\{a_i\}$ or -\texttt{LPREFC}\index{lprefc@\texttt{LPREFC}} to obtain the reflection coefficients $\{k_i \}$. The -required filter order must also be set using the configuration -parameter \texttt{LPCORDER}\index{lpcorder@\texttt{LPCORDER}}. -Thus, for example, the following configuration -settings would produce a target parameterisation -consisting of 12 reflection coefficients per vector. -\begin{verbatim} - TARGETKIND = LPREFC - LPCORDER = 12 -\end{verbatim} - -An alternative LPC-based parameterisation is obtained by setting the -target kind to \texttt{LPCEPSTRA}\index{lpcepstra@\texttt{LPCEPSTRA}} to generate linear prediction cepstra. -The cepstrum of a signal is computed by taking a Fourier (or similar) -transform of the log spectrum. In the case of linear -prediction cepstra\index{linear prediction!cepstra}, the -required spectrum is the linear prediction spectrum which can be obtained -from the Fourier transform of the filter coefficients. However, it can be shown -that the required cepstra can be more efficiently computed using -a simple recursion -\hequation{ - c_n = -a_n - \frac{1}{n} \sum_{i=1}^{n-1} (n-i) a_i c_{n-i} -}{lpcepstra} -The number of cepstra generated need not be the same as the number of -filter coefficients, hence it is set by a separate configuration -parameter called \texttt{NUMCEPS}\index{numceps@\texttt{NUMCEPS}}. - -The principal advantage of cepstral coefficients is that they are -generally decorrelated and this allows diagonal covariances -to be used in the HMMs. However, one minor problem with -them is that the higher order cepstra are numerically quite small and -this results in -a very wide range of variances when going from the low to high cepstral -coefficients\index{cepstral coefficients!liftering}. -\HTK\ does not have a problem with this but for pragmatic reasons such as -displaying model parameters, flooring variances, etc., it is convenient to re-scale -the cepstral coefficients to have similar magnitudes. This is done by -setting the configuration parameter \texttt{CEPLIFTER}\index{ceplifter@\texttt{CEPLIFTER}} to some value $L$ to -\textit{lifter} the cepstra according to the following formula -\hequation{ - {c^{\prime}}_n = \left( 1 + \frac{L}{2} sin \frac{\pi n}{L} - \right) c_n -}{ceplifter} - -As an example, the following configuration parameters would -use a 14'th order linear prediction analysis to -generate 12 liftered LP cepstra per target vector -\begin{verbatim} - TARGETKIND = LPCEPSTRA - LPCORDER = 14 - NUMCEPS = 12 - CEPLIFTER = 22 -\end{verbatim} -These are typical of the values needed to generate a good front-end -parameterisation for a speech recogniser based on linear prediction. -\index{cepstral analysis!LPC based}\index{cepstral analysis!liftering coefficient} - -Finally, note that the conversions supported by \HTK\ are not limited to -the case where the source is a waveform. \HTK\ can convert any -LP-based parameter into any other LP-based parameter. - -\mysect{Filterbank Analysis}{fbankanal} - -The human ear resolves frequencies non-linearly across the audio spectrum and -empirical evidence suggests that designing a front-end to operate in a similar -non-linear manner improves recognition performance. A popular alternative to -linear prediction based analysis is therefore filterbank analysis since this -provides a much more straightforward route to obtaining the desired non-linear -frequency resolution. However, filterbank amplitudes are highly correlated and -hence, the use of a cepstral transformation in this case is virtually mandatory -if the data is to be used in a HMM based recogniser with diagonal covariances. -\index{cepstral analysis!filter bank} \index{speech input!filter bank} - -\HTK\ provides a simple Fourier transform based filterbank designed to -give approximately equal resolution on a mel-scale. Fig.~\href{f:melfbank} -illustrates the general form of this filterbank. As can be seen, -the filters used are triangular and they are equally spaced along the mel-scale -which is defined by -\hequation{ - \mbox{Mel}(f) = 2595 \log_{10}(1 + \frac{f}{700}) -}{melscale} -To implement this filterbank, the window of speech data is -transformed\index{mel scale} using a Fourier transform and the magnitude is -taken. The magnitude coefficients are then \textit{binned} by correlating them -with each triangular filter. Here binning means that each FFT magnitude -coefficient is multiplied by the corresponding filter gain and the results -accumulated. Thus, each bin holds a weighted sum representing the spectral -magnitude in that filterbank channel.\index{binning} As an alternative, the -Boolean configuration parameter -\texttt{USEPOWER}\index{usepower@\texttt{USEPOWER}} can be set true to use the -power rather than the magnitude of the Fourier transform in the binning -process. \index{cepstral analysis!power vs magnitude} - -\centrefig{melfbank}{110}{Mel-Scale Filter Bank} - -\index{speech input!bandpass filtering} -Normally the triangular filters are spread over the whole frequency range from -zero upto the Nyquist frequency. However, band-limiting is often useful to -reject unwanted frequencies or avoid allocating filters to frequency regions in -which there is no useful signal energy. For filterbank analysis only, lower -and upper frequency cut-offs can be set using the configuration parameters -\texttt{LOFREQ}\index{lofreq@\texttt{LOFREQ}} and -\texttt{HIFREQ}\index{hifreq@\texttt{HIFREQ}}. For example, -\begin{verbatim} - LOFREQ = 300 - HIFREQ = 3400 -\end{verbatim} -might be used for processing telephone speech. When low and high pass cut-offs -are set in this way, the specified number of filterbank channels are distributed -equally on the mel-scale across the resulting pass-band such that the lower cut-off -of the first filter is at \texttt{LOFREQ} and the upper cut-off of the last -filter is at \texttt{HIFREQ}. - -If mel-scale filterbank parameters are required directly, then the target kind -should be set to \texttt{MELSPEC}\index{melspec@\texttt{MELSPEC}}. -Alternatively, log filterbank parameters can be generated by setting the target -kind to \texttt{FBANK}. - - -\mysect{Vocal Tract Length Normalisation}{vtln} - -A simple speaker normalisation technique can be implemented by -modifying the filterbank analysis described in the previous section. -Vocal tract length normalisation (VTLN) aims to compensate for the -fact that speakers have vocal tracts of different sizes. VTLN can be -implemented by warping the frequency axis in the filterbank analysis. -In HTK simple linear frequency warping is supported. The warping -factor~$\alpha$ is controlled by the configuration variable -\texttt{WARPFREQ}\index{melspec@\texttt{WARPFREQ}}. Here values of -$\alpha < 1.0$ correspond to a compression of the frequency axis. As -the warping would lead to some filters being placed outside the -analysis frequency range, the simple linear warping function is -modified at the upper and lower boundaries. The result is that the -lower boundary frequency of the analysis -(\texttt{LOFREQ}\index{melspec@\texttt{LOFREQ}}) and the upper -boundary frequency (\texttt{HIFREQ}\index{melspec@\texttt{HIFREQ}}) -are always mapped to themselves. The regions in which the warping -function deviates from the linear warping with factor~$\alpha$ are -controlled with the two configuration variables -(\texttt{WARPLCUTOFF}\index{melspec@\texttt{WARPLCUTOFF}}) and -(\texttt{WARPUCUTOFF}\index{melspec@\texttt{WARPUCUTOFF}}). -Figure~\href{f:vtlnpiecewise} shows the overall shape of the resulting -piece-wise linear warping functions. - -\centrefig{vtlnpiecewise}{60}{Frequency Warping} - -The warping factor~$\alpha$ can for example be found using a search -procedure that compares likelihoods at different warping factors. A -typical procedure would involve recognising an utterance with -$\alpha=1.0$ and then performing forced alignment of the hypothesis -for all warping factors in the range $0.8 - 1.2$. The factor that -gives the highest likelihood is selected as the final warping factor. -Instead of estimating a separate warping factor for each utterance, -large units can be used by for example estimating only one~$\alpha$ -per speaker. - -Vocal tract length normalisation can be applied in testing as well as -in training the acoustic models. - -\mysect{Cepstral Features}{cepstrum} - -Most often, however, cepstral parameters are required -and these are indicated by setting the target kind to \texttt{MFCC} standing -for Mel-Frequency Cepstral Coefficients (MFCCs). These are calculated from the -log filterbank amplitudes $\{m_j\}$ using the Discrete Cosine Transform -\hequation{ - c_i = \sqrt{\frac{2}{N}} \sum_{j=1}^N m_j \cos \left( \frac{\pi i}{N}(j-0.5) \right) -}{dct} -where $N$ is the number of filterbank channels set by the configuration -parameter \texttt{NUMCHANS}\index{numchans@\texttt{NUMCHANS}}. The required -number of cepstral coefficients is set by -\texttt{NUMCEPS}\index{numceps@\texttt{NUMCEPS}} as in the linear prediction -case. Liftering can also be applied to MFCCs using the -\texttt{CEPLIFTER}\index{ceplifter@\texttt{CEPLIFTER}} configuration parameter -(see equation~\ref{e:ceplifter}). - -MFCCs are the parameterisation of choice for many speech recognition applications. -They give good discrimination and lend themselves to a number of manipulations. -In particular, the effect of inserting a transmission channel on the input -speech is to multiply the speech spectrum by the channel transfer function. -In the log cepstral domain, this multiplication becomes a simple addition which -can be removed by subtracting the cepstral mean from all input vectors. -In practice, of course, the mean has to be estimated over a limited amount -of speech data so the subtraction will not be perfect. Nevertheless, this -simple technique is very effective in practice where it -compensates for long-term spectral effects such as those caused by different -microphones and audio channels. To perform this -so-called \textit{Cepstral Mean Normalisation} (CMN) in \HTK\, it is only necessary -to add the \texttt{\_Z}\index{qualifiers!aaaz@\texttt{\_Z}} qualifier to the -target parameter kind. The mean is estimated by computing the average of -each cepstral parameter across each input speech file. Since this cannot be done -with live audio, cepstral mean compensation is not supported for this case. -\index{cepstral mean normalisation} - -In addition to the mean normalisation the variance of the data can be -normalised. For improved robustness both mean and variance of the data -should be calculated on a larger units (e.g.\ on all the data from a -speaker instead of just on a single utterance). To use -speaker-/cluster-based normalisation the mean and variance estimates -are computed offline before the actual recognition and stored in -separate files (two files per cluster). The configuration variables -\texttt{CMEANDIR}\index{numchans@\texttt{CMEANDIR}} and -\texttt{VARSCALEDIR}\index{numchans@\texttt{VARSCALEDIR}} point to the -directories where these files are stored. To find the actual filename -a second set of variables -(\texttt{CMEANMASK}\index{numchans@\texttt{CMEANMASK}} and -\texttt{VARSCALEMASK}\index{numchans@\texttt{VARSCALEMASK}}) has to be -specified. These masks are regular expressions in which you can use -the special characters \texttt{?}, \texttt{*} and \texttt{\%}. The -appropriate mask is matched against the filename of the file to be -recognised and the substring that was matched against the \texttt{\%} -characters is used as the filename of the normalisation file. An -example config setting is: - -\begin{verbatim} -CMEANDIR = /data/eval01/plp/cmn -CMEANMASK = %%%%%%%%%%_* -VARSCALEDIR = /data/eval01/plp/cvn -VARSCALEMASK = %%%%%%%%%%_* -VARSCALEFN = /data/eval01/plp/globvar -\end{verbatim} - -So, if the file \verb|sw1-4930-B_4930Bx-sw1_000126_000439.plp| is to be -recognised then the normalisation estimates would be loaded from the -following files: - -\begin{verbatim} -/data/eval01/plp/cmn/sw1-4930-B -/data/eval01/plp/cvn/sw1-4930-B -\end{verbatim} - -The file specified by -\texttt{VARSCALEFN}\index{numchans@\texttt{VARSCALEFN}} contains the -global target variance vector, i.e. the variance of the data is first -normalised to 1.0 based on the estimate in the appropriate file in -\texttt{VARSCALEDIR}\index{numchans@\texttt{VARSCALEDIR}} and then -scaled to the target variance given in -\texttt{VARSCALEFN}\index{numchans@\texttt{VARSCALEFN}}. - -The format of the files is very simple and each of them just contains -one vector. Note that in the case of the cepstral mean only the static -coefficients will be normalised. A cmn file could for example look like: - -\begin{verbatim} - - 13 --10.285290 -9.484871 -6.454639 ... -\end{verbatim} - - -The cepstral variance normalised always applies to the full -observation vector after all qualifiers like delta and acceleration -coefficients have been added, e.g.: - -\begin{verbatim} - - 39 -33.543018 31.241779 36.076199 ... -\end{verbatim} - -The global variance vector will always have the same number of -dimensions as the cvn vector, e.g.: - -\begin{verbatim} - 39 - 2.974308e+01 4.143743e+01 3.819999e+01 ... -\end{verbatim} - -These estimates can be generated using \htool{HCompV}. See the -reference section for details. - - -\mysect{Perceptual Linear Prediction}{plp} - -An alternative to the Mel-Frequency Cepstral Coefficients is the use -of Perceptual Linear Prediction (PLP) coefficients. - -As implemented in HTK the PLP feature extraction is based on the -standard mel-frequency filterbank (possibly warped). The mel -filterbank coefficients are weighted by an equal-loudness curve and -then compressed by taking the cubic root.\footnote{the degree of - compression can be controlled by setting the configuration parameter - \texttt{COMPRESSFACT}\index{enormalise@\texttt{COMPRESSFACT}} which - is the power to which the amplitudes are raised and defaults to - 0.33)} From the resulting auditory spectrum LP coefficients are -estimated which are then converted to cepstral coefficients in the -normal way (see above). - - -\mysect{Energy Measures}{energy} - -\index{speech input!energy measures} -To augment the spectral parameters derived from linear prediction or -mel-filterbank analysis, an energy term can be appended by including the -qualifier \texttt{\_E}\index{qualifiers!aaae@\texttt{\_E}} in the target kind. -The energy is computed as the log of the signal energy, that is, for speech -samples $\{s_n, n=1,N \}$ -\hequation{ - E = log \sum_{n=1}^N s_n^2 -}{logenergy} - -This log energy measure can be normalised to the range $-E_{min}..1.0$ by -setting the Boolean configuration parameter -\texttt{ENORMALISE}\index{enormalise@\texttt{ENORMALISE}} to true (default -setting). This -normalisation is implemented by subtracting the maximum value of $E$ in the -utterance and adding $1.0$. -Note that energy normalisation is incompatible with live audio -input and in such circumstances the configuration variable \texttt{ENORMALISE} -should be explicitly set false. -The lowest energy in the utterance can be clamped using the configuration -parameter -\texttt{SILFLOOR}\index{silfloor@\texttt{SILFLOOR}} which gives the ratio -between the maximum and minimum energies in the utterance in dB. Its default -value is 50dB. -Finally, the overall log energy can be arbitrarily scaled by the value of the -configuration parameter \texttt{ESCALE}\index{escale@\texttt{ESCALE}} whose -default is $0.1$. \index{silence floor} - -When calculating energy for LPC-derived parameterisations, the default is to -use the zero-th delay autocorrelation coefficient ($r_0$). However, this means -that the energy is calculated after windowing and pre-emphasis. If the -configuration parameter \texttt{RAWENERGY}\index{rawenergy@\texttt{RAWENERGY}} -is set true, however, then energy is calculated separately before any windowing -or pre-emphasis regardless of the requested parameterisation\footnote{ In any -event, setting the compatibility variable \texttt{V1COMPAT} to true in -\htool{HPARM} will ensure that the calculation of energy is compatible with -that computed by the Version 1 tool \htool{HCode}. }. - -In addition to, or in place of, the log energy, the qualifier -\texttt{\_O}\index{qualifiers!aaao@\texttt{\_O}} can be added to a target kind -to indicate that the 0'th cepstral parameter $C_0$ is to be appended. This -qualifier is only valid if the target kind is \texttt{MFCC}. Unlike earlier -versions of \HTK\, scaling factors set by the configuration variable -\texttt{ESCALE} are not applied to $C_0$\footnote{ Unless \texttt{V1COMPAT} is -set to true. }. - -\mysect{Delta, Acceleration and Third Differential Coefficients}{delta} - -\index{speech input!dynamic coefficients} -The performance of a speech recognition system can be greatly enhanced by -adding time derivatives to the basic static parameters. In \HTK, these are -indicated by attaching qualifiers to the basic parameter kind. The qualifier -\texttt{\_D} indicates that first order regression coefficients (referred to as -delta coefficients) are appended, the qualifier -\texttt{\_A}\index{qualifiers!aaaa@\texttt{\_A}} indicates that second order -regression coefficients (referred to as acceleration coefficients) and - the qualifier -\texttt{\_T}\index{qualifiers!aaaa@\texttt{\_T}} indicates that third order -regression coefficients (referred to as third differential coefficients) are -appended. The \texttt{\_A} qualifier cannot be used without also using the -\texttt{\_D}\index{qualifiers!aaad@\texttt{\_D}} qualifier. Similarly -the \texttt{\_T} qualifier cannot be used without also using the -\texttt{\_D} and \texttt{\_A} qualifiers. - -The delta coefficients\index{delta coefficients} are computed using the -following regression formula\index{regression formula} -\hequation{ - d_t = \frac{ \sum_{\theta =1}^\Theta \theta(c_{t+\theta} - c_{t-\theta}) }{ - 2 \sum_{\theta = 1}^\Theta \theta^2 } -}{deltas} -where $d_t$ is a delta coefficient at time $t$ computed in terms of the -corresponding static coefficients $c_{t-\Theta}$ to $c_{t+\Theta}$. The value -of $\Theta$ is set using the configuration parameter -\texttt{DELTAWINDOW}\index{deltawindow@\texttt{DELTAWINDOW}}. The same formula -is applied to the delta coefficients to obtain acceleration coefficients except -that in this case the window size is set by -\texttt{ACCWINDOW}\index{accwindow@\texttt{ACCWINDOW}}. Similarly -the third differentials use \texttt{THIRDWINDOW}. Since -equation~\ref{e:deltas} relies on past and future speech parameter values, -some modification is needed at the beginning and end of the speech. The -default behaviour is to replicate the first or last vector as needed to fill -the regression window. - -In older version 1.5 of \HTK\ and earlier, this end-effect problem was solved -by using simple -first order differences at the start and end of the speech, that is -\begin{equation} - d_t = c_{t+1} - c_t,\;\;\; t<\Theta -\end{equation} -and -\begin{equation} - d_t = c_t - c_{t-1}, \;\;\; t \geq T-\Theta -\end{equation} -where $T$ is the length of the data file. If required, this older behaviour -can be restored by setting the configuration variable -\texttt{V1COMPAT}\index{v1compat@\texttt{V1COMPAT}} -to true in \htool{HParm}. - -For some purposes, it is useful to use simple differences throughout. This -can be achieved by setting the configuration -variable \texttt{SIMPLEDIFFS}\index{simplediffs@\texttt{SIMPLEDIFFS}} -to true in \htool{HParm}. In this case, just the end-points of the delta window -are used, i.e. -\hequation{ - d_t = \frac{ (c_{t+\Theta} - c_{t-\Theta}) }{ - 2 \Theta} -}{simdiffs} -\index{simple differences} - -When delta and acceleration coefficients are requested, they are computed for -all static parameters including energy if present. In some applications, the -absolute energy is not useful but time derivatives of the energy may be. By -including the \texttt{\_E} qualifier together with the -\texttt{\_N}\index{qualifiers!aaan@\texttt{\_N}} qualifier, the absolute energy -is suppressed leaving just the delta and acceleration coefficients of the -energy. - -\mysect{Storage of Parameter Files}{parmstore} - -Whereas \HTK\ can handle waveform data in a variety of file formats, -all parameterised speech data is stored externally in either native -\HTK\ format data files or Entropic Esignal format files. -Entropic ESPS format is no longer supported directly, but input and output -filters can be used to convert ESPS to Esignal format on input and -Esignal to ESPS on output. - -\subsection{\HTK\ Format Parameter Files} - -\HTK\ format files consist of a contiguous sequence of \textit{samples} -preceded by a header. Each sample is a vector of either 2-byte integers or -4-byte floats. 2-byte integers are used for compressed forms as described -below and for vector quantised data as described later in -section~\ref{s:vquant}. \HTK\ format data files can also be used to store -speech waveforms as described in section~\ref{s:waveform}. \index{file -formats!HTK} - -The \HTK\ file format header is 12 bytes long and contains the following data -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{nSamples}\>-- number of samples in file (4-byte integer) \\ -\>\texttt{sampPeriod}\>-- sample period in 100ns units (4-byte integer) \\ -\>\texttt{sampSize}\>-- number of bytes per sample (2-byte integer) \\ -\>\texttt{parmKind}\>-- a code indicating the sample kind (2-byte integer) -\end{tabbing} -The parameter kind\index{parameter kind} consists of a 6 bit -code representing the basic parameter kind plus additional bits for -each of the possible qualifiers\index{qualifiers}. The basic parameter kind codes are -\begin{tabbing} -++++\= +++ \= ++++++++ \= \kill -\>0 \> \texttt{WAVEFORM} \> sampled waveform \\ -\>1 \> \texttt{LPC} \> linear prediction filter coefficients \\ -\>2 \> \texttt{LPREFC} \> linear prediction reflection coefficients \\ -\>3 \> \texttt{LPCEPSTRA} \> LPC cepstral coefficients \\ -\>4 \> \texttt{LPDELCEP} \> LPC cepstra plus delta coefficients \\ -\>5 \> \texttt{IREFC} \> LPC reflection coef in 16 bit integer format \\ -\>6 \> \texttt{MFCC} \> mel-frequency cepstral coefficients \\ -\>7 \> \texttt{FBANK} \> log mel-filter bank channel outputs \\ -\>8 \> \texttt{MELSPEC} \> linear mel-filter bank channel outputs \\ -\>9 \> \texttt{USER} \> user defined sample kind \\ -\>10 \> \texttt{DISCRETE} \> vector quantised data \\ -\>11 \> \texttt{PLP} \> PLP cepstral coefficients \\ -\end{tabbing} -and the bit-encoding for the qualifiers (in octal) is -\begin{tabbing} -++++\= +++ \= ++++++++ \= \kill -\>\texttt{\_E} \> 000100 \> has energy \\ -\>\texttt{\_N} \> 000200 \> absolute energy suppressed \\ -\>\texttt{\_D} \> 000400 \> has delta coefficients \\ -\>\texttt{\_A} \> 001000 \> has acceleration coefficients\\ -\>\texttt{\_C} \> 002000 \> is compressed \\ -\>\texttt{\_Z} \> 004000 \> has zero mean static coef. \\ -\>\texttt{\_K} \> 010000 \> has CRC checksum \\ -\>\texttt{\_O} \> 020000 \> has 0'th cepstral coef. \\ -\>\texttt{\_V} \> 040000 \> has VQ data \\ -\>\texttt{\_T} \> 100000 \> has third differential coef. \\ -\end{tabbing}\index{qualifiers!codes} -The \texttt{\_A} qualifier can only be specified when \texttt{\_D} -is also specified. -The \texttt{\_N} qualifier is only valid when both energy and delta -coefficients are present. -The sample kind \texttt{LPDELCEP} is identical to \texttt{LPCEPSTRA\_D} -and is retained for compatibility with older versions of \HTK. -The \texttt{\_C}\index{qualifiers!aaac@\texttt{\_C}} and -\texttt{\_K}\index{qualifiers!aaak@\texttt{\_K}} only exist in external files. Compressed -files are always decompressed on loading and any attached CRC -is checked and removed. An external file can contain both an energy -term and a 0'th order cepstral coefficient. These may be retained -on loading but normally one or the other is discarded\footnote{ -Some applications may require the 0'th order cepstral coefficient -in order to recover the filterbank coefficients from the cepstral -coefficients.}. - -\putfig{HTKFormat}{130}{Parameter Vector Layout in \HTK\ Format Files} - -All parameterised forms of \HTK\ data files consist of a sequence of vectors. -Each vector is organised as shown by the examples in Fig~\href{f:HTKFormat} -where various different qualified forms are listed. As can be seen, an energy -value if present immediately follows the base coefficients. If delta -coefficients are added, these follow the base coefficients and energy value. -Note that the base form \texttt{LPC} is used in this figure only as an example, -the same layout applies to all base sample kinds. If the 0'th order cepstral -coefficient is included as well as energy then it is inserted immediately -before the energy coefficient, otherwise it replaces it. - -For external storage of speech parameter files, two compression methods are -provided. For LP coding only, the \texttt{IREFC} parameter kind exploits the -fact that the reflection coefficients are bounded by $\pm 1$ and hence they can -be stored as scaled integers such that $+1.0$ is stored as $32767$ and $-1.0$ -is stored as $-32767$. For other types of parameterisation, a more general -compression facility indicated by the -\texttt{\_C}\index{qualifiers!aaac@\texttt{\_C}} qualifier is used. -\HTK\ compressed parameter files consist of a set of compressed parameter -vectors stored as shorts such that for parameter $x$ -\begin{eqnarray} -x_{short} & = & A*x_{float}-B \nonumber -\end{eqnarray} -The coefficients $A$ and $B$ are defined as -\begin{eqnarray} -A & = & 2*I/(x_{max}-x_{min}) \nonumber\\ -B & = & (x_{max}+x_{min})*I/(x_{max}-x_{min}) \nonumber -\end{eqnarray} -where $x_{max}$ is the maximum value of parameter $x$ in the whole file and -$x_{min}$ is the corresponding minimum. $I$ is the maximum range of a 2-byte -integer i.e.\ 32767. The values of $A$ and $B$ are stored as two floating -point vectors prepended to the start of the file immediately after the header. - -When a \HTK\ tool writes out a speech file to external storage, no further -signal conversions are performed. Thus, for most purposes, the target -parameter kind specifies both the required internal representation and the form -of the written output, if any. However, there is a distinction in the way that -the external data is actually stored. Firstly, it can be compressed as -described above by setting the configuration parameter \texttt{SAVECOMPRESSED} -to true. If the target kind is \texttt{LPREFC} then this compression is -implemented by converting to \texttt{IREFC} otherwise the general compression -algorithm described above is used. Secondly, in order to avoid data corruption -problems, externally stored \HTK\ parameter files can have a cyclic redundancy -checksum appended. This is indicated by the qualifier -\texttt{\_K}\index{qualifiers!aaak@\texttt{\_K}} and it is generated by setting -the configuration parameter \texttt{SAVEWITHCRC} to true. The principle tool -which uses these output conversions is \htool{HCopy} (see -section~\ref{s:UseHCopy}). - -\subsection{Esignal Format Parameter Files} - -\index{file formats!Esignal} -The default for parameter files is native \HTK\ format. However, \HTK\ tools -also support the Entropic Esignal format for both input and output. Esignal -replaces the Entropic ESPS file format. To ensure compatibility Entropic -provides conversion programs from ESPS to ESIG and vice versa. - -To indicate that a source file is in Esignal format the configuration -variable \texttt{SOURCEFORMAT}\index{sourceformat@\texttt{SOURCEFORMAT}} -should be set to \texttt{ESIG}. Alternatively, -\texttt{-F ESIG}\index{standard options!aaaf@\texttt{-F}} can be specified -as a command-line option. -To generate Esignal format output files, the configuration variable -\texttt{TARGETFORMAT} should be set to \texttt{ESIG} or the command line option -\texttt{-O ESIG} should be set. - -ESIG files consist of three parts: a preamble, a sequence of field -specifications called the field list and a sequence of records. The preamble -and the field list together constitute the header. The preamble is purely -ASCII. Currently it consists of 6 information items that are all terminated -by a new line. The information in the preamble is the following: -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{line 1}\>-- identification of the file format \\ -\>\texttt{line 2}\>-- version of the file format\\ -\>\texttt{line 3}\>-- architecture (ASCII, EDR1, EDR2, machine name)\\ -\>\texttt{line 4}\>-- preamble size (48 bytes)\\ -\>\texttt{line 5}\>-- total header size\\ -\>\texttt{line 6}\>-- record size\\ -\end{tabbing} -All ESIG files that are output by \HTK\ programs contain the following -global fields: -\begin{description} - \item[commandLine] the command-line used to generate the file; - \item[recordFreq] a double value that indicates the sample frequency - in Herz; - \item[startTime] a double value that indicates a time at which the first - sample is presumed to be starting; - \item[parmKind] a character string that indicates the full - type of parameters in the file, e.g: \texttt{MFCC\_E\_D}. - \item[source\_1] if the input file was an ESIG file this field includes the - header items in the input file. -\end{description} -After that there are field specifiers for the records. The first specifier -is for the basekind of the parameters, e.g: \texttt{MFCC}. Then for each -available qualifier there are additional specifiers. Possible specifiers are: -\begin{tabbing} -++++\= \kill -\>\texttt{zeroc} \\ -\>\texttt{energy}\\ -\>\texttt{delta}\\ -\>\texttt{delta\_zeroc} \\ -\>\texttt{delta\_energy}\\ -\>\texttt{accs}\\ -\>\texttt{accs\_zeroc} \\ -\>\texttt{accs\_energy}\\ -\end{tabbing}\index{qualifiers!ESIG field specifiers} -The data segments of the ESIG files have exactly the same format as the -the corresponding \HTK\ files. This format was described in the previous -section. - -\HTK\ can only input parameter files that have a valid parameter kind as value -of the header field \texttt{parmKind}. If this field does not exist or if the -value of this field does not contain a valid parameter kind, the file is -rejected. After the header has been read the file is treated as an \HTK\ file. - - -\mysect{Waveform File Formats}{waveform} - -For reading waveform data files, \HTK\ can support a variety of different -formats and these are all briefly described in this section. The default -speech file format is \HTK. If a different format is to be used, it can be -specified by setting the configuration parameter -\texttt{SOURCEFORMAT}\index{sourceformat@\texttt{SOURCEFORMAT}}. However, -since file formats need to be changed often, they can also be set individually -via the \texttt{-F}\index{standard options!aaaf@\texttt{-F}} command-line -option. This over-rides any setting of the \texttt{SOURCEFORMAT} configuration -parameter. - -Similarly for the output of waveforms, the format can be set using either the -configuration parameter \texttt{TARGETFORMAT} or the \texttt{-O} command-line -option. However, for output only native \HTK\ format (\texttt{HTK}), Esignal -format (\texttt{ESIG}) and headerless (\texttt{NOHEAD}) waveform files are -supported. - -The following sub-sections give a brief description of each of the waveform -file formats supported by \HTK. - -\subsection{HTK File Format} - -\index{file formats!HTK} -The \HTK\ file format for waveforms is identical to that described in -section~\ref{s:parmstore} above. It consists of a 12 byte header followed -by a sequence of 2 byte integer speech samples. For waveforms, the -\texttt{sampSize} field will be 2 and the \texttt{parmKind} field will be 0. -The \texttt{sampPeriod} field gives the sample period in 100ns units, hence for -example, it will have the value 1000 for speech files sampled at 10kHz and 625 -for speech files sampled at 16kHz. - -\subsection{Esignal File Format} - -\index{file formats!Esignal} -The Esignal file format for waveforms is similar to that described in -section~\ref{s:parmstore} above with the following exceptions. When reading an -ESIG waveform file the \HTK\ programs only check whether the record length -equals 2 and whether the datatype of the only field in the data records is -\texttt{SHORT}. The data field that is created on output of a waveform is -called \texttt{WAVEFORM}. - -\subsection{TIMIT File Format} - -\index{file formats!TIMIT} -The TIMIT format has the same structure as the HTK format except that the -12-byte header contains the following - -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{hdrSize}\>-- number of bytes in header ie 12 (2-byte integer) \\ -\>\texttt{version}\>-- version number (2-byte integer) \\ -\>\texttt{numChannels}\>-- number of channels (2-byte integer) \\ -\>\texttt{sampRate}\>-- sample rate (2-byte integer) \\ -\>\texttt{nSamples}\>-- number of samples in file (4-byte integer) -\end{tabbing} -TIMIT format data is used only on the prototype TIMIT CD ROM. - -\subsection{NIST File Format} - -\index{file formats!NIST} -The NIST file format is also referred to as the Sphere file format. -A NIST header consists of ASCII text. It begins with a label of the -form \texttt{NISTxx} where xx is a version code followed by the number -of bytes in the header. The remainder of the header consists of -name value pairs of which \HTK\ decodes the following -\begin{tabbing} -++ \= +++++++++++++ \= \kill -\>\texttt{sample\_rate} \>-- sample rate in Hz \\ -\>\texttt{sample\_n\_bytes} \>-- number of bytes in each sample \\ -\>\texttt{sample\_count} \>-- number of samples in file \\ -\>\texttt{sample\_byte\_format} \>-- byte order \\ -\>\texttt{sample\_coding} \>-- speech coding eg pcm, $\mu$law, shortpack \\ -\>\texttt{channels\_interleaved} \>-- for 2 channel data only -\end{tabbing} -The current NIST Sphere data format\index{NIST Sphere data format} subsumes a -variety of internal data organisations. HTK currently supports interleaved -$\mu$law used in Switchboard, Shortpack compression used in the original -version of WSJ0 and standard 16bit linear PCM as used in Resource Management, -TIMIT, etc. It does not currently support the Shorten compression format as -used in WSJ1 due to licensing restrictions. Hence, to read WSJ1, the files -must be converted using the NIST supplied decompression routines into standard -16 bit linear PCM. This is most conveniently done under UNIX by using the -decompression program as an input filter set via the environment variable -\texttt{HWAVEFILTER}\index{hwavefilter@\texttt{HWAVEFILTER}} (see -section~\ref{s:iopipes}). - -For interleaved $\mu$law as used in Switchboard, the default is to add the two -channels together. The left channel only can be obtained by setting the -environment variable \texttt{STEREOMODE} to \texttt{LEFT} and the right channel -only can be obtained by setting the environment variable \texttt{STEREOMODE} to -\texttt{RIGHT}. \index{mu law encoded files } - -\subsection{SCRIBE File Format} - -\index{file formats!SCRIBE} -The SCRIBE format is a subset of the standard laid down by the European Esprit -Programme SAM Project. SCRIBE data files are headerless and therefore consist -of just a sequence of 16 bit sample values. \HTK\ assumes by default that the -sample rate is 20kHz. The configuration parameter \texttt{SOURCERATE} should -be set to over-ride this. The byte ordering assumed for SCRIBE data files is -\texttt{VAX} (little-endian). - -\subsection{SDES1 File Format} - -\index{file formats!Sound Designer(SDES1)} -The SDES1 format refers to the ``Sound Designer I'' format defined by -Digidesign Inc in 1985 for multimedia and general audio applications. It is -used for storing short monoaural sound samples. The SDES1 header is complex -(1336 bytes) since it allows for associated display window information to be -stored in it as well as providing facilities for specifying repeat loops. The -HTK input routine for this format just picks out the following information -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{headerSize} \>-- size of header ie 1336 (2 byte integer) \\ -\>(182 byte filler) \\ -\>\texttt{fileSize} \>-- number of bytes of sampled data (4 byte integer)\\ -\>(832 byte filler) \\ -\>\texttt{sampRate} \>-- sample rate in Hz (4 byte integer) \\ -\>\texttt{sampPeriod} \>-- sample period in microseconds (4 byte integer) \\ -\>\texttt{sampSize} \>-- number of bits per sample ie 16 (2 byte integer) -\end{tabbing} - -\subsection{AIFF File Format} - -\index{file formats!Audio Interchange (AIFF)} -The AIFF format was defined by Apple Computer for storing monoaural and -multichannel sampled sounds. An AIFF file consists of a number of {\it -chunks}. A {\it Common} chunk contains the fundamental parameters of the sound -(sample rate, number of channels, etc) and a {\it Sound Data} chunk contains -sampled audio data. \HTK\ only partially supports AIFF since some of the -information in it is stored as floating point numbers. In particular, the -sample rate is stored in this form and to avoid portability problems, -\HTK\ ignores the given sample rate and assumes that it is 16kHz. If this -default rate is incorrect, then the true sample period should be -specified by setting the \texttt{SOURCERATE} configuration parameter. -Full details of the AIFF format are available from Apple Developer -Technical Support. - -\subsection{SUNAU8 File Format} - -\index{file formats!Sun audio (SUNAU8)} -The SUNAU8 format defines a subset of the ``.au'' and ``.snd'' audio file -format used by Sun and NeXT. An SUNAU8 speech data file consists of a header -followed by 8 bit $\mu$law encoded speech samples. The header is 28 bytes and -contains the following fields, each of which is 4 bytes -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{magicNumber} \>-- magic number 0x2e736e64 \\ -\>\texttt{dataLocation} \>-- offset to start of data \\ -\>\texttt{dataSize} \>-- number of bytes of data \\ -\>\texttt{dataFormat} \>-- data format code which is 1 for 8 bit $\mu$law \\ -\>\texttt{sampRate} \>-- a sample rate code which is always 8012.821 Hz \\ -\>\texttt{numChan} \>-- the number of channels \\ -\>\texttt{info} \>-- arbitrary character string min length 4 bytes -\end{tabbing} -No default byte ordering is assumed for this format. If the data source is -known to be different to the machine being used, then the environment variable -\texttt{BYTEORDER} must be set appropriately. Note that when used on Sun Sparc -machines with 16 bit audio device the sampling rate of 8012.821Hz is not -supported and playback will be performed at 8KHz. - -\subsection{OGI File Format} - -\index{file formats!OGI} -The OGI format is similar to TIMIT. The header contains the following - -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{hdrSize}\>-- number of bytes in header \\ -\>\texttt{version}\>-- version number (2-byte integer) \\ -\>\texttt{numChannels}\>-- number of channels (2-byte integer) \\ -\>\texttt{sampRate}\>-- sample rate (2-byte integer) \\ -\>\texttt{nSamples}\>-- number of samples in file (4-byte integer) \\ -\>\texttt{lendian}\>-- used to test for byte swapping (4-byte integer) -\end{tabbing} - -\subsection{WAV File Format}{} - -\index{file formats!WAV} -The WAV file format is a subset of Microsoft's RIFF specification for the -storage of multimedia files. A RIFF file starts out with a file header followed -by a sequence of data ``chunks''. A WAV file is often just a RIFF file with a -single ``WAVE'' chunk which consists of two sub-chunks - a ``fmt'' chunk -specifying the data format and a ``data'' chunk containing the actual sample -data. The WAV file header contains the following - -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{'RIFF'}\>-- RIFF file identification (4 bytes) \\ -\>\texttt{}\>-- length field (4 bytes)\\ -\>\texttt{'WAVE'}\>-- WAVE chunk identification (4 bytes) \\ -\>\texttt{'fmt '}\>-- format sub-chunk identification (4 bytes) \\ -\>\texttt{flength}\>-- length of format sub-chunk (4 byte integer) \\ -\>\texttt{format}\>-- format specifier (2 byte integer) \\ -\>\texttt{chans}\>-- number of channels (2 byte integer) \\ -\>\texttt{sampsRate}\>-- sample rate in Hz (4 byte integer) \\ -\>\texttt{bpsec}\>-- bytes per second (4 byte integer) \\ -\>\texttt{bpsample}\>-- bytes per sample (2 byte integer) \\ -\>\texttt{bpchan}\>-- bits per channel (2 byte integer) \\ -\>\texttt{'data'}\>-- data sub-chunk identification (4 bytes) \\ -\>\texttt{dlength}\>-- length of data sub-chunk (4 byte integer) -\end{tabbing} -Support is provided for 8-bit CCITT mu-law, 8-bit CCITT a-law, 8-bit PCM -linear and 16-bit PCM linear - all in stereo or mono (use of \texttt{STEREOMODE} -parameter as per NIST). The default byte ordering assumed for \texttt{WAV} -data files is \texttt{VAX} (little-endian). - -\subsection{ALIEN and NOHEAD File Formats} - -\index{file formats!ALIEN} -\index{file formats!NOHEAD} -\HTK\ tools can read speech waveform files with alien formats provided that -their overall structure is that of a header followed by data. This is done by -setting the format to \texttt{ALIEN} and setting the environment variable -\texttt{HEADERSIZE} to the number of bytes in the header. \HTK\ will then -attempt to infer the rest of the information it needs. However, if input is -from a pipe, then the number of samples expected must be set using the -environment variable \texttt{NSAMPLES}\index{nsamples@\texttt{NSAMPLES}}. The -sample rate of the source file is defined by the configuration parameter -\texttt{SOURCERATE} as described in section~\ref{s:sigproc}. If the file has -no header then the format \texttt{NOHEAD} may be specified instead of -\texttt{ALIEN}\index{alien@\texttt{ALIEN}} in which case -\texttt{HEADERSIZE}\index{headersize@\texttt{HEADERSIZE}} is assumed to be -zero. - -\mysect{Direct Audio Input/Output}{audioio} - -\index{speech input!direct audio} -Many \HTK\ tools, particularly recognition tools, can input speech waveform -data directly from an audio device. The basic mechanism for doing this is to -simply specify the \texttt{SOURCEKIND} as being -\texttt{HAUDIO}\index{haudio@\texttt{HAUDIO}} following which speech samples -will be read directly from the host computer's audio input device. - -Note that for live audio input, the configuration variable -\texttt{ENORMALISE} should be set to false both during training and recognition. Energy normalisation cannot -be used with live audio input, and the default setting for this variable -is \texttt{TRUE}. When training models for live audio input, be sure to -set \texttt{ENORMALISE} to false. If you have existing models trained with -\texttt{ENORMALISE} set to true, you can retrain them using {\it single-pass -retraining} (see section~\ref{s:singlepass}). - -When using direct audio input\index{direct audio input}, the input sampling -rate may be set explicitly using the configuration parameter -\texttt{SOURCERATE}, \index{sourcerate@\texttt{SOURCERATE}} otherwise -\HTK\ will assume that it has been set by some external means such as an -audio control panel. In the latter case, it must be possible for -\htool{HAudio} to obtain the sample rate from the audio driver -otherwise an error message will be generated. - -Although the detailed control of audio hardware is typically machine dependent, -\HTK\ provides a number of Boolean configuration variables to request specific -input and output sources. These are indicated by the following table -\begin{center}\index{audio source}\index{audio output} -\begin{tabular}{|c|l|} \hline -Variable & Source/Sink \\ \hline -\texttt{LINEIN} & line input \\ -\texttt{MICIN} & microphone input \\ -\texttt{LINEOUT} & line output \\ -\texttt{PHONESOUT} & headphones output \\ -\texttt{SPEAKEROUT} & speaker output \\ \hline -\end{tabular} -\end{center} -\index{linein@\texttt{LINEIN}} -\index{micin@\texttt{MICIN}} -\index{lineout@\texttt{LINEOUT}} -\index{phonesout@\texttt{PHONESOUT}} -\index{speakerout@\texttt{SPEAKEROUT}} - -The major complication in using direct audio is in starting and stopping the -input device. The simplest approach to this is for \HTK\ tools to take direct -control and, for example, enable the audio input for a fixed period determined -via a command line option. However, the \htool{HAudio}/\htool{HParm} modules -provides two more powerful built-in facilities for audio input control. - -\index{direct audio input!silence detector!speech detector} -The first method of audio input control involves the use of an automatic -energy-based speech/silence detector which is enabled by setting the -configuration parameter -\texttt{USESILDET}\index{usesildet@\texttt{USESILDET}} to true. Note that -the speech/silence detector can also operate on waveform input files. - -The automatic speech/silence detector uses a two level algorithm which first -classifies each frame of data as either speech or silence and then applies a -heuristic to determine the start and end of each utterance.\index{HParm!SILENERGY} \index{HParm!SPEECHTHRESH}The detector classifies each -frame as speech or silence based solely on the log energy of the signal. When -the energy value exceeds a threshold the frame is marked as speech otherwise as -silence. The threshold is made up of two components both of which can be set by -configuration variables. The first component represents the mean energy level -of silence and can be set explicitly via the configuration -parameter \texttt{SILENERGY}. However, it is more usual to take a measurement -from the environment directly. Setting the configuration parameter -\texttt{MEASURESIL} to true will cause the detector to calibrate its parameters -from the current acoustic environment just prior to sampling. The second -threshold component is the level above which frames are classified as speech -(\texttt{SPEECHTHRESH}) . -\index{HParm!SPCSEQCOUNT} \index{HParm!SPCGLCHCOUNT} \index{HParm!SILGLCHCOUNT} -Once each frame has been classified as speech or silence they are grouped into -windows consisting of \texttt{SPCSEQCOUNT} consecutive frames. When the number -of frames marked as silence within each window falls below a glitch count the -whole window is classed as speech. Two separate glitch counts are used, {\tt -SPCGLCHCOUNT} before speech onset is detected and {\tt SILGLCHCOUNT} whilst -searching for the end of the utterance. This allows the algorithm to take -account of the tendancy for the end of an utterance to be somewhat quieter than -the beginning. -\index{HParm!SILMARGIN} \index{HParm!SILSEQCOUNT} -Finally, a top level heuristic is used to determine the start and end of the -utterance. The heuristic defines the start of speech as the beginning of the -first window classified as speech. The actual start of the processed utterance -is \texttt{SILMARGIN} frames before the detected start of speech to ensure that -when the speech detector triggers slightly late the recognition accuracy is not -affected. Once the start of the utterance has been found the detector searches -for \texttt{SILSEQCOUNT} windows all classified as silence and sets the end of -speech to be the end of the last window classified as speech. Once again the -processed utterance is extended \texttt{SILMARGIN} frames to ensure that if the -silence detector has triggered slightly early the whole of the speech is still -available for further processing. - -\centrefig{endpointer}{120}{Endpointer Parameters} - -Fig~\href{f:endpointer} shows an example of the speech/silence detection -process. The waveform data is first classified as speech or silence at frame -and then at window level before finally the start and end of the utterance are -marked. In the example, audio input starts at point {\tt A} and is stopped -automatically at point {\tt H}. The start of speech, {\tt C}, occurs when a -window of \texttt{SPCSEQCOUNT} frames are classified as speech and the start of -the utterance occurs \texttt{SILMARGIN} frames earlier at {\tt B}. The period -of silence from {\tt D} to {\tt E} is not marked as the end of the utterance -because it is shorter than \texttt{SILSEQCOUNT}. However after point {\tt F} -no more windows are classified as speech (although a few frames are) and so -this is marked as the end of speech with the end of the utterance extended to -{\tt G}. - -\index{direct audio input!signal control!keypress} -The second built-in mechanism for controlling audio input is by arranging for -a signal to be sent from some other process. Sending the signal for the first -time starts the audio device. If the speech detector is not enabled then -sampling starts immediately and is stopped by sending the signal a second -time. If automatic speech/silence detection is enabled, then the first signal -starts the detector. Sampling stops immediately when a second signal is -received or when silence is detected. The signal number is set using the -configuration parameter \texttt{AUDIOSIG}\index{audiosig@\texttt{AUDIOSIG}}. -Keypress control operates in a similar fashion and is enabled by setting the -configuration parameter \texttt{AUDIOSIG} to a negative number. In this mode -an initial keypress will be required to start sampling/speech detection and -a second keypress will stop sampling immediately. - -Audio output\index{audio output} is also supported by \HTK. There are no -generic facilities for output and the precise behaviour will depend on the tool -used. It should be noted, however, that the audio input facilities provided by -\htool{HAudio} include provision for attaching a \textit{replay buffer} to an -audio input channel. This is typically used to store the last few seconds of -each input to a recognition tool in a circular buffer so that the last -utterance input can be replayed on demand. - - -\mysect{Multiple Input Streams}{streams} - -\index{multiple streams} -As noted in section~\ref{s:genio}, \HTK\ tools regard the input observation -sequence as being divided into a number of independent \textit{data streams}. -For building continuous density HMM systems, this facility is of limited -use and by far the most common case is that of a single data stream. -However, when building tied-mixture systems or when -using vector quantisation, a more uniform coverage of the -acoustic space is obtained by separating energy, deltas, etc., into -separate streams. - -This separation of parameter vectors into streams takes place at -the point where the vectors -are extracted from the converted input file or audio device and -transformed into an observation. The tools for HMM construction -and for recognition thus view the input data as a sequence of observations -but note that this is entirely internal to \HTK. Externally data is -always stored as a single sequence of parameter vectors. - -When multiple streams\index{multiple streams!rules for} are required, -the division of the parameter vectors is performed automatically -based on the parameter kind. This works according -to the following rules. - -\begin{description} -\item[1 stream] single parameter vector. This is the default case. -\item[2 streams] if the parameter vector contains energy terms, then - they are extracted and placed in stream 2. Stream 1 contains the - remaining static coefficients and their deltas and accelerations, - if any. Otherwise, - the parameter vector must have appended delta - coefficients and no appended acceleration coefficients. - The vector is then split so that the static - coefficients form stream 1 and - the corresponding delta coefficients form stream 2. -\item[3 streams] - if the parameter vector has acceleration coefficients, then vector - is split with static coefficients plus any energy in stream 1, - delta coefficients plus any delta energy in stream 2 and - acceleration coefficients plus any acceleration energy in stream 3. - Otherwise, the parameter vector must include log energy and - must have appended delta coefficients. The vector is then split - into three parts so that the static coefficients form stream - 1, the delta coefficients form stream 2, and the log energy - and delta log energy are combined to form stream 3. -\item[4 streams] - the parameter vector must include log energy and - must have appended delta and acceleration coefficients. - The vector is split into 4 parts so that the static coefficients form stream - 1, the delta coefficients form stream 2, the acceleration - coefficients form stream 3 and the log energy, delta energy - and acceleration energy are combined to form stream 4. -\end{description} -In all cases, -the static log energy can be -suppressed (via the \texttt{\_N}\index{qualifiers!aaan@\texttt{\_N}} qualifier). -If none of the above rules apply for some required number of -streams, then the parameter vector is simply incompatible with that -form of observation. For example, the parameter kind \texttt{LPC\_D\_A} -cannot be split into 2 streams, instead 3 streams should be used. -\index{energy suppression} - -\putfig{streams}{100}{Example Stream Construction} - -Fig.~\href{f:streams} illustrates the way that streams are constructed -for a number of common cases. As earlier, the choice of \texttt{LPC} -as the static coefficients is purely for illustration and the same -mechanism applies to all base parameter kinds. - -As discussed further in the next section, -multiple data streams are often used with vector quantised data. In this -case, each VQ symbol per input sample is placed in a separate data stream. - -\mysect{Vector Quantisation}{vquant} - -Although \HTK\ was designed primarily for building continuous density HMM -systems, it also supports discrete density HMMs. Discrete HMMs are -particularly useful for modelling data which is naturally symbolic. They can -also be used with continuous signals such as speech by quantising each speech -vector to give a unique VQ symbol for each input frame. The \HTK\ module -\htool{HVQ} provides a basic facility for performing this vector -quantisation\index{vector quantisation}. The VQ table (or codebook) can be -constructed using the \HTK\ tool \htool{HQuant}. - -When used with speech, the principle justification for using discrete HMMs is -the much reduced computation. However, the use of vector quantisation -introduces errors and it can lead to rather fragile systems. For this reason, -the use of continuous density systems is generally preferred. To facilitate -the use of continuous density systems when there are computational constraints, -\HTK\ also allows VQ to be used as the basis for pre-selecting a subset of -Gaussian\index{Gaussian pre-selection} components for evaluation at each time -frame. - -\sidefig{VQUse}{65}{Using Vector Quantisation}{2}{ Fig.~\href{f:VQUse} -illustrates the different ways that VQ can be used in \HTK\ for a single data -stream. For multiple streams, the same principles are applied to each stream -individually. A converted speech waveform or file of parameter vectors can -have VQ indices attached simply by specifying the name of a VQ table using the -configuration parameter \texttt{VQTABLE}\index{vqtable@\texttt{VQTABLE}} and by -adding the \texttt{\_V} qualifier to the target kind. The effect of this is -that each \textit{observation} passed to a recogniser can include both a -conventional parameter vector and a VQ index. \index{vector quantisation!uses -of} \index{qualifiers!aaav@\texttt{\_V}} For continuous density HMM systems, a -possible use of this might be to preselect Gaussians for evaluation (but note -that \HTK\ does not currently support this facility). - -When used with a discrete HMM system, the -continuous parameter vectors are ignored and only the VQ -indices are used. -For training and evaluating discrete HMMs, it is convenient to -store speech data in vector quantised form. This is done using -the tool \htool{HCopy} to read in and vector quantise each speech file. -Normally, \htool{HCopy} copies the target form directly into the -output file. However, if the configuration parameter \texttt{SAVEASVQ} -is set, then it will -store only the VQ indices and mark the kind of the newly created -file as \texttt{DISCRETE}. Discrete files created in this -way can be read -directly by \htool{HParm} and the VQ symbols passed directly to -a tool as indicated by the lower part of Fig.~\href{f:VQUse}. -} -\index{saveasvq@\texttt{SAVEASVQ}} -\index{discrete@\texttt{DISCRETE}} - -\index{vector quantisation!distance metrics} -\htool{HVQ} supports three types of distance metric and two organisations of -VQ codebook. Each codebook consists of a collection of nodes where each -node has a mean vector and optionally a covariance matrix or diagonal -variance vector. The corresponding distance metric used for each of these -is simple Euclidean, full covariance Mahalanobis or diagonal covariance -Mahalanobis. The codebook nodes are arranged in -the form of a simple linear table -or as a binary tree. In the linear case, the input vector is compared with -every node in turn and the nearest determines the VQ index. In the binary -tree case, each non-terminal node has a left and a right daughter. Starting -with the top-most root node, the input is compared with the left and right -daughter node and the nearest is selected. This process is repeated until a -terminal node is reached. \index{vector quantisation!type of} - - -\index{vector quantisation!code book external format}\index{files!VQ codebook} -VQ Tables are stored externally in text files consisting of a header -followed by a sequence of node entries. The header consists of the -following information -\begin{tabbing} -++ \= +++++++ \= + \= \kill -\> \textit{magic}\> --\> a magic number usually the original parameter kind \\ -\> \textit{type} \> --\> 0 = linear tree, 1 = binary tree \\ -\> \textit{mode} \> --\> 1 = diagonal covariance Mahalanobis \\ -\>\>\> 2 = full covariance Mahalanobis \\ -\>\>\> 5 = Euclidean \\ -\> \textit{numNodes} \> --\> total number of nodes in the codebook \\ -\> \textit{numS}\> --\> number of independent data streams \\ -\> \textit{sw1,sw2,...}\> --\> width of each data stream \\ -\end{tabbing} -Every node has a unique integer identifier and consists of the -following -\begin{tabbing} -++ \= +++++++ \= + \= \kill -\> \textit{stream}\> --\>stream number for this node \\ -\> \textit{vqidx}\> --\>VQ index for this node (0 if non-terminal) \\ -\> \textit{nodeId}\> --\>integer id of this node \\ -\> \textit{leftId}\> --\>integer id of left daughter node \\ -\> \textit{rightId}\> --\>integer id of right daughter node \\ -\> \textit{mean}\> --\>mean vector \\ -\> \textit{cov}\> --\>diagonal variance or full covariance \\ -\end{tabbing} -The inclusion of the optional variance vector or covariance matrix depends -on the mode in the header. If present they are stored in inverse form. -In a binary tree, the root id is always 1. In linear codebooks, the -left and right daughter node id's are ignored. - -\mysect{Viewing Speech with \htool{HList}}{UseHList} - -\index{speech input!monitoring} -As mentioned in section~\ref{s:genio}, the tool \htool{HList}\index{hlist@\htool{HList}} provides -a dual r\^{o}le in \HTK. Firstly, it can be used for examining the contents -of speech data files. -In general, \htool{HList} displays three types of information -\begin{enumerate} - \item \textit{source header}: requested using the \texttt{-h} option - \item \textit{target header}: requested using the \texttt{-t} option - \item \textit{target data}: printed by default. The begin and end samples of the -displayed data can be specified using the \texttt{-s} and \texttt{-e} options. -\end{enumerate} -When the default configuration parameters are used, -no conversions are applied and the target -data is identical to the contents of the file. - -\index{files!listing contents} -As an example, suppose that the file called \texttt{timit.wav} holds speech -waveform data using the TIMIT format. The command -\begin{verbatim} - HList -h -e 49 -F TIMIT timit.wav -\end{verbatim} -would display the source header information and the first 50 samples of the -file. The output would look something like the following - -\begin{list}{}{\setlength{\leftmargin}{-1cm}} -\item -\begin{verbatim} - ----------------------------- Source: timit.wav --------------------------- - Sample Bytes: 2 Sample Kind: WAVEFORM - Num Comps: 1 Sample Period: 62.5 us - Num Samples: 31437 File Format: TIMIT - ------------------------------ Samples: 0->49 ----------------------------- - 0: 8 -4 -1 0 -2 -1 -3 -2 0 0 - 10: -1 0 -1 -2 -1 1 0 -1 -2 1 - 20: -2 0 0 0 2 1 -2 2 1 0 - 30: 1 0 0 -1 4 2 0 -1 4 0 - 40: 2 2 1 -1 -1 1 1 2 1 1 - ------------------------------------ END ---------------------------------- -\end{verbatim} -\end{list} -The source information confirms that the file contains \texttt{WAVEFORM} -data with 2 byte samples and 31437 samples in total. The sample period is -$62.5\mu s$ which corresponds to a 16kHz sample rate. -The displayed data is numerically small because it corresponds to leading silence. -Any part of the file could be viewed by suitable choice of the begin and end -sample indices. For example, -\begin{verbatim} - HList -s 5000 -e 5049 -F TIMIT timit.wav -\end{verbatim} -would display samples 5000 through to 5049. -The output might look like the following -\begin{list}{}{\setlength{\leftmargin}{-1cm}} -\item -\begin{verbatim} - ---------------------------- Samples: 5000->5049 -------------------------- - 5000: 85 -116 -159 -252 23 99 69 92 79 -166 - 5010: -100 -123 -111 48 -19 15 111 41 -126 -304 - 5020: -189 91 162 255 80 -134 -174 -55 57 155 - 5030: 90 -1 33 154 68 -149 -70 91 165 240 - 5040: 297 50 13 72 187 189 193 244 198 128 - ------------------------------------ END ---------------------------------- -\end{verbatim} -\end{list} - -The second use of \htool{HList} is to check that input conversions -are being performed properly. Suppose that the above TIMIT format file is -part of a database to be used for training a recogniser and that mel-frequency -cepstra are to be used along with energy and the first differential coefficients. -Suitable configuration parameters needed to achieve this might be as follows -\begin{verbatim} - # Wave -> MFCC config file - SOURCEFORMAT = TIMIT # same as -F TIMIT - TARGETKIND = MFCC_E_D # MFCC + Energy + Deltas - TARGETRATE = 100000 # 10ms frame rate - WINDOWSIZE = 200000 # 20ms window - NUMCHANS = 24 # num filterbank chans - NUMCEPS = 8 # compute c1 to c8 -\end{verbatim} -\htool{HList} can be used to check this. For example, typing -\begin{verbatim} - HList -C config -o -h -t -s 100 -e 104 -i 9 timit.wav -\end{verbatim} -will cause the waveform file to be converted, then the source header, -the target header and parameter vectors 100 through to 104 to be listed. -A typical output would be as follows -\begin{verbatim} - ------------------------------ Source: timit.wav --------------------------- - Sample Bytes: 2 Sample Kind: WAVEFORM - Num Comps: 1 Sample Period: 62.5 us - Num Samples: 31437 File Format: TIMIT - ------------------------------------ Target -------------------------------- - Sample Bytes: 72 Sample Kind: MFCC_E_D - Num Comps: 18 Sample Period: 10000.0 us - Num Samples: 195 File Format: HTK - -------------------------- Observation Structure --------------------------- - x: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 E - Del-1 Del-2 Del-3 Del-4 Del-5 Del-6 Del-7 Del-8 DelE - ------------------------------ Samples: 100->104 --------------------------- - 100: 3.573 -19.729 -1.256 -6.646 -8.293 -15.601 -23.404 10.988 0.834 - 3.161 -1.913 0.573 -0.069 -4.935 2.309 -5.336 2.460 0.080 - 101: 3.372 -16.278 -4.683 -3.600 -11.030 -8.481 -21.210 10.472 0.777 - 0.608 -1.850 -0.903 -0.665 -2.603 -0.194 -2.331 2.180 0.069 - 102: 2.823 -15.624 -5.367 -4.450 -12.045 -15.939 -22.082 14.794 0.830 - -0.051 0.633 -0.881 -0.067 -1.281 -0.410 1.312 1.021 0.005 - 103: 3.752 -17.135 -5.656 -6.114 -12.336 -15.115 -17.091 11.640 0.825 - -0.002 -0.204 0.015 -0.525 -1.237 -1.039 1.515 1.007 0.015 - 104: 3.127 -16.135 -5.176 -5.727 -14.044 -14.333 -18.905 15.506 0.833 - -0.034 -0.247 0.103 -0.223 -1.575 0.513 1.507 0.754 0.006 - ------------------------------------- END ---------------------------------- -\end{verbatim} - -The target header information shows that the converted data consists -of 195 parameter vectors, each vector having 18 components and being 72 bytes in -size. The structure of each parameter vector is displayed as a simple sequence -of floating-point numbers. The layout information described in -section~\ref{s:parmstore} can be used to interpret the data. -However, including the \texttt{-o} option, as in the example, causes \htool{HList} -to output a schematic of the observation structure. Thus, it can be seen that -the first row of each sample contains the static coefficients and the second -contains the delta -coefficients. The energy is in the final column. -The command line option \texttt{-i 9} controls the number of values displayed -per line and can be used to aid in the visual interpretation of the data. -Notice finally that the command line option \texttt{-F TIMIT} was not required -in this case because the source format was specified in the configuration file. - -It should be stressed that when \htool{HList} displays parameterised data, -it does so in exactly the form that \textit{observations} are passed to -a \HTK\ tool. So, for example, if the above data was input to a system -built using 3 data streams, then this can be simulated by using the -command line option \texttt{-n} to set the number of streams. For example, typing -\begin{verbatim} - HList -C config -n 3 -o -s 100 -e 101 -i 9 timit.wav -\end{verbatim} -would result in the following output -\begin{verbatim} - ------------------------ Observation Structure ----------------------- - nTotal=18 nStatic=8 nDel=16 eSep=T - x.1: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 - x.2: Del-1 Del-2 Del-3 Del-4 Del-5 Del-6 Del-7 Del-8 - x.3: E DelE - -------------------------- Samples: 100->101 ------------------------- - 100.1: 3.573 -19.729 -1.256 -6.646 -8.293 -15.601 -23.404 10.988 - 100.2: 3.161 -1.913 0.573 -0.069 -4.935 2.309 -5.336 2.460 - 100.3: 0.834 0.080 - 101.1: 3.372 -16.278 -4.683 -3.600 -11.030 -8.481 -21.210 10.472 - 101.2: 0.608 -1.850 -0.903 -0.665 -2.603 -0.194 -2.331 2.180 - 101.3: 0.777 0.069 - --------------------------------- END -------------------------------- -\end{verbatim} -Notice that the data is identical to the previous case, but it has been -re-organised into separate streams.\index{observations!displaying structure of} - -\mysect{Copying and Coding using \htool{HCopy}}{UseHCopy} - -\index{files!copying} -\htool{HCopy}\index{hcopy@\htool{HCopy}} is a general-purpose tool -for copying and manipulating speech files. -The general form of invocation is -\begin{verbatim} - HCopy src tgt -\end{verbatim} -which will make a new copy called \texttt{tgt} of the file called \texttt{src}. -\htool{HCopy} can also concatenate several sources together as in -\begin{verbatim} - HCopy src1 + src2 + src3 tgt -\end{verbatim} -which concatenates the contents of \texttt{src1}, \texttt{src2} and \texttt{src3}, -storing the results in the file \texttt{tgt}. As well as putting speech files -together, \htool{HCopy} can also take them apart. For example, -\begin{verbatim} - HCopy -s 100 -e -100 src tgt -\end{verbatim} -will extract samples 100 through to N-100 of the file \texttt{src} to the file -\texttt{tgt} where N is the total number of samples in the source file. -The range of samples to be copied can also be specified with reference to -a label file, and modifications made to the speech file can be tracked in a -copy of the label file. All of the various options provided by \htool{HCopy} -are given in the reference section and in total they provide a powerful -facility for manipulating speech data files. - -However, the use of \htool{HCopy} extends beyond that of copying, chopping -and concatenating files. \htool{HCopy} reads in all files using the speech -input/output subsystem described in the preceding sections. Hence, by specifying -an appropriate configuration file, \htool{HCopy} is also a speech coding tool. -For example, if the configuration file \texttt{config} was set-up to convert -waveform data to MFCC coefficients, the command -\begin{verbatim} - HCopy -C config -s 100 -e -100 src.wav tgt.mfc -\end{verbatim} -would parameterise the file waveform file \texttt{src.wav}, excluding the -first and last 100 samples, and store the result in \texttt{tgt.mfc}. - -\htool{HCopy} will process its arguments in pairs, and as with all \HTK\ tools, -argument lists can be written in a script file specified via the \texttt{-S} -option. When coding a large database, the separate invocation of \htool{HCopy} -for each file needing to be processed would incur a very large overhead. Hence, -it is better to create a file, \texttt{flist} say, containing a list of -all source and target files, as in for example, -\begin{verbatim} - src1.wav tgt1.mfc - src2.wav tgt2.mfc - src3.wav tgt3.mfc - src4.wav tgt4.mfc - etc -\end{verbatim} -and then invoke \htool{HCopy} by -\begin{verbatim} - HCopy -C config -s 100 -e -100 -S flist -\end{verbatim} -which would encode each file listed in \texttt{flist} in a single invocation. - -Normally \htool{HCopy} makes a direct copy of the target speech data in the -output file. However, if the configuration -parameter \texttt{SAVECOMPRESSED}\index{savecompressed@\texttt{SAVECOMPRESSED}} -is set true then the output is saved in compressed -form and if the -configuration parameter \texttt{SAVEWITHCRC}\index{savewithcrc@\texttt{SAVEWITHCRC}} -is set true then a checksum is appended to the output -(see section~\ref{s:parmstore}). If the configuration -parameter \texttt{SAVEASVQ} is set true then only -VQ indices are saved and the kind of the target file is changed to -\texttt{DISCRETE}. For this to work, the target kind must have the -qualifier \texttt{\_V} -\index{qualifiers!aaav@\texttt{\_V}} -attached (see section~\ref{s:vquant}). -\index{compression}\index{check sums} -\index{files!compressing}\index{files!adding checksums} - -\centrefig{coercions}{100}{Valid Parameter Kind Conversions} - -\mysect{Version 1.5 Compatibility}{v1spcompat} - -The redesign of the \HTK\ front-end in version 2 has introduced -a number of differences in parameter encoding. The main -changes are -\begin{enumerate} - \item Source waveform zero mean processing is now performed on a frame-by-frame - basis. - \item Delta coefficients use a modified form of regression rather than - simple differences at the start and end of the utterance. - \item Energy scaling is no longer applied to the zero'th MFCC coefficient. -\end{enumerate} -If a parameter encoding is required which is as close as possible -to the version 1.5 encoding, then the compatibility configuration -variable \texttt{V1COMPAT} should be set to true. - -Note also in this context that the default values for the various -configuration values have been chosen to be consistent with the -defaults or recommended practice for version 1.5. - -\mysect{Summary}{spiosum} - -\index{speech input!summary of variables} -This section summarises the various file formats, parameter kinds, qualifiers -and configuration parameters used by \HTK. Table~\href{t:fileform} lists the -audio speech file formats which can be read by the \htool{HWave} module. -Table~\href{t:parmkinds} lists the basic parameter kinds supported by the -\htool{HParm} module and Fig.~\href{f:coercions} shows the various automatic -conversions that can be performed by appropriate choice of source and target -parameter kinds. Table~\href{t:qualifiers} lists the available qualifiers for -parameter kinds. The first 6 of these are used to describe the target kind. -The source kind may already have some of these, \htool{HParm} adds the rest as -needed. Note that \htool{HParm} can also delete qualifiers when converting -from source to target. The final two qualifiers in Table~\href{t:qualifiers} -are only used in external files to indicate compression and an attached -checksum. \htool{HParm} adds these qualifiers to the target form during output -and only in response to setting the configuration parameters -\texttt{SAVECOMPRESSED} and \texttt{SAVEWITHCRC}. Adding the -\texttt{\_C}\index{qualifiers!aaac@\texttt{\_C}} or -\texttt{\_K}\index{qualifiers!aaak@\texttt{\_K}} qualifiers to the target kind -simply causes an error. Finally, Tables \href{t:spiocparms1} and -\href{t:spiocparms2} lists all of the configuration parameters along with their -meaning and default values. - -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.7cm}|} \hline -Name & Description \\ \hline -\texttt{\HTK} & The standard \HTK\ file format\\ -\texttt{TIMIT} & As used in the original prototype TIMIT CD-ROM\\ -\texttt{NIST} & The standard SPHERE format used by the US NIST\\ -\texttt{SCRIBE} & Subset of the European SAM standard used in the SCRIBE CD-ROM\\ -\texttt{SDES1} & The Sound Designer 1 format defined by Digidesign Inc. \\ -\texttt{AIFF} & Audio interchange file format\\ -\texttt{SUNAU8} & Subset of 8bit ".au" and ".snd" formats used by Sun and NeXT\\ -\texttt{OGI} & Format used by Oregan Graduate Institute similar to TIMIT\\ -\texttt{WAV} & Microsoft WAVE files used on PCs\\ -\texttt{ESIG} & Entropic Esignal file format\\ \hline -\texttt{AUDIO} & Pseudo format to indicate direct audio input \\ -\texttt{ALIEN} & Pseudo format to indicate unsupported file, the - alien header size must be set via the environment variable \texttt{HDSIZE} \\ -\texttt{NOHEAD} & As for the ALIEN format but header size is zero \\ \hline -\end{tabular} -\tabcap{fileform}{Supported File Formats} -\end{center} - -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.7cm}|} \hline -Kind & Meaning \\ \hline -\texttt{WAVEFORM} & scalar samples (usually raw speech data) \\ -\texttt{LPC} & linear prediction coefficients \\ -\texttt{LPREFC} & linear prediction reflection coefficients \\ -\texttt{LPCEPSTRA} & LP derived cepstral coefficients \\ -\texttt{LPDELCEP} & LP cepstra + delta coef (obsolete) \\ -\texttt{IREFC} & LPREFC stored as 16bit (short) integers \\ -\texttt{MFCC} & mel-frequency cepstral coefficients \\ -\texttt{FBANK} & log filter-bank parameters \\ -\texttt{MELSPEC} & linear filter-bank parameters \\ -\texttt{USER} & user defined parameters \\ -\texttt{DISCRETE} & vector quantised codebook symbols \\ -\texttt{PLP} & perceptual linear prediction coefficients \\ -\texttt{ANON} & matches actual parameter kind \\ \hline -\end{tabular} -\tabcap{parmkinds}{Supported Parameter Kinds} -\end{center} - -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.7cm}|} \hline -Qualifier & Meaning \\ \hline -\texttt{\_A} & Acceleration coefficients appended \\ -\texttt{\_C} & External form is compressed\\ -\texttt{\_D} & Delta coefficients appended \\ -\texttt{\_E} & Log energy appended\\ -\texttt{\_K} & External form has checksum appended\\ -\texttt{\_N} & Absolute log energy suppressed \\ -\texttt{\_T} & Third differential coefficients appended \\ -\texttt{\_V} & VQ index appended\\ -\texttt{\_Z} & Cepstral mean subtracted\\ -\texttt{\_0} & Cepstral C0 coefficient appended\\ \hline -\end{tabular} -\tabcap{qualifiers}{Parameter Kind Qualifiers} -\end{center}\index{qualifiers!summary} - -\begin{center} -\begin{tabular}{|p{1.2cm}|p{3.0cm}|p{1.3cm}|p{6.5cm}|} \hline -Module & Name & Default & Description \\ \hline -\htool{HAudio} & \texttt{LINEIN} & \texttt{T} & Select line input for audio\\ -\htool{HAudio} & \texttt{MICIN} & \texttt{F} & Select microphone input for audio\\ -\htool{HAudio} & \texttt{LINEOUT} & \texttt{T} & Select line output for audio\\ -\htool{HAudio} & \texttt{SPEAKEROUT} & \texttt{F} & Select speaker output for audio\\ -\htool{HAudio} & \texttt{PHONESOUT} & \texttt{T} & Select headphones output for audio\\ - - & \texttt{SOURCEKIND} & \texttt{ANON} & Parameter kind of source \\ - & \texttt{SOURCEFORMAT} & \texttt{HTK} & File format of source \\ - & \texttt{SOURCERATE} & \texttt{0.0} & Sample period of source in 100ns units \\ -\htool{HWave} & \texttt{NSAMPLES} & & Num samples in alien file input via a pipe\\ -\htool{HWave} & \texttt{HEADERSIZE} & & Size of header in an alien file\\ -\htool{HWave} & \texttt{STEREOMODE} & & Select channel: \texttt{RIGHT} or \texttt{LEFT} \\ -\htool{HWave} & \texttt{BYTEORDER} & & Define byte order \texttt{VAX} or other\\ - & \texttt{NATURALREADORDER} & \texttt{F} & Enable natural read order for HTK files \\ - & \texttt{NATURALWRITEORDER} & \texttt{F} & Enable natural write order for HTK files \\ - & \texttt{TARGETKIND} & \texttt{ANON} & Parameter kind of target \\ - & \texttt{TARGETFORMAT} & \texttt{HTK} & File format of target \\ - & \texttt{TARGETRATE} & \texttt{0.0} & Sample period of target in 100ns units \\ -\htool{HParm} & \texttt{SAVECOMPRESSED} & \texttt{F} & Save the output file in compressed form \\ -\htool{HParm} & \texttt{SAVEWITHCRC} & \texttt{T} & Attach a checksum to output parameter file \\ -\htool{HParm} & \texttt{ADDDITHER} & \texttt{0.0} & Level of noise added to input signal \\ -\htool{HParm} & \texttt{ZMEANSOURCE} & \texttt{F} & Zero mean source waveform before analysis \\ -\htool{HParm} & \texttt{WINDOWSIZE} & \texttt{256000.0} & Analysis window size in 100ns units \\ -\htool{HParm} & \texttt{USEHAMMING} & \texttt{T} & Use a Hamming window \\ -\htool{HParm} & \texttt{PREEMCOEF} & \texttt{0.97} & Set pre-emphasis coefficient \\ -\htool{HParm} & \texttt{LPCORDER} & \texttt{12} & Order of LPC analysis \\ -\htool{HParm} & \texttt{NUMCHANS} & \texttt{20} & Number of filterbank channels \\ -\htool{HParm} & \texttt{LOFREQ} & \texttt{-1.0} & Low frequency cut-off in fbank analysis \\ -\htool{HParm} & \texttt{HIFREQ} & \texttt{-1.0} & High frequency cut-off in fbank analysis \\ -\htool{HParm} & \texttt{USEPOWER} & \texttt{F} & Use power not magnitude in fbank analysis \\ -\htool{HParm} & \texttt{NUMCEPS} & \texttt{12} & Number of cepstral parameters \\ -\htool{HParm} & \texttt{CEPLIFTER} & \texttt{22} & Cepstral liftering coefficient \\ -\htool{HParm} & \texttt{ENORMALISE} & \texttt{T} & Normalise log energy \\ -\htool{HParm} & \texttt{ESCALE} & \texttt{0.1} & Scale log energy \\ -\htool{HParm} & \texttt{SILFLOOR} & \texttt{50.0} & Energy silence floor (dB) \\ -\htool{HParm} & \texttt{DELTAWINDOW} & \texttt{2} & Delta window size \\ -\htool{HParm} & \texttt{ACCWINDOW} & \texttt{2} & Acceleration window size \\ -\htool{HParm} & \texttt{VQTABLE} & \texttt{NULL} & Name of VQ table \\ -\htool{HParm} & \texttt{SAVEASVQ} & \texttt{F} & Save only the VQ indices \\ -\htool{HParm} & \texttt{AUDIOSIG} & \texttt{0} & Audio signal number for remote control \\ \hline -\end{tabular} -\tabcap{spiocparms1}{Configuration Parameters} -\end{center} - -\begin{center} -\begin{tabular}{|p{1.1cm}|p{2.6cm}|p{1.4cm}|p{6.5cm}|} \hline -Module & Name & Default & Description \\ \hline -\htool{HParm} & \texttt{USESILDET} & \texttt{F} & Enable speech/silence detector \\ -\htool{HParm} & \texttt{MEASURESIL} & \texttt{T} & Measure background noise level prior to sampling \\ -\htool{HParm} & \texttt{OUTSILWARN} & \texttt{T} & Print a warning message to {\tt stdout} before - measuring audio levels \\ -\htool{HParm} & \texttt{SPEECHTHRESH} & \texttt{9.0} & Threshold for speech above silence level (dB) \\ -\htool{HParm} & \texttt{SILENERGY} & \texttt{0.0} & Average background noise level (dB) \\ -\htool{HParm} & \texttt{SPCSEQCOUNT} & \texttt{10} & Window over which speech/silence decision reached \\ -\htool{HParm} & \texttt{SPCGLCHCOUNT} & \texttt{0} & Maximum number of frames marked as silence in window which is -classified as speech whilst expecting start of speech \\ -\htool{HParm} & \texttt{SILSEQCOUNT} & \texttt{100} & Number of frames classified as silence needed to mark end of -utterance \\ -\htool{HParm} & \texttt{SILGLCHCOUNT} & \texttt{2} & Maximum number of frames marked as silence in window which is -classified as speech whilst expecting silence \\ -\htool{HParm} & \texttt{SILMARGIN} & \texttt{40} & Number of extra frames included before and after start and end of -speech marks from the speech/silence detector \\ -\htool{HParm} & \texttt{V1COMPAT} & \texttt{F} & Set Version 1.5 compatibility mode \\ - & \texttt{TRACE} & \texttt{0} & Trace setting\\ \hline -\end{tabular} -\tabcap{spiocparms2}{Configuration Parameters (cont)} -\end{center} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/train.tex b/HTKBook/train.tex deleted file mode 100644 index 6423232..0000000 --- a/HTKBook/train.tex +++ /dev/null @@ -1,1631 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{HMM Parameter Estimation}{Training} - -\sidepic{Tool.train}{80}{ -In chapter~\ref{c:HMMDefs} the various types of HMM were described -and the way in which they are represented within \HTK\ was explained. -Defining the structure and overall form of a set of HMMs is the first -step towards building a recogniser. The second step is to estimate -the parameters of the HMMs from examples of the data sequences that -they are intended to model. This process of parameter estimation -\index{parameter estimation} is -usually called \textit{training}. -\HTK\ supplies five basic tools for parameter estimation: \htool{HCompV}, -\htool{HInit}, \htool{HRest}, \htool{HERest} and \htool{HMMIRest}. -\htool{HCompV} and \htool{HInit} are used for initialisation. -\htool{HCompV} will set the mean and variance of every Gaussian component -in a HMM definition to be equal to the global mean and variance of the -speech training data. This is typically used as an initialisation stage -for \textit{flat-start} training. -Alternatively, a more detailed initialisation is -possible using \htool{HInit} which will compute the parameters of a new -HMM using a Viterbi style of estimation. -} - -\htool{HRest} and \htool{HERest} are used to refine the -parameters of existing HMMs using Baum-Welch Re-estimation. -Like \htool{HInit}, \htool{HRest} -performs \textit{isolated-unit} training whereas -\htool{HERest} operates on complete model sets and performs \textit{embedded-unit} -training. In general, whole word HMMs are built using \htool{HInit} -and \htool{HRest}, and continuous speech sub-word based systems -are built using \htool{HERest} initialised by either \htool{HCompV} or -\htool{HInit} and \htool{HRest}. - -\htool{HMMIRest} is used to discriminatively train the parameters of a trained -HMM. This uses modified versions of the Extended Baum-Welch re-estimation -formulae. Normally \htool{HMMIRest} will use models previously trained using -\htool{HERest}. - -This chapter describes these training tools and their use for -estimating the parameters of plain (i.e. untied) -continuous density HMMs. The use of tying and special cases such as -tied-mixture HMM sets and discrete probability HMMs are dealt -with in later chapters. The first section of this chapter gives an overview of the -various training strategies possible with \HTK. This is then followed -by sections covering initialisation, isolated-unit training, and -embedded training. The chapter continues with a section detailing -the various formulae used by the training tools. The final section describes -discriminative training. - -\mysect{Training Strategies}{tstrats} - -As indicated in the introduction above, the basic operation of -the \HTK\ training tools -involves reading in a set of one or more HMM definitions, and then using -speech data to estimate the parameters of these definitions. The speech -data files are normally stored in parameterised form such as \texttt{LPC} or -\texttt{MFCC} -parameters. However, additional parameters such as delta coefficients are -normally computed \textit{on-the-fly} whilst loading each file. - - -\sidefig{isoword}{62}{Isolated Word Training}{-4}{ -In fact, -it is also possible to use waveform data directly by performing the full parameter -conversion \textit{on-the-fly}. Which approach is preferred depends on the -available computing resources. The advantages of storing the data already -encoded are that the data is more compact in parameterised form and pre-encoding -avoids wasting compute time converting the data each time that it is read -in. However, if the training data is derived from CD-ROMs and they can be -accessed automatically on-line, then the extra compute may be worth the -saving in magnetic disk storage.\index{isolated word training} - -The methods for configuring speech data -input to \HTK\ tools were described in detail in chapter~\ref{c:speechio}. -All of the various input mechanisms are supported by the \HTK\ training -tools except direct audio input. - -The precise way in which the training tools are used depends on the -type of HMM system to be built and the form of the available -training data. Furthermore, -\HTK\ tools are designed to interface cleanly to each other, so a -large number of configurations are possible. In practice, however, -HMM-based speech recognisers are either whole-word or sub-word. -} - -As the name suggests, whole word modelling\index{whole word modelling} refers to a technique -whereby each individual word in the system vocabulary is modelled by -a single HMM. As shown in Fig.~\href{f:isoword}, whole word HMMs -are most commonly trained on examples of each word spoken in -isolation. If these training examples, which are often called -\textit{tokens}, have had leading and trailing silence removed, then -they can be input directly into the training tools without the need -for any label information. The most common method of building whole -word HMMs is to firstly use -\htool{HInit}\index{hinit@\htool{HInit}} to calculate initial -parameters for the model and then -use -\htool{HRest}\index{hrest@\htool{HRest}} to refine the parameters using Baum-Welch -re-estimation. Where there is limited training data and recognition -in adverse noise environments is needed, so-called {\it fixed -variance} models can offer improved robustness. These are models in -which all the variances are set equal to -the global speech variance\index{global speech variance} -and never subsequently re-estimated. The tool -\htool{HCompV}\index{hcompv@\htool{HCompV}} can be used to -compute this global variance. -\index{training!whole-word} - -\centrefig{subword}{90}{Training Subword HMMs} - -Although \HTK\ gives full support for building whole-word -HMM systems, the bulk of its facilities are focused on -building sub-word systems in which the basic units are the -individual sounds of the language called \textit{phones}. -One HMM is constructed for each such phone\index{phones} and -continuous speech\index{continuous speech recognition} -is recognised by joining the phones together to -make any required vocabulary using a pronunciation dictionary. - -\index{training!sub-word} -The basic procedures involved in training a set of subword models -are shown in Fig.~\href{f:subword}. The core process involves the -embedded training\index{embedded training} tool -\htool{HERest}\index{herest@\htool{HERest}}. \htool{HERest} uses -continuously spoken utterances as its source of training data -and simultaneously re-estimates the complete set of subword HMMs. -For each input utterance, \htool{HERest} needs a transcription i.e.\ a list of -the phones in that utterance. \htool{HERest} then joins together all of the -subword HMMs corresponding to this phone list to make a single -composite HMM. This composite HMM is used to collect -the necessary statistics for the re-estimation. When all of the -training utterances have been processed, the total set of accumulated -statistics are used to re-estimate the parameters of all of the phone -HMMs. -It is important to emphasise that in the above process, the transcriptions -are only needed to identify the sequence of phones in each utterance. -No phone boundary information is needed. - -The initialisation\index{phone model initialisation} of a -set of phone HMMs prior to embedded re-estimation -using \htool{HERest} can be achieved in two different ways. As shown on the -left of Fig.~\href{f:subword}, a small set of hand-labelled -\textit{bootstrap} training data can be used along with\index{bootstrapping} -the isolated training tools \htool{HInit} and \htool{HRest} to -initialise each phone HMM individually. When used in this way, -both \htool{HInit} and \htool{HRest} use the label information -to extract all the segments of speech corresponding to the current -phone HMM in order to perform isolated word training. - -A simpler initialisation procedure uses \htool{HCompV} to assign the global -speech mean and variance to every Gaussian distribution in every phone -HMM. This so-called \textit{flat start} procedure implies that during the -first cycle of embedded re-estimation, each training utterance will be -uniformly segmented. The hope then is that enough of the phone models -align with actual realisations of that phone so that on the second and -subsequent iterations, the models align as intended.\index{flat start} - -One of the major problems to be faced in building any HMM-based -system is that the amount of training data for each model will be -variable and is rarely sufficient. To overcome this, \HTK\ allows -a variety of sharing mechanisms to be implemented whereby HMM parameters -are tied together so that the training data is pooled and more robust -estimates result. These tyings, along with a variety of other -manipulations, are performed using the \HTK\ HMM editor \htool{HHEd}. -The use of \htool{HHEd}\index{hhed@\htool{HHEd}} is -described in a later chapter. Here it is -sufficient to note that a phone-based HMM set typically goes through -several refinement cycles of editing using \htool{HHEd} followed -by parameter re-estimation using \htool{HERest} before the final model set is -obtained. - -Having described in outline the main training strategies, each -of the above procedures will be described in more detail. - -\mysect{Initialisation using \htool{HInit}}{inithmm} - -In order to create a HMM definition, it is first necessary to produce -a prototype definition. As explained in Chapter~\ref{c:HMMDefs}, HMM definitions -can be stored as a text file and hence the simplest way of creating -a prototype is by using a text editor to manually produce a definition of the form -shown in Fig~\ref{f:hmm1def}, Fig~\ref{f:hmm2def} etc. The function of a prototype -definition is to describe the form and topology of the HMM, the actual numbers used -in the definition are not important. Hence, the vector size and parameter kind should -be specified and the number of states chosen. The allowable transitions between states -should be indicated by putting non-zero values in the corresponding elements of the -transition matrix and zeros elsewhere. The rows of the transition matrix must sum to one -except for the final row which should be all zero. Each state definition should show the -required number of streams and mixture components in each stream. All mean values -can be zero but diagonal variances should be positive and covariance matrices -should have positive diagonal elements. All state definitions can be identical. -\index{model training!initialisation} - -Having set up an appropriate prototype, a HMM can be initialised using the \HTK tool -\htool{HInit}. The basic principle of \htool{HInit} depends on the concept of a HMM as -a generator of speech vectors. Every training example can be viewed as the output -of the HMM whose parameters are to be estimated. -Thus, if the state that generated each vector in the training -data was known, then the unknown means and variances could be estimated by averaging all the -vectors associated with each state. Similarly, the transition matrix could be estimated -by simply counting the number of time slots that each state was occupied. This process -is described more formally in section~\ref{s:bwformulae} below. - -\sidefig{vitloop}{60}{\htool{HInit} Operation}{2}{ -The above idea can be implemented by an iterative scheme as shown in Fig~\href{f:vitloop}. -Firstly, the Viterbi\index{Viterbi training} -algorithm is used to find the most likely state sequence corresponding to -each training example, then the HMM parameters are estimated. As a side-effect -of finding the Viterbi state alignment, the log likelihood of the training data -can be computed. Hence, the whole estimation process can be repeated until -no further increase in likelihood is obtained. - -This process requires some initial HMM parameters to get started. To circumvent -this problem, \htool{HInit} starts by uniformly segmenting the data and associating -each successive segment with successive states. Of course, this only makes sense -if the HMM is left-right. If the HMM is ergodic, then the uniform -segmentation\index{uniform segmentation} can be disabled and some other -approach taken. For example, -\htool{HCompV} can be used as described below. - -If any HMM state has multiple mixture components, then the training vectors are -associated with the mixture component with the highest likelihood. The number of -vectors associated with each component within a state can then be used to estimate the mixture -weights. In the uniform segmentation stage, a K-means -clustering\index{K-means clustering} algorithm is used -to cluster the vectors within each state.\index{model training!mixture components} - -Turning now to the practical use of \htool{HInit}, whole word models can be initialised by -typing a command of the form -} - -\begin{verbatim} - HInit hmm data1 data2 data3 -\end{verbatim} -where \texttt{hmm} is the name of the file holding the prototype -HMM and \texttt{data1}, \texttt{data2}, etc.\ are the -names of the speech files holding the training examples, each file holding a single example -with no leading or trailing silence. The HMM definition can be distributed across a number -of macro files loaded using the standard \texttt{-H} option. For example, in -\begin{verbatim} - HInit -H mac1 -H mac2 hmm data1 data2 data3 ... -\end{verbatim} -then the macro files \texttt{mac1} and \texttt{mac2} would be loaded first. If these contained a -definition for \texttt{hmm}, then no further HMM definition input would be attempted. If however, -they did not contain a definition for \texttt{hmm}, then \htool{HInit} would attempt to open a file called -\texttt{hmm} and would expect to find a definition for \texttt{hmm} within it. \htool{HInit} can in principle -load a large set of HMM definitions, but it will only update the parameters of the single named -HMM. On completion, \htool{HInit} will write out new versions of all HMM definitions loaded on start-up. -The default behaviour is to write these to the current directory which has the usually -undesirable effect of overwriting the prototype definition. This can be prevented by -specifying a new directory for the output definitions using the \texttt{-M} option. -Thus, typical usage of \htool{HInit} takes the form \index{model training!whole word} -\begin{verbatim} - HInit -H globals -M dir1 proto data1 data2 data3 ... - mv dir1/proto dir1/wordX -\end{verbatim} -Here \texttt{globals} is assumed to hold a global -options macro\index{global options macro} (and possibly others). -The actual HMM definition is loaded from the file \texttt{proto} in the current directory and -the newly initialised definition along with a copy of \texttt{globals} will be written to -\texttt{dir1}. Since the newly created HMM will still be called \texttt{proto}, it is renamed -as appropriate. - -For most real tasks, the number of data files required will -exceed the command line argument -limit and a script file\index{script files} is used instead. -Hence, if the names of the data files are stored in the file -\texttt{trainlist} then typing -\begin{verbatim} - HInit -S trainlist -H globals -M dir1 proto -\end{verbatim} -would have the same effect as previously. - -\centrefig{hinitdp}{90}{File Processing in \htool{HInit}} - -When building sub-word models, \htool{HInit} can be used in the same manner as above to initialise -each individual sub-word HMM. However, in this case, the training data is typically continuous -speech with associated label files identifying the speech segments corresponding to -each sub-word. To illustrate this, the following command could be used to initialise -a sub-word HMM for the phone \texttt{ih} -\begin{verbatim} - HInit -S trainlist -H globals -M dir1 -l ih -L labs proto - mv dir1/proto dir1/ih -\end{verbatim} -where the option \texttt{-l} defines the name of the sub-word model, and -the file \texttt{trainlist} is assumed to hold -\begin{verbatim} - data/tr1.mfc - data/tr2.mfc - data/tr3.mfc - data/tr4.mfc - data/tr5.mfc - data/tr6.mfc -\end{verbatim} -In this case, \htool{HInit} will first try to find label -\index{model training!sub-word initialisation} -files corresponding to each data file. In the example here, the -standard \texttt{-L}\index{standard options!aaal@\texttt{-L}} option -indicates that they are -stored in a directory called \texttt{labs}. As an alternative, they -could be stored in a Master Label File\index{master label files} (MLF) and -loaded via the standard option \texttt{-I}. -Once the label files have been loaded, each data file is scanned and all segments -corresponding the label \texttt{ih} are loaded. Figure~\href{f:hinitdp} -illustrates this process. - -All \HTK\ tools support the \texttt{-T} -\index{standard options!aaat@\texttt{-T}} trace option and although the details of -tracing varies from tool to tool, setting the least significant bit (e.g.\ by \texttt{-T 1}), -causes all tools to output top level progress information. In the case -of \htool{HInit}, this information includes the log likelihood at each iteration and hence -it is very useful for monitoring convergence\index{monitoring convergence}. For example, enabling top level tracing -in the previous example might result in the following being output -\begin{verbatim} - Initialising HMM proto . . . - States : 2 3 4 (width) - Mixes s1: 1 1 1 ( 26 ) - Num Using: 0 0 0 - Parm Kind: MFCC_E_D - Number of owners = 1 - SegLab : ih - maxIter : 20 - epsilon : 0.000100 - minSeg : 3 - Updating : Means Variances MixWeights/DProbs TransProbs - 16 Observation Sequences Loaded - Starting Estimation Process - Iteration 1: Average LogP = -898.24976 - Iteration 2: Average LogP = -884.05402 Change = 14.19574 - Iteration 3: Average LogP = -883.22119 Change = 0.83282 - Iteration 4: Average LogP = -882.84381 Change = 0.37738 - Iteration 5: Average LogP = -882.76526 Change = 0.07855 - Iteration 6: Average LogP = -882.76526 Change = 0.00000 - Estimation converged at iteration 7 - Output written to directory :dir1: -\end{verbatim} -The first part summarises the structure of the HMM, in this case, the data is -single stream MFCC coefficients with energy and deltas appended. The HMM has -3 emitting states, each single Gaussian and the stream width is 26. The current -option settings are then given followed by the convergence information. In this -example, convergence was reached after 6 iterations, however if the \texttt{maxIter} -limit was reached, then the process would terminate regardless. - -\htool{HInit} provides a variety of command line options for controlling -its detailed behaviour. -\index{model training!update control} -The types of parameter -estimated by \htool{HInit} can be controlled -using the \texttt{-u} option, for example, \texttt{-u mtw} would update the means, -transition matrices and -mixture component weights but would leave the variances untouched. -A variance floor\index{variance floors} -can be applied using the \texttt{-v} to prevent any variance getting too small. This -option applies the same variance floor to all speech vector elements. More precise -control can be obtained by specifying a variance macro (i.e.\ a \texttt{~v} macro) -called \texttt{varFloor1}\index{varfloorn@\texttt{varFloorN}} for -stream 1, \texttt{varFloor2} for stream 2, etc. Each -element of these variance vectors then defines a floor for the corresponding HMM variance -components. - -The full list of options supported by \htool{HInit} is described in the \refpart. - -\mysect{Flat Starting with \htool{HCompV}}{flatstart} - -One limitation of using \htool{HInit} for the initialisation -of sub-word models is that it requires labelled training data. -For cases where this is not readily available, an alternative -initialisation strategy is to make all models equal initially and -move straight to embedded training using \htool{HERest}. The -idea behind this so-called \textit{flat start} training is similar to the -uniform segmentation strategy adopted by \htool{HInit} since by making -all states of all models equal, the first iteration of embedded training -will effectively rely on a uniform segmentation of the data. - -\centrefig{flatst}{90}{Flat Start Initialisation} - -Flat start\index{flat start} initialisation is provided by the \HTK\ tool \htool{HCompV} whose operation -is illustrated by Fig~\href{f:flatst}. The input/output of HMM definition files -and training files in \htool{HCompV}\index{hcompv@\htool{HCompV}} works in exactly the same way as described above for -\htool{HInit}. It reads in a prototype HMM definition and some training data -and outputs a new definition in which every mean and covariance is equal to -the global speech mean and covariance. Thus, for example, the following -command would read a prototype definition called \texttt{proto}, read in all speech -vectors from \texttt{data1}, \texttt{data2}, \texttt{data3}, etc, -compute the global mean and covariance -and write out a new version of \texttt{proto} in \texttt{dir1} with this mean and -covariance. -\begin{verbatim} - HCompV -m -H globals -M dir1 proto data1 data2 data3 ... -\end{verbatim} - -The default operation of \htool{HCompV} is only to update the covariances of the HMM -and leave the means unchanged. The use of the \texttt{-m} option above causes the -means to be updated too. This apparently curious default behaviour arises because -\htool{HCompV} is also used to initialise the variances in so-called -\textit{Fixed-Variance} HMMs. These are HMMs initialised in the normal way except -that all covariances are set equal to the global speech covariance and never -subsequently changed.\index{fixed-variance} - -Finally, it should be noted that \htool{HCompV} can also be used to generate -variance floor macros by using the \texttt{-f} option. -\index{variance floor macros!generating} - -\mysect{Isolated Unit Re-Estimation using \htool{HRest}}{resthmm} - -\sidefig{restloop}{60}{\htool{HRest} Operation}{2}{ \htool{HRest} is the final tool in the set -designed to manipulate isolated unit HMMs. Its operation is very similar to -\htool{HInit} except that, as shown in Fig~\href{f:restloop}, it expects the input -HMM definition to have been initialised and it uses Baum-Welch -re-estimation\index{Baum-Welch re-estimation!isolated unit} in place -of Viterbi training. This involves finding the probability of being in each -state at each time frame using the \textit{Forward-Backward} algorithm. -This probability is then used to form weighted averages -for the HMM parameters. Thus, whereas Viterbi training makes a hard decision -as to which state each training vector was ``generated'' by, Baum-Welch -takes a soft decision. This can be helpful when estimating phone-based HMMs -since there are no hard boundaries between phones in real speech and using -a soft decision may give better results.\index{forward-backward!isolated unit} -The mathematical details of the Baum-Welch re-estimation -process are given below in section~\ref{s:bwformulae}. - -\htool{HRest} is usually applied directly to the models generated by \htool{HInit}. Hence for -example, the generation of a sub-word model for the phone \texttt{ih} begun -in section~\ref{s:inithmm} -would be continued by executing the following command -} - -\begin{verbatim} - HRest -S trainlist -H dir1/globals -M dir2 -l ih -L labs dir1/ih -\end{verbatim} -This will load the HMM definition for \texttt{ih} from \texttt{dir1}, -re-estimate the parameters using the speech segments labelled with \texttt{ih} -and write the new definition to directory \texttt{dir2}. - -If \htool{HRest} is used to build models with a large number of mixture components per state, -a strategy must be chosen for dealing with \textit{defunct mixture components}. -These are mixture components which have very little associated training data and -as a consequence either the variances or the corresponding mixture weight becomes -very small. If either of these events happen, the mixture component is effectively -deleted and provided that at least one component in that state is left, a warning -is issued. If this behaviour is not desired then the variance can be floored as -described previously using the \texttt{-v} option (or a variance floor macro) -and/or the mixture weight can be floored using the \texttt{-w} option. -\index{defunct mixture components} - -Finally, a problem which can arise when -using \htool{HRest} to initialise sub-word models -is that of over-short training -segments\index{over-short training segments}. By default, -\htool{HRest} ignores all training examples which have fewer frames than -the model has emitting states. For example, suppose that a -particular phone with 3 emitting states had only a few training -examples with more than 2 frames of data. In this case, there would be two -solutions. Firstly, the number of emitting states could be reduced. Since -\HTK\ does not require all models to have the same number of states, -this is perfectly feasible. -Alternatively, some skip transitions could be added and the default -reject mechanism disabled by setting the \texttt{-t} option. -Note here that \htool{HInit} has the same reject mechanism and suffers -from the same problems. \htool{HInit}, however, does not allow -the reject mechanism to be suppressed since the uniform segmentation -process would otherwise fail. - -\mysect{Embedded Training using \htool{HERest}}{eresthmm} - -\index{model training!embedded} -Whereas isolated unit training is sufficient for building whole word -models and initialisation of models using hand-labelled \textit{bootstrap} -data, the main HMM training procedures for building sub-word systems -revolve around the concept of \textit{embedded training}. Unlike the -processes described so far, embedded training\index{embedded training} simultaneously updates all -of the HMMs in a system using all of the training data. It is performed by -\htool{HERest}\index{herest@\htool{HERest}} which, unlike \htool{HRest}, performs just a single iteration. -\index{Baum-Welch re-estimation!embedded unit} - -In outline, \htool{HERest} works as follows. On startup, \htool{HERest} -loads in a complete -set of HMM definitions. Every training file must have an associated -label file which gives a transcription for that file. Only the -sequence of labels is used by \htool{HERest}, however, and any boundary location -information is ignored. Thus, these transcriptions can be generated -automatically from the known orthography of what was said and -a pronunciation dictionary. - -\htool{HERest} processes each training file in turn. After loading it into memory, -it uses the associated transcription to -construct a composite HMM which spans the whole utterance. -This composite HMM is made by concatenating instances of the phone HMMs -corresponding to each label in the transcription. The Forward-Backward -algorithm is then applied and the sums needed to form the weighted -averages accumulated in the normal way. When all of the training -files have been processed, the new parameter estimates are formed -from the weighted sums and the updated HMM set is output. -\index{forward-backward!embedded} - -The mathematical details of embedded Baum-Welch re-estimation -are given below in section~\ref{s:bwformulae}. - -In order to use \htool{HERest}, it is first necessary to construct a -file containing a list -of all HMMs in the model set with each model name being written on a separate line. -The names of the models in this\index{HMM lists} -list must correspond to the labels used in the transcriptions and there -must be a corresponding model for every distinct transcription label. -\htool{HERest} is typically invoked by a command line of the form -\begin{verbatim} - HERest -S trainlist -I labs -H dir1/hmacs -M dir2 hmmlist -\end{verbatim} -where \texttt{hmmlist} contains the list of HMMs. On startup, \htool{HERest} will -load the HMM master macro file (MMF) \texttt{hmacs} (there may be -several of these). It then searches for a definition for each -HMM listed in the \texttt{hmmlist}, if any HMM name is not found, -it attempts to open a file of the same name in the current directory -(or a directory designated by the \texttt{-d} option). -Usually in large subword systems, however, all of the HMM definitions -will be stored in MMFs. Similarly, all of the required transcriptions -will be stored in one or more Master Label Files -\index{master label files} (MLFs), and in the -example, they are stored in the single MLF called \texttt{labs}. - -\centrefig{herestdp}{90}{File Processing in \htool{HERest}} - -Once all MMFs and MLFs have been loaded, \htool{HERest} processes each file in the -\texttt{trainlist}, and accumulates the required statistics as described -above. On completion, an updated MMF is output to the directory -\texttt{dir2}. If a second iteration is required, then \htool{HERest} is reinvoked -reading in the MMF from \texttt{dir2} and outputting -a new one to \texttt{dir3}, and so on. -This process is illustrated by Fig~\href{f:herestdp}. - -When performing embedded training, it is good practice to -monitor the performance of the models on unseen test data -and stop training when no further improvement is obtained. Enabling -top level tracing by setting \texttt{-T 1} will cause \htool{HERest} to -output the overall log likelihood per frame of the training data. -This measure could be used as a termination condition for -repeated application of \htool{HERest}. However, -repeated re-estimation to convergence\index{monitoring convergence} -may take an impossibly long time. -Worse still, it can lead to over-training since the models can become too -closely matched to the training data and fail to generalise well on unseen -test data. Hence in practice around 2 to 5 cycles of -embedded re-estimation are normally sufficient when training phone -models. - -In order to get accurate acoustic models, a large amount of training -data is needed. Several hundred -utterances are needed for speaker dependent recognition and -several thousand are needed for -speaker independent recognition. In the latter case, a single -iteration of embedded training -might take several hours to compute. There are two mechanisms for -speeding up this computation. Firstly, \htool{HERest} has a pruning -\index{model training!pruning} mechanism -incorporated into its forward-backward computation. \htool{HERest} calculates -the backward probabilities $\beta_j(t)$ first and then the forward probabilities -$\alpha_j(t)$. -The full computation of these probabilities for all values of state $j$ -and time $t$ is unnecessary since many of these combinations will be highly -improbable. On the forward pass, \htool{HERest} restricts the computation of -the $\alpha$ values to just those for which the total log likelihood -as determined by the product $\alpha_j(t)\beta_j(t)$ is -within a fixed distance from the total likelihood $P(\bm{O}|M)$. This -pruning is always enabled since it is completely safe and causes no loss -of modelling accuracy. - -Pruning on the backward pass is also possible. -However, in this case, the likelihood product $\alpha_j(t)\beta_j(t)$ -is unavailable since $\alpha_j(t)$ has yet to be computed, and hence a -much broader {\it beam} must be set to -avoid pruning errors. Pruning on the backward path is therefore under -user control. It is set using the \texttt{-t} option which has two -forms. In the simplest case, a fixed pruning beam is set. For example, -using \texttt{-t 250.0} would set a fixed beam of 250.0. This method -is adequate when there is sufficient compute time available to -use a generously wide beam. When a narrower beam is used, \htool{HERest} will -reject any utterance for which the beam proves to be too narrow. -This can be avoided by using an incremental threshold. For example, -executing -\begin{verbatim} - HERest -t 120.0 60.0 240.0 -S trainlist -I labs \ - -H dir1/hmacs -M dir2 hmmlist -\end{verbatim} -would cause \htool{HERest} to run normally -at a beam width\index{beam width} of 120.0. However, if a pruning -error\index{pruning errors} occurs, the -beam is increased by 60.0 and \htool{HERest} reprocesses the offending training -utterance. Repeated errors cause the beam width to be increased -again and this continues until either the utterance is -successfully processed or the upper beam limit is reached, in this -case 240.0. Note that errors which occur at very high beam widths -are often caused by transcription errors, hence, it is best not to -set the upper limit too high. - -\centrefig{parher}{90}{\htool{HERest} Parallel Operation} - -\index{model training!in parallel} -The second way of speeding-up the operation of \htool{HERest} is to use more than -one computer in parallel. The way that this is done is to divide the -training data amongst the available machines and then to run \htool{HERest} on each -machine such that each invocation of \htool{HERest} -uses the same initial set of models but has its own private set of data. -By setting the option {\tt -p N} where {\tt N} is an integer, \htool{HERest} will -dump the contents of all its accumulators\index{accumulators} into a file called {\tt HERN.acc} -rather than updating and outputting a new set of models. These dumped -files are collected together and input to a new invocation of \htool{HERest} with -the option {\tt -p 0} set. \htool{HERest} then reloads the accumulators from -all of the dump files and updates the models in the normal way. -This process is illustrated in Figure~\href{f:parher}. - -To give a concrete example, suppose that four networked workstations -were available to execute the \htool{HERest} command given earlier. The training files -listed previously in \texttt{trainlist} would be split -into four equal sets and a list -of the files in each set stored in {\tt trlist1}, -{\tt trlist2}, {\tt trlist3}, and {\tt trlist4}. -On the first workstation, the command -\begin{verbatim} - HERest -S trlist1 -I labs -H dir1/hmacs -M dir2 -p 1 hmmlist -\end{verbatim} -would be executed. This will load in the HMM definitions in -{\tt dir1/hmacs}, process the files listed in {\tt trlist1} and finally -dump its accumulators into a file called {\tt HER1.acc} in the output -directory {\tt dir2}. At the same time, the command -\begin{verbatim} - HERest -S trlist2 -I labs -H dir1/hmacs -M dir2 -p 2 hmmlist -\end{verbatim} -would be executed on the second workstation, and so on. When -\htool{HERest} has finished on all four -workstations, the following command will be executed on just one of them -\begin{verbatim} - HERest -H dir1/hmacs -M dir2 -p 0 hmmlist dir2/*.acc -\end{verbatim} -where the list of training files has been replaced by the dumped accumulator -files. This will cause the accumulated -statistics to be reloaded and merged so that the model parameters can -be reestimated and the new model set output to \texttt{dir2} -The time to perform this last phase of the operation is very small, hence -the whole process will be around four times quicker than for the -straightforward sequential case. - -\mysect{Single-Pass Retraining}{singlepass} - -In addition to re-estimating the parameters of a HMM set, \htool{HERest} -also provides a mechanism for mapping a set of models trained using -one parameterisation into another set based on a different parameterisation. -This facility allows the front-end of a HMM-based recogniser to be -modified without having to rebuild the models from scratch. - -This facility is known as single-pass retraining\index{single-pass retraining}. -Given one set of well-trained models, a new set matching a -different training data parameterisation can be generated in a single -re-estimation pass. This is done by computing the forward and backward -probabilities using the original models together with the original -training data, but then switching to the new training data to compute -the parameter estimates for the new set of models. - -Single-pass retraining is enabled in \htool{HERest} by setting the -\texttt{-r} switch. This causes the input training files to be read -in pairs. The first of each pair is used to compute the -forward/backward probabilities and the second is used to estimate the -parameters for the new models. Very often, of course, data input to -\HTK\ is modified by the \htool{HParm} module in accordance with -parameters set in a configuration file. In single-pass retraining mode, -configuration parameters can be prefixed by the pseudo-module names -\texttt{HPARM1} and \texttt{HPARM2}. Then when reading in the first -file of each pair, only the \texttt{HPARM1} parameters are used and -when reading the second file of each pair, only the \texttt{HPARM2} -parameters are used.\index{configuration parameters!switching} - -As an example, suppose that a set of models has been trained on data -with \texttt{MFCC\_E\_D} parameterisation and a new set of models using -Cepstral Mean Normalisation (\texttt{\_Z}) is required. These two data -parameterisations are specified in a configuration file -(\texttt{config}) as two separate instances of the configuration -variable \texttt{TARGETKIND} i.e. -\begin{verbatim} - # Single pass retraining - HPARM1: TARGETKIND = MFCC_E_D - HPARM2: TARGETKIND = MFCC_E_D_Z -\end{verbatim} -\htool{HERest} would then be invoked with the \texttt{-r} option set to enable -single-pass retraining. For example, -\begin{verbatim} - HERest -r -C config -S trainList -I labs -H dir1/hmacs -M dir2 hmmList -\end{verbatim} -The script file \texttt{trainlist} contains a list of data file -pairs. For each pair, the first file should match the parameterisation of -the original model set and the second file should match that of the -required new set. -This will cause the model parameter estimates to be performed using the -new set of training data and a new set of models matching this data will -be output to \texttt{dir2}. This process of single-pass retraining is -a significantly faster route to a new set of models than training a fresh -set from scratch. - -\mysect{Two-model Re-Estimation}{twomodel} - -Another method for initialisation of model parameters implemented in -\htool{HERest} is two-model re-estimation. HMM sets often use the same -basic units such as triphones but differ in the way the underlying HMM -parameters are tied. In these cases two-model re-estimation can be -used to obtain the state-level alignment using one model set which is -used to update the parameters of a second model set. This is helpful -when the model set to be updated is less well trained. - -A typical use of two-model re-estimation\index{two-model - re-estimation} is the initialisation of state clustered triphone -models. In the standard case triphone models are obtained by cloning -of monophone models and subsequent clustering of triphone states. -However, the unclustered triphone models are considerably less -powerful than state clustered triphone HMMs using mixtures of -Gaussians. The consequence is poor state level alignment and thus poor -parameter estimates, prior to clustering. This can be ameliorated by -the use of well-trained \textit{alignment models} for computing the -forward-backward probabilities. In the maximisation stage of the -Baum-Welch algorithm the state level posteriors are used to -re-restimate the parameters of the \textit{update model set}. Note that -the corresponding models in the two sets must have the same number of -states. - -As an example, suppose that we would like to update a set of cloned -single Gaussian monophone models in {\tt dir1/hmacs} using the well -trained state-clustered triphones in {\tt dir2/hmacs} as alignment -models. Associated with each model set are the model lists {\tt - hmmlist1} and {\tt hmmlist2} respectively. In order to use the -second model set for alignment a configuration file {\tt - config.2model} containing -\begin{verbatim} - # alignment model set for two-model re-estimation - ALIGNMODELMMF = dir2/hmacs - ALIGNHMMLIST = hmmlist2 -\end{verbatim} -is necessary. \htool{HERest} only needs to be invoked using that -configuration file. -\begin{verbatim} - HERest -C config -C config.2model -S trainlist -I labs -H dir1/hmacs -M dir3 hmmlist1 -\end{verbatim} -The models in directory {\tt dir1} are updated using the alignment -models stored in directory {\tt dir2} and the result is written to -directory {\tt dir3}. Note that {\tt trainlist} is a standard \HTK\ -script and that the above command uses the capability of HERest to -accept multiple configuration files on the command line. If each HMM -is stored in a separate file, the configuration variables {\tt - ALIGNMODELDIR} and {\tt ALIGNMODELEXT} can be used. - -Only the state level alignment is obtained using the alignment models. -In the exceptional case that the update model set contains mixtures of -Gaussians, component level posterior probabilities are obtained from -the update models themselves. - -\mysect{Parameter Re-Estimation Formulae}{bwformulae} - -\index{model training!re-estimation formulae} -For reference purposes, this section lists the various formulae -employed within the \HTK\ parameter estimation tools. -All are standard, however, the use of non-emitting -states and multiple data streams leads to various special cases which are -usually not covered fully in the literature. - -The following notation is used in this section -\begin{tabbing} -++ \= ++++++++ \= \kill -\> $N$ \> number of states \\ -\> $S$ \> number of streams \\ -\> $M_s$ \> number of mixture components in stream $s$\\ -\> $T$ \> number of observations \\ -\> $Q$ \> number of models in an embedded training sequence \\ -\> $N_q$ \> number of states in the $q$'th model in a training sequence \\ -\> $\bm{O}$ \> a sequence of observations \\ -\> $\bm{o}_t$ \> the observation at time $t$, $1 \leq t \leq T $ \\ -\> $\bm{o}_{st}$ \> the observation vector for stream $s$ at time $t$ \\ -\> $a_{ij}$ \> the probability of a transition from state $i$ to $j$ \\ -\> $c_{jsm}$ \> weight of mixture component $m$ in state $j$ stream $s$\\ -\> $\bm{\mu}_{jsm}$ \> vector of means for the mixture component $m$ of state $j$ - stream $s$\\ -\> $\bm{\Sigma}_{jsm}$ \> covariance matrix for the mixture component $m$ - of state $j$ stream $s$ \\ -\> $\lambda$ \> the set of all parameters defining a HMM -\end{tabbing} - -\subsection{Viterbi Training (\htool{HInit})} - -\index{model training!Viterbi formulae} -In this style of model training, a set of training observations -$\bm{O}^r, \;\; 1 \leq r \leq R$ is used to estimate the -parameters of a single HMM by iteratively computing Viterbi alignments. -When used to initialise a new HMM, the Viterbi segmentation is -replaced by a uniform segmentation (i.e.\ each training -observation is divided into $N$ equal segments) -for the first iteration. - -Apart from the first iteration on a new model, -each training sequence $\bm{O}$ is segmented using a state alignment procedure -which results from maximising -\[ - \phi_N(T) = \max_i \phi_i(T) a_{iN} -\] -for $1t \geq 1$ is -calculated by the backward recursion -\[ - \beta_i(t) = \sum_{j=2}^{N-1} a_{ij} b_j(\bm{o}_{t+1}) \beta_j(t+1) -\] -with initial conditions given by -\[ - \beta_i(T) = a_{iN} -\] -for $1 1$, -\[ - \alpha^{(q)}_{1}(t) = - \left\{ \begin{array}{cl} - 0 & \mbox{if $q=1$} \\ - \alpha^{(q-1)}_{N_{q-1}}(t-1) + - \alpha^{(q-1)}_1(t) a^{(q-1)}_{1N_{q-1}}& \mbox{otherwise} - \end{array} - \right. -\] -\[ - \alpha^{(q)}_j(t) = - \left[ - \alpha^{(q)}_1(t) a^{(q)}_{1j} + - \sum_{i=2}^{N_q-1} \alpha^{(q)}_{i}(t-1) a^{(q)}_{ij} - \right] - b^{(q)}_j(\bm{o}_t) -\] -\[ - \alpha^{(q)}_{N_q}(t) = - \sum_{i=2}^{N_q-1} \alpha^{(q)}_{i}(t) a^{(q)}_{iN_q} -\] -For the backward probability, the initial conditions are set at time -$t=T$ as follows -\[ - \beta^{(q)}_{N_q}(T) = - \left\{ \begin{array}{cl} - 1 & \mbox{if $q=Q$} \\ - \beta^{(q+1)}_{N_{q+1}}(T) a^{(q+1)}_{1N_{q+1}} & \mbox{otherwise} - \end{array} - \right. -\] -\[ - \beta^{(q)}_i(T) = a^{(q)}_{iN_q} \beta^{(q)}_{N_q}(T) -\] -\[ - \beta^{(q)}_1(T) = \sum^{N_q - 1}_{j=2} - a^{(q)}_{1j} b^{(q)}_j(\bm{o}_T) \beta^{(q)}_j(T) -\] -where once again, all unspecified $\beta$ values are zero. For -time $t - - * Makefile adapted for HDecode release - -2005-08-10 Anna Langley - - * Added: HForest, HFBLat - -2005-07-05 Mark Gales - * HAdapt.c fix - -2005-05-06 Anna Langley - - * Remove references to TimeStruct, SetTime, GiveTime from: - * HShell.c: - * HShell.h: - * HFB.c: - -2005-04-22 Matt Stuttle - - * HParm.c: - -2005-02-24 Anna Langley - - * Files for autoconf installs added - -2004-08-18 Andrew Liu - - * fix in HFB for component level 2 model single pass training - -2004-08-12 Gunnar Evermann - - * HUtil.c (PMix): Make item list parsing work with logweights. - -2004-08-09 Mark Gales - - * HAdapt.c (EstMLLRCovXForm): Use double-precision during - transform estimation. - -2004-08-08 Mark Gales - - * HAdapt.c (EstCMLLRXForm): Calculate determinant directly during - transform estimation. - -2004-08-07 Gunnar Evermann - - * HAdapt.c (FixDet): Make intermediate results double-precision. - - * HLat.c (ScanLLF): Print name of lattice skipped. - - * HShell.c (ReadUntilLine): Increase maximum length. - -2004-08-04 Antti-Veikko Rosti - - * HFB.c: Partial distance elimination (PDE) for faster training added. - Mixture weights in the log-scale are supported. New block in ShStr() - added for the case hset->numSharedMix == 0 to speed up training. - - * HModel.c: Mixture component re-ordering implemented for PDE and a - config option (REORDERCOMPS=FALSE) added. The components are sorted - according to descending gConst values before saving the model set. - - * HUtil.c, HUtil.h: Functions ConvLogWt() and ConvExtWt() added to - convert mixture weight into the log-scale and back. - -2004-07-31 Gunnar Evermann - - * HArc.c: Make trace variable static. - -2004-07-29 Gunnar Evermann - - * HForest.[hc]: new module. - - * HShell.[hc] (RegisterExtFileName): Export function RegisterExtFileName. - - * HLabel.c (LoadHTKList): - (SaveHTKLabels): New config variable HTKLABELTIMESCALE. Times in - HTK format label files are multiplied by this on loading and - divided by on saving. - -2004-07-23 Mark Gales - - * HAdapt.c: change TMF storage to output xform directory - * HModel.c: bug fix for sanity check on regression class tree parse. - * HFBLat.c: double semi-colon removal. - -2004-07-17 Antti-Veikko Rosti - - * HFBLat.c: Bug fix to correct mixture occupation caching in - UpMixParms(). - -2004-07-16 Mark Huckvale - - * HGraf.null.c (HTextHeight): Add placeholder function. - * HShell.h: CYGWIN compatibility. - -2004-07-14 Gunnar Evermann - - * HLat.c: Implement LLF processing to speedup loading of many - lattice files and reduce network traffic. - -2004-07-14 Antti-Veikko Rosti - - * HFB.c, HFBLat.c: Removed unused variables and unnecessary - transforms in ShStrP() and UpMixParms(). Added T_TIM trace - flag in HFBLat.c. - -2004-07-12 Antti-Veikko Rosti - - * HFB.c, HFBLat.c: increase the initial and maximum number of - elements in a block for heaps AlphaBetaFB and fbLatArcStore. - Added T_TIM trace in HFB.c. - - * HArc.c, HArc.h, HFB.c, HFB.h, HFBLat.c, HTrain.c, HTrain.h: - added mixture component output probability caching. - -2004-07-06 Gunnar Evermann - - * HShell.c: Limit MAXTRYOPEN to 3 to avoid thrashing file servers. - -2004-06-26 Gunnar Evermann - - * HModel.c (Str2BaseClassKind): Use correct BaseClassKind. - -2004-06-25 Gunnar Evermann - - * HLM.c (ReadNGrams): Avoid compiler warnings. - - * HAdapt.c (GetAlpha): use DVectorSize rather than VectorSize. - - * HFB.c (SetTraceFB): Replace extern traceFB variable with - function - - * HFBLat.c: Disable error-checking _exp() wrapper. - - * Makefile (clean): Remove icc's .il files - -2004-06-16 Gunnar Evermann - - * HFB.c: Make Forward Backward score check a warning rather than - an error. - -2004-06-15 Lan Wang - * HAdapt.c: bug fix for CMLLR (USEBIAS=F) - -2004-06-09 Kai Yu - * HFB.c: Component-level alignment in two-model re-estimation: - HFB:ALIGNCOMPLEVEL=TRUE to allow component-level alignment. The - aligned hmm and the update hmm should have the same component - number. - -2004-06-07 Gunnar Evermann - - * HLat.c (LatPrune): New lattice pruning mode: - HLAT:BEAMPRUNEARCS=F do not apply beam pruning to arcs. - -2004-04-26 K. Yu - - * HFBLat.[hc]: Add support for MMI priors in MPE training. - -2004-04-16 Gunnar Evermann - - * HParm.c (SetParmHMMSet): Mark ~j macro read from file specified - in HPARM:MATTRANFN as LOADFIDX instead of CREATEFIDX. Otherwise it - will be saved in TMFs. - -2004-04-02 Bin Jia - - * *.[ch]: Various fixes for new adaptation code. - -2004-02-18 Gunnar Evermann - - * HModel.h (LMINMIX): Correct value of LMINMIX. - -2004-01-30 Gunnar Evermann - - * HShell.c (MakeFN): Increase number of characters allowed in - filen names. - -2003-10-14 Gunnar Evermann - - * HModel.h: Redfine XFORM -- ugly hack to make HTK compile on - Windows. - - * HMath.c (minab): Rename min() macro to avoid potential conflict - with definition from stdlib.h. - (InvSVD): Rename variable small to isSmall to fix compilation - problem in Visual C++. - -2003-10-03 Gunnar Evermann - - * HModel.c (CheckDiscrete): Ensure that in discrete HMM Sets all - streams have width of 1. - - * HParm.c (AddQualifiers): Ensure tht HIGHDIFF=T is only used when - the source feature file does not contain derivatives. - -2003-10-02 Gunnar Evermann - - * HShell.h: Remove C++ type alias for Booleans. - -2003-09-23 Gunnar Evermann - - * HParm.c (EmptyBuffer): Initialise chType; - -2003-09-10 Gunnar Evermann - - * HShell.c (ParseString): Fix parsing of octal charcter codes. - From Tanel Alum�e - -2003-07-28 Anna Langley - * Makefile: corrected typo ($Arch) - -2003-07-28 Anna Langley - * htk_htklib_nt.mkf: applied changed supplied by Arlindo Veiga - which compile the HLat library. - -2003-07-21 S.E. Tranter - * HParm.c (OpenParmChannel): check that the end index in the - scp file doesnt overrun the end of the coded data file - -2003-07-08 Anna Langley - - * HAdapt.c, HArc.c, HMath.c, HModel.c, strarr.c: fixed compilation - warnings of unused variables. - -2003-07-09 Anna Langley - * HShell.c: - * HShell.h: - * HTrain.h: Minor modifications to allow compilation on win32 - -2003-06-03 M. J. F. Gales - - * HUtil.c: added code to support optional parsing of only the - physical HMMs. - - * HModel.c (GetBaseClass): Handle large HMM sets by only parsing - the Physical models. - (InitModel): added coinfig variable to allow storage of input - transform. Also bug fixes for storage of input transform with MMF. - (GetLinXForm): fixed problem with initialisation of transform - determinant. - - -2003-05-07 Lan Wang - - * HModel.c (GetLinXForm): Initialise xf->det. - -2003-04-30 Gunnar Evermann - - * HAdapt.c: apply 2003-04-02 change again. - -2003-04-22 Gunnar Evermann - - * HUtil.c (InitUtil): - (ResetUtilItemList): Increase maximum size of itemHeap blocks to - cope with large HMM sets. - -2003-04-17 Gunnar Evermann - - * HLabel.c (HASHSIZE): - * HModel.h (MACHASHSIZE): Increase hash tables sizes to deal with - large HMM sets, e.g. Mandarin tonal models. - -2003-04-04 Gunnar Evermann - - * revert previous (2003-04-02) change. - -2003-04-02 Lan Wang - - * HAdapt.c: speed-ups. - -2003-03-30 Gunnar Evermann - - * HNet.c (NewLattice): - (NewILattice): - (ReadOneLattice): Initialise ln->score to 0.0 - - * HLat.c (LatSetScores): New function: set ln->score to node - posterior. - -2003-03-27 Gunnar Evermann - - * HParm.c: Increase limit for length of config values. - -2003-03-12 Mark Gales - - * HUtil.c (PHIdent): Bug fix. Revert to old behaviour where - specifying non-existing models is silently ignored. - -2003-03-10 Dan Povey - - * HArc.c: Raise default trae level and check whether lattices have - phone marks - -2003-03-06 Lan Wang - - * HAdapt.c: - * HFBLat.c: - * HModel.[hc]: Bug fixes for adaptation estimation. - -2003-02-14 Gunnar Evermann - - * HModel.c (PutOptions): Save CovKind in MMF Options if it is - specified (i.e. not NULLC). - -2003-02-10 Gunnar Evermann - - * HMem.c (Dispose): Fix sanity check. - -2003-02-05 Dan Povey - - * HExactMPE.c: - * HFBLat.c: Fix for exact MPE. - -2003-02-05 Lan Wang - - * HFBLat.[hc]: Bug fixes for lattice MLLR and MMI(MPE).SAT.CMLLR. - -2003-02-05 Gunnar Evermann - - * HShell.c (PrintStdOpts): Add new transform options -E -J -K. - -2003-02-03 Mark Gales - - * HAdapt.[hc]: New adaptation code. - -2002-12-19 Gunnar Evermann - - * *.[hc]: Bump version to 3.2. - -2002-12-18 Gunnar Evermann - - * HLat.c: Fix error codes. - - * HLabel.c (MAXMLFS): Increase MAXMLFS from 20 to 200. - -2002-12-13 Dan Povey - - * HNet.c (GetFieldValue): Check length of string read from source. - - * HShell.[hc] (ReadStringWithLen): New function: like ReadString() - but checks string length. - -2002-12-10 Dan Povey - - * HShell.h: Clarify description of FOpen(). - - * HNet.c (CopyLattice): Set la->prlike fields. - (LatticeFromLabels): - -2002-11-21 Gunnar Evermann - - * HDict.h: Add aux field to WordPron structure for use in HDecode. - -2002-11-15 Mark Gales - - * HFB.c: Added compatibilty check for input transforms and 2 - model estimation - - * HModel.c: Corrected description - - * HParm.c: Corrected error codes from 999. - -2002-11-14 Dan Povey - - * HTrain.c: Use PreComps for PLAINHS in addition to SHAREDHS. - - * HTrain.[hc] (CreateWtAcc): Allocate WtAcc array once. - (ScalePDF): - (ScaleAccs): - (ScaleAccsParallel): New functions. - - * HShell.[hc] (SetTime): - (GiveTime): New functions - - * HNet.c (ReadOneLattice): Add field prscale to lattices. - -2002-11-14 Gunnar Evermann - - * HUtil.c (GoNextHMM): Fix use of (? :) in assignment. Previous - version wasn't ANSI C. - -2002-11-11 Andrew Liu - - * HMath.[hc] (LinTranQuaProd): New function. - -2002-11-08 Gunnar Evermann - - * HUtil.c (SetMacroHook): - (GetMacroUse): - (SetMacroUse): Support for InputXForm macro ~j. - * HModel.[hc]: Data Structures and functions for reading/writing - InputXFroms. - * HParm.[hc]: Apply input transform to data and variance scale - vectors. - Suport for third and fourth differntials. - - From: Andrew Liu - Mark Gales - -2002-10-30 Zhu Dong-Lai - - * HAdapt.c (GetMeanTransform): Fix implementation of MLLR for - block-diagonal transforms. - -2002-10-17 Dan Povey - - * HTrain.[hc] (CreateMuAcc): - (CreateVaAcc): - (CreateTrAcc): - (CreateWtAcc): - (TMAttachAccs): - (AttachAccsParallel): - (TMZeroAccs): - (ZeroAccsParallel): - (TMShowAccs): - (ShowAccsParallel): - (AttachPreComps): - (DumpAccsParallel): - (LoadAccsParallel): - (RestorePDF): - (RestoreAccsParallel): Support for parallel accumulators. - - (LoadWtAcc): - (LoadMuAcc): - (LoadVaAcc): Check for infinity in accumulator files. - -2002-10-16 Dan Povey - - * HNet.c (ReadOneLattice): Initialise lattice fields. - Set pronunciation variant for arclabs lattices. - -2002-08-28 Gunnar Evermann - - * HFB.c (InitFB): - (InitialiseForBack): Allow setting of pruning threshold via config - variables. Values specified via calls to InitialiseForBack() take - precedence. - (InitFB): Allow module name HFWDBKWD in config files for backward - compatibility. - -2002-07-12 Thomas Hain - - * HTrain.h: Added prototype for AttachPreComps - * HTrain.c (AttachPreComps): Added function - * HFB.h: Added prototype for UseAlignHMMSet, extended structs - to allow 2model re-estimation. - * HFB.c : Added capability to use one model set for FB - and one for model updates. - * HModel.h: Added ext function prototype for ApplyVFloor - * HModel.c (ApplyVFloor): New function to apply variance floor to - hset - -2002-08-13 Gunnar Evermann - - * HNet.c (ConvLogLikeFromBase): - (ConvLogLikeToBase): New function for for conversion of log - likelihoods for reading/storing lattices in files. - (WriteLattice): - (WriteOneLattice): - (ReadOneLattice): Support for "base" and "tscale" lattice header - fields. - -2002-08-13 Gunnar Evermann - - * HModel.c (PutOptions): Save CovKind in MMF Options if it is - specified (i.e. not NULLC). - (SetCovKindUsage): New function. Set HMMSet CovKind if it is - unspecified but consistent across mixtures. - -2002-08-09 Gunnar Evermann - - * HLM.h: Add new LMType: hlmModel. - - * HMem.h: - * HMem.c (CNew): New function. - - * HLabel.c (GetTrSym): Fix buffer overrun. - (ExtendAux): Check number of levels. - * HShell.h: Remove comments referring to LClass. - From: Gareth Moore - -2002-07-16 Gunnar Evermann - - * HNet.c (WriteOneLattice): Always re-order lattice nodes, even if - we don't store them. - -2002-06-27 Gunnar Evermann - - * HParm.h: Add prototypes for Ext data source functions. - From: Peter Gober - - * HParm.c (OpenAsChannel): Fix buffer allocation for ch_ext_wave. - From: Peter Gober - -2002-06-11 Gunnar Evermann - - * HLat.c (LatFindBest): If give pronunciation variant can't be - found in dicitonary (e.g. if it only is a word list), then fall - back to word name as the output symbol. - -2002-06-05 Gunnar Evermann - - * HLM.c (LMTrans): New function for use in HLat and decoders. - (ReadNGrams): Add support for reading binary ARPA N-grams. - - * HLM.h (NSIZE): Allow 4-grams. - - * HLat.[hc]: Add new module. - -2002-06-05 Gunnar Evermann - - * *.[hc]: Bump version to 3.1.1. - -2002-06-05 Gunnar Evermann - - * HModel.c (GetTransMat): Check for wrong TransP matrix size. - From: Peter Gober - -2002-02-14 Gunnar Evermann - - * HNet.c (FindWordNode): - (NewNode): - (CreateX1Model): - (ExpandWordNet): Initialise node->aux to 0. - From: K.K. Chin - -2002-01-24 Gunnar Evermann - - * Makefile (HTKLib.$(CPU).a): Always add all modules. - -2002-01-16 Gunnar Evermann - - * *.[hc]: Bump version to 3.1. - -2001-12-11 Gareth Moore - - * HShell.c (PrintStdOpts): Tool usage report formatting tidied. - -2001-12-03 Gunnar Evermann - - * HModel.c (LoadHMMSet): Check hset consistency before assigning - indexes. - -2001-11-23 Gunnar Evermann - - * HNet.c (NewPronHolder): Handle prons will NULL outSym. - -2001-08-28 Gunnar Evermann - - * HDict.c (ShowDict): Handle prons with NULL outSym. - -2001-08-03 Gunnar Evermann - - * HNet.h: Add aux field to NetNode. - * HRec.c (TokSetMerge): Compare NetNodes instead of Prons when - deciding which tokens to recombine. - From: K.K. Chin - -2001-06-08 Gunnar Evermann - - * HParm.c: Correct initialisation of IOConfigRec defChan - From: Mark Gales - - -2001-04-18 Gunnar Evermann - - * HSigP.c (ASpec2LPCep): Init lp[lpcOrder+1] to avoid reading from - uninitialised in LPC2Cepstrum(). This doesn't change the results - but makes Purify et al. happy. - -2001-04-17 Gunnar Evermann - - * HVQ.c (VQNodeScore): - * HLM.c (WriteBoNGram): Fix error codes. - - * HSigP.c (ASpec2LPCep): New error code 5323 for PLP. - - * HParm.c (RunSilDet): - (SetExtSpDetParms): New error code 6325 for sil detector errors. - - * HNet.c : New error code 8253 for Sublat errors. - - * HMem.c: Remove unused license check. - - * Makefile (depend): New target. Add header file dependencies. - - * HFB.c (StepBack): Print top-level trace messages if traceHFB - (set by 'HERest -T 1') is true. - -2001-04-14 Gunnar Evermann - - * HFB.c (StepForward): Always initialise ab->occa. - -2001-04-13 Gunnar Evermann - - * HNet.c (WriteOneLattice): Fix sort order of lattice arcs. - - * HRec.c (InitVRecInfo): Initialise sanity checking info. - (CollectPaths): Fix some silly if statements. - (NewNRefPath): Initialise used field. - (NewNRefAlign): Ditto. - - * HParm.c (InitParm): Initialise fields of defChan. - -2001-04-12 Gunnar Evermann - - * HParm.c (LoadVarScale): - (LoadVarScaleVector): - (LoadCMeanVector): Check InitSource return value. - -2001-04-11 Gunnar Evermann - - * HShell.c (ReadRawString): Moved from HDman. - - * HParm.c: - * HSigP.c (Wave2FBank): - (InitFBank): Implement Vocal Tract Length Normalisation. - -2001-04-09 Gunnar Evermann - - * HParm.c: - * HSigP.c (InitFBank): Make DOUBLEFFT a config variable. - -2001-03-14 Gunnar Evermann - - * HNet.c (NewLattice): Initialise prlike. - -2001-03-08 Gunnar Evermann - - * HWave.c (OpenWaveInput): Handle extended filenames. - -2001-02-09 Gunnar Evermann - - * HParm.c: - * HShell.[hc]: Moved MaskMatch to HShell. - -2001-02-07 Gunnar Evermann - - * HParm.c: Add side-based normalisation. - -2001-02-02 Gunnar Evermann - - * HSigP.c: - * HParm.h: - * HParm.c: Add support for PLP frontend. - -2000-12-04 Gunnar Evermann - - * HLabel.c (SaveESPSLabels): Don't close f here, it's done in LSave. - -2000-11-30 Gunnar Evermann - - * HShell.c (PrintStdOpts): Modify description of -B option. - -2000-11-16 Gunnar Evermann - - * HRec.c (cSOutP): Take log of mixture weight. - From Ruth Aloni-lavi - -2000-11-10 Gunnar Evermann - - * HMem.h: - * HMem.c: Consistently use size_t for all memory block sizes - instead of mixing signed/unsigned int/long. - -2000-10-26 Gunnar Evermann - - * HFB.h: - * HFB.c (FBFile): Return Boolean indicating whether alignment - succeeded. - From: Mark Gales - -2000-10-06 Gunnar Evermann - - * HSigP.c: - * HMem.c: - * HMath.c: - * HLabel.c: - * HAudio.c: Remove MPW segment pragmas. - -2000-10-06 Steve Young - - * HShell.c (KeyPressed): On Win32 check for KeyDown to avoid - registering key twice. - -2000-09-25 Gunnar Evermann - - * HShell.c (InfoPrinted): Remove reference to SCCS. - - * Makefile: Copy compile settings from env files. - -2000-09-15 Gunnar Evermann - - * HAdapt.c (GetSymbol): - * HUtil.c (GetKey): - * HGraf.c (HSetColour,HSetGrey,HSetFontSize,HSetLineWidth,InitGCs): - * HParm.c (ReadIOConfig): - * HWave.c (Str2Format): C++ fix for incrementing enums. - - * HLabel.c (GetScribeLab): Warning fix. - -2000-09-13 G. Evermann - - * htk_htklib_nt.mkf: Use HGraf_WIN32.obj. - -2000-09-08 Gunnar Evermann - - * esig_edr.c: - * esig_asc.c: - * esignal.c: - * HMem.c: - * HFB.c: - * HAdapt.c: - * HNet.c: - * HRec.c: - * HNet.h: - * HLM.c: - * HDict.c: - * HTrain.c: - * HUtil.c: - * HModel.c: - * HLabel.c: - * HGraf.c: - * HVQ.c: - * HParm.c: - * HAudio.c: - * HWave.c: - * HSigP.c: - * Hshell.c: - * HMath.c: Warning elimination. - Explicitly cast malloc return values to avoid C++ warnings. - Remove unused variables. - Put parentheses about assignments used as truth values. - Explicitly cast doubles to ints. - Use correct format chars in printf calls. - C++ compatability. - Many of the warning fixes are from Dave Hart - - * HMath.c (FixSVD): #ifdef 0 unused code. - - * HShell.h: Use predefined type bool in C++. - - * HModel.c: Use EOFSYM in symMap[] instead of EOF (from stdio.h!). - - * HLabel.c (SaveToMasterfile): Return FAIL if no file name given. - - * HAudio.c (InitAudi): Call IsVAXOrder instead of treating its - address as a Boolen. - - -2000-09-06 Gunnar Evermann - - * *.h: Guard against repeated inclusion. - Add C++ wrapper. - -2000-09-04 Gunnar Evermann - - * *.[hc]: Reindented. - - * *.[hc]: Cleaned up version headers and set version to 3.0. - diff --git a/HTKLib/ChangeLog.CUHTK b/HTKLib/ChangeLog.CUHTK deleted file mode 100644 index 49501d0..0000000 --- a/HTKLib/ChangeLog.CUHTK +++ /dev/null @@ -1,16 +0,0 @@ -2002-12-10 Dan Povey - - * HArc.c: Clean-up indentation. - - * HFBLat.c: Fix. - -2002-11-16 Dan Povey - - * HFBLat.c: General clean-up of comments and indentation. - -2002-11-14 Dan Povey - - * HArc.[hc]: - * HFBLat.[hc]: - * HExactMPE.[hc]: New modules. - diff --git a/HTKLib/HANNet.c b/HTKLib/HANNet.c new file mode 100755 index 0000000..b7f5dfd --- /dev/null +++ b/HTKLib/HANNet.c @@ -0,0 +1,1545 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HANNet.c ANN model definition data type */ +/* ----------------------------------------------------------- */ + +char *hannet_version = "!HVER!HANNet: 3.5.0 [CUED 12/10/15]"; +char *hannet_vc_id = "$Id: HANNet.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +#include "config.h" +#include +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HAudio.h" +#include "HParm.h" +#include "HLabel.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HDict.h" +#include "HAdapt.h" +#include + +/* ------------------------------ Trace Flags ------------------------------ */ + +static int trace = 0; + +#define T_TOP 0001 +#define T_CCH 0002 + +/* --------------------------- Memory Management --------------------------- */ + + +/* ----------------------------- Configuration ------------------------------*/ + +static ConfParam *cParm[MAXGLOBS]; /* config parameters */ +static int nParm = 0; +static size_t batchSamples = 1; /* the number of samples in batch; 1 sample by default */ +static char ANNUpdateFlagStr[MAXSTRLEN]; /* the string pointer indicating the layers to update */ +/*static char layerUpdateFlagStr[MAXSTRLEN];*/ /* cz277 - 150811 */ +/*static char actfunUpdateFlagStr[MAXSTRLEN];*/ /* cz277 - 150811 */ +static char matrixUpdateFlagStr[MAXSTRLEN]; /* cz277 - 151020 */ +static char vectorUpdateFlagStr[MAXSTRLEN]; /* cz277 - 151020 */ + +/*static Boolean hasShownUpdtFlag = FALSE;*/ +/* cz277 - 1007 */ +static int batchIndex = 0; +/* cz277 - 150811 */ +static RILink headNMatRPLInfo = NULL; +static int numNMatRPLInfo = 0; +static RILink headNVecRPLInfo = NULL; +static int numNVecRPLInfo = 0; +static char maskStrNMatRPLInfo[MAXSTRLEN]; +static char inDirStrNMatRPLInfo[MAXSTRLEN]; +static char extStrNMatRPLInfo[MAXSTRLEN]; +static char outDirStrNMatRPLInfo[MAXSTRLEN]; +static char maskStrNVecRPLInfo[MAXSTRLEN]; +static char inDirStrNVecRPLInfo[MAXSTRLEN]; +static char extStrNVecRPLInfo[MAXSTRLEN]; +static char outDirStrNVecRPLInfo[MAXSTRLEN]; + +/* get the batch size */ +int GetNBatchSamples(void) { + return batchSamples; +} + +/* set the batch size */ +void SetNBatchSamples(int userBatchSamples) { + batchSamples = userBatchSamples; +#ifdef CUDA + RegisterTmpNMat(1, batchSamples); +#endif +} + +/* cz277 - xform */ +/*void InitRPLInfo(RPLInfo *rplInfo) { + rplInfo->nSpkr = 0; + rplInfo->inRPLMask = NULL; + rplInfo->curOutSpkr = NewString(&gcheap, MAXSTRLEN); + rplInfo->curInSpkr = NewString(&gcheap, MAXSTRLEN); + rplInfo->cacheInSpkr = NewString(&gcheap, MAXSTRLEN); + rplInfo->inRPLDir = NULL; + rplInfo->inRPLExt = NULL; + rplInfo->outRPLDir = NULL; + rplInfo->outRPLExt = NULL; + rplInfo->saveBinary = FALSE; + rplInfo->rplNMat = NULL; + memset(&rplInfo->saveRplNMatHost, 0, sizeof(NMatHost)); + rplInfo->rplNVec = NULL; + memset(&rplInfo->saveRplNVecHost, 0, sizeof(NVecHost)); +}*/ + +/* */ +void InitANNet(void) +{ + int intVal; + ConfParam *cpVal; + + /* cz277 - 150811 */ + strcpy(ANNUpdateFlagStr, ""); + /*strcpy(layerUpdateFlagStr, ""); + strcpy(actfunUpdateFlagStr, "");*/ + /* cz277 - 1501020 */ + strcpy(matrixUpdateFlagStr, ""); + strcpy(vectorUpdateFlagStr, ""); + + /* cz277 - 150811 */ + strcpy(maskStrNMatRPLInfo, ""); + strcpy(inDirStrNMatRPLInfo, ""); + strcpy(extStrNMatRPLInfo, ""); + strcpy(outDirStrNMatRPLInfo, ""); + strcpy(maskStrNVecRPLInfo, ""); + strcpy(inDirStrNVecRPLInfo, ""); + strcpy(extStrNVecRPLInfo, ""); + strcpy(outDirStrNVecRPLInfo, ""); + + Register(hannet_version, hannet_vc_id); + nParm = GetConfig("HANNET", TRUE, cParm, MAXGLOBS); + + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) { + trace = intVal; + } + if (GetConfInt(cParm, nParm, "MINIBATCHSIZE", &intVal)) { + if (intVal <= 0) + HError(8720, "InitANNet: Negative or zero batch size"); + SetNBatchSamples(intVal); + } + /* cz277 - 150811 */ + if (GetConfAny(cParm, nParm, "ANNUPDATEFLAG", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: ANNUPDATEFLAG has to be string kind"); + strcat(ANNUpdateFlagStr, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(ANNUpdateFlagStr, ";"); + cpVal = cpVal->append; + } + } + /* cz277 - 151020 */ + if (GetConfAny(cParm, nParm, "NMATUPDATEFLAG", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: NMATUPDATEFLAG has to be string kind"); + strcat(matrixUpdateFlagStr, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(matrixUpdateFlagStr, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "NVECUPDATEFLAG", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: NVECUPDATEFLAG has to be string kind"); + strcat(vectorUpdateFlagStr, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(vectorUpdateFlagStr, ";"); + cpVal = cpVal->append; + } + } + /* cz277 - 150811 */ + if (GetConfAny(cParm, nParm, "REPLACEABLENMATMASK", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATMASK has to be string kind"); + strcat(maskStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(maskStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENMATINDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATINDIR has to be string kind"); + strcat(inDirStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(inDirStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENMATEXT", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATEXT has to be string kind"); + strcat(extStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(extStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENMATOUTDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATOUTDIR has to be string kind"); + strcat(outDirStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(outDirStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECMASK", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECMASK has to be string kind"); + strcat(maskStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(maskStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECINDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECINDIR has to be string kind"); + strcat(inDirStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(inDirStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECEXT", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECEXT has to be string kind"); + strcat(extStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(extStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECOUTDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECOUTDIR has to be string kind"); + strcat(outDirStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(outDirStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + } + +} + + +/* cz277 - 150811 */ +char *GetANNUpdateFlagStr() { + return ANNUpdateFlagStr; +} + +/* cz277 - 150820 */ +char *GetNMatUpdateFlagStr() { + return matrixUpdateFlagStr; +} + +/* cz277 - 150820 */ +char *GetNVecUpdateFlagStr() { + return vectorUpdateFlagStr; +} + +/* cz277 - 150811 */ +/*char *GetLayerUpdateFlagStr() { + return layerUpdateFlagStr; +}*/ + +/* cz277 - 150811 */ +/*char *GetActFunUpdateFlagStr() { + return actfunUpdateFlagStr; +}*/ + +/* cz277 - 150811 */ +char *GetMaskStrNMatRPLInfo() { + return maskStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetInDirStrNMatRPLInfo() { + return inDirStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetExtStrNMatRPLInfo() { + return extStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetOutDirStrNMatRPLInfo() { + return outDirStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetMaskStrNVecRPLInfo() { + return maskStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +char *GetInDirStrNVecRPLInfo() { + return inDirStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +char *GetExtStrNVecRPLInfo() { + return extStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +char *GetOutDirStrNVecRPLInfo() { + return outDirStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +RILink GetHeadNMatRPLInfo() { + return headNMatRPLInfo; +} + +/* cz277 - 150811 */ +RILink GetHeadNVecRPLInfo() { + return headNVecRPLInfo; +} + +/* cz277 - 150811 */ +void SetHeadNMatRPLInfo(RILink info) { + headNMatRPLInfo = info; +} + +/* cz277 - 150811 */ +void SetHeadNVecRPLInfo(RILink info) { + headNVecRPLInfo = info; +} + +int GetNumNMatRPLInfo() { + return numNMatRPLInfo; +} + +int GetNumNVecRPLInfo() { + return numNVecRPLInfo; +} + +void SetNumNMatRPLInfo(int n) { + numNMatRPLInfo = n; +} + +void SetNumNVecRPLInfo(int n) { + numNVecRPLInfo = n; +} + +int GetGlobalBatchIndex() { + return batchIndex; +} + +void SetGlobalBatchIndex(int index) { + batchIndex = index; +} + +static inline void FillBatchFromFeaMixOLD(FeaMix *feaMix, int batLen, int *CMDVecPL) { + int i, j, k, srcOff = 0, curOff = 0, dstOff, hisOff, hisDim; + FELink feaElem; + + /* if it is the shared */ + if (feaMix->feaList[0]->feaMats[0] == feaMix->mixMats[0]) + return; + + /* cz277 - 1007 */ + if (feaMix->batchIndex != batchIndex - 1 && feaMix->batchIndex != batchIndex) + HError(8790, "FillBatchFromFeaMix: Wrong batch index"); + else if (feaMix->batchIndex == batchIndex) + return; + else + ++feaMix->batchIndex; + + /* otherwise, fill the batch with a mixture of the FeaElem */ + for (i = 0; i < feaMix->elemNum; ++i) { + feaElem = feaMix->feaList[i]; + + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { + for (j = 0, srcOff = 0, dstOff = curOff; j < batLen; ++j, srcOff += feaElem->extDim, dstOff += feaMix->mixDim) { + CopyNSegment(feaElem->feaMats[0], srcOff, feaElem->extDim, feaMix->mixMats[0], dstOff); + } + } + else if (feaElem->inputKind == ANNFEAIK) { /* ANNFEAIK, left context is consecutive */ + for (j = 0; j < batLen; ++j) { + /* cz277 - gap */ + hisDim = feaElem->hisLen * feaElem->feaDim; + hisOff = j * hisDim; + if (CMDVecPL != NULL && feaElem->hisMat != NULL) { + if (CMDVecPL[j] == 0) { /* reset the history */ + ClearNMatrixSegment(feaElem->hisMat, hisOff, hisDim); + } + else if (CMDVecPL[j] > 0) { /* shift the history */ + CopyNSegment(feaElem->hisMat, CMDVecPL[j] * hisDim, hisDim, feaElem->hisMat, hisOff); + } + } + /* standard operations */ + dstOff = j * feaMix->mixDim + curOff; + for (k = 1; k <= feaElem->ctxMap[0]; ++k, dstOff += feaElem->feaDim) { + if (feaElem->ctxMap[k] < 0) { + /* first, previous segments from hisMat to feaMix->mixMat */ + srcOff = ((j + 1) * feaElem->hisLen + feaElem->ctxMap[k]) * feaElem->feaDim; + CopyNSegment(feaElem->hisMat, srcOff, feaElem->feaDim, feaMix->mixMats[0], dstOff); + } + else if (feaElem->ctxMap[k] == 0) { + /* second, copy current segment from feaMat to feaMix->mixMat */ + srcOff = j * feaElem->srcDim + feaElem->dimOff; + CopyNSegment(feaElem->feaMats[0], srcOff, feaElem->feaDim, feaMix->mixMats[0], dstOff); + } + else { + HError(9999, "FillBatchFromFeaMix: The future of ANN features are not applicable"); + } + } + /* shift history info in hisMat and copy current segment from feaMat to hisMat */ + if (feaElem->hisMat != NULL) { + dstOff = hisOff; + srcOff = dstOff + feaElem->feaDim; + for (k = 0; k < feaElem->hisLen - 1; ++k, srcOff += feaElem->feaDim, dstOff += feaElem->feaDim) { + CopyNSegment(feaElem->hisMat, srcOff, feaElem->feaDim, feaElem->hisMat, dstOff); + } + srcOff = j * feaElem->srcDim + feaElem->dimOff; + CopyNSegment(feaElem->feaMats[0], srcOff, feaElem->feaDim, feaElem->hisMat, dstOff); + } + } + } + curOff += feaElem->extDim; + } +} + +/* cz277 - xform */ +static inline void FillBatchFromFeaMix(LELink layerElem, int batLen) { + int i, j, k, l, n, m, srcOff, curOff, dstOff, t, c, curCtx; + FELink feaElem; + FeaMix *feaMix; + NMatrix *mixMat, *feaMat; + + feaMix = layerElem->feaMix; + if (feaMix->batchIndex != batchIndex - 1 && feaMix->batchIndex != batchIndex) + HError(8790, "FillBatchFromFeaMix: Problematic batch index of a feaMix"); + if (feaMix->batchIndex == batchIndex) + return; + /* update the batchIndex */ + ++feaMix->batchIndex; + + /* if mixMats are shared with feaMats -- no need to reload the features */ + if (feaMix->elemNum == 1) { + feaElem = feaMix->feaList[0]; + if (!(feaElem->inputKind == ANNFEAIK && IntVecSize(feaElem->ctxMap) > 1)) + return; + } + /* if feaMat is shared and is processed for current batch */ + /*if (feaMix->batchIndex != batchIndex || feaMix->batchIndex != batchIndex + 1) + HError(9999, "FillBatchFromFeaMix: Wrong batch index"); + else if (feaMix->batchIndex == batchIndex + 1) + return; + ++feaMix->batchIndex;*/ + /* otherwise */ + n = IntVecSize(layerElem->drvCtx); + for (i = 1, j = 1; i <= n; ++i) { + while (layerElem->drvCtx[i] != feaMix->ctxPool[j]) + ++j; + mixMat = feaMix->mixMats[j]; + for (k = 0, curOff = 0; k < feaMix->elemNum; ++k) { + feaElem = feaMix->feaList[k]; + l = 1; + /* 1. extended input features */ + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { + if (feaElem->inputKind == INPFEAIK) { + while (layerElem->drvCtx[i] != feaElem->ctxPool[l]) + ++l; + } + feaMat = feaElem->feaMats[l]; + for (t = 0, srcOff = 0, dstOff = curOff; t < batLen; ++t, srcOff += feaElem->extDim, dstOff += feaMix->mixDim) { + CopyNSegment(feaMat, srcOff, feaElem->extDim, mixMat, dstOff); + } + } + else if (feaElem->inputKind == ANNFEAIK) { /* 2. ANN features */ + m = IntVecSize(feaElem->ctxMap); + for (c = 1; c <= m; ++c) { + curCtx = feaElem->ctxMap[c] + layerElem->drvCtx[i]; + while (curCtx != feaElem->ctxPool[l]) + ++l; + feaMat = feaElem->feaMats[l]; + for (t = 0; t < batLen; ++t) { + srcOff = t * feaElem->srcDim + feaElem->dimOff; + dstOff = t * feaMix->mixDim + curOff + (c - 1) * feaElem->feaDim; + CopyNSegment(feaMat, srcOff, feaElem->feaDim, mixMat, dstOff); + } + } + } + curOff += feaElem->extDim; + } + } +} + + +/* fill a batch with error signal */ +static inline void FillBatchFromErrMixOLD(FeaMix *errMix, int batLen, NMatrix *mixMat) { + int i, j, srcOff, dstOff; + FELink errElem; + + /* if it is the shared */ + if (errMix->feaList[0]->feaMats[1] == mixMat) { + return; + } + + /* otherwise, fill the batch with a mixture of the FeaElem */ + dstOff = 0; + /* reset mixMat to 0 */ + /*SetNMatrix(0.0, mixMat, batLen);*/ + ClearNMatrix(mixMat, batLen); + /* accumulate the error signals from each source */ + for (i = 0; i < batLen; ++i) { + for (j = 0; j < errMix->elemNum; ++j) { + errElem = errMix->feaList[j]; + srcOff = i * errElem->srcDim + errElem->dimOff; + AddNSegment(errElem->feaMats[1], srcOff, errElem->extDim, mixMat, dstOff); + dstOff += errElem->extDim; + } + } +} + +/* cz277 - many */ +static inline void FillBatchFromErrMix(LELink layerElem, int batLen) { + int c, i, j, k, l, m, n, t, srcOff, dstOff; + FELink errElem; + FeaMix *errMix; + + errMix = layerElem->errMix; + if (errMix == NULL) + return; + if (errMix->batchIndex != batchIndex - 1 && errMix->batchIndex != batchIndex) + HError(8790, "FillBatchFromErrMix: Wrong batch index of an errMix"); + if (errMix->batchIndex == batchIndex) + return; + /* update the batchIndex */ + ++errMix->batchIndex; + + if (errMix->elemNum == 1) { + errElem = errMix->feaList[0]; + if (IntVecSize(errElem->ctxMap) == 1) + if (errElem->srcDim == errElem->feaDim) + return; + } + + n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) + ClearNMatrix(errMix->mixMats[i], batLen); + + for (i = 0; i < errMix->elemNum; ++i) { + errElem = errMix->feaList[i]; + m = IntVecSize(errElem->ctxPool); + n = IntVecSize(errElem->ctxMap); + for (j = 1; j <= m; ++j) { + for (k = 1; k <= n; ++k) { + srcOff = errElem->dimOff + (k - 1) * errElem->feaDim; + c = errElem->ctxPool[j] + errElem->ctxMap[k]; + l = 1; + while (errMix->ctxPool[l] != c) + ++l; + for (t = 0, dstOff = 0; t < batLen; ++t, srcOff += errElem->srcDim, dstOff += errElem->feaDim) { + AddNSegment(errElem->feaMats[j], srcOff, errElem->feaDim, errMix->mixMats[l], dstOff); + } + } + } + } + + /* scale the mixMats */ + /*n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) { + if (layerElem->trainInfo->drvCnt[i] > 1) + ScaleNMatrix(1.0 / (float) layerElem->trainInfo->drvCnt[i], batLen, errMix->mixDim, errMix->mixMats[i]); + }*/ + +} + + +/* temp function */ +void ShowAddress(ANNSet *annSet) { + /*int i;*/ + AILink curAI; + ADLink annDef; + /*LELink layerElem;*/ + + curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + printf("ANNInfo = %p. ANNDef = %p: \n", curAI, annDef); + /*for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i];*/ + /*printf("layerElem = %p, feaMix[0]->feaMat = %p, xFeaMat = %p, yFeaMat = %p, trainInfo = %p, dxFeaMat = %p, dyFeaMat = %p, labMat = %p\n", layerElem, layerElem->feaMix->feaList[0]->feaMat, layerElem->xFeaMat, layerElem->yFeaMat, layerElem->trainInfo, layerElem->trainInfo->dxFeaMat, layerElem->trainInfo->dyFeaMat, layerElem->trainInfo->labMat);*/ + /*} + printf("\n");*/ + curAI = curAI->next; + } +} + +/* update the map sum matrix for outputs */ +void UpdateOutMatMapSum(ANNSet *annSet, int batLen, int streamIdx) { + + /* cz277 - many */ + HNBlasTNgemm(annSet->mapStruct->mappedTargetNum, batLen, annSet->outLayers[streamIdx]->nodeNum, 1.0, annSet->mapStruct->maskMatMapSum[streamIdx], annSet->outLayers[streamIdx]->yFeaMats[1], 0.0, annSet->mapStruct->outMatMapSum[streamIdx]); +} + +/* update the map sum matrix for labels */ +void UpdateLabMatMapSum(ANNSet *annSet, int batLen, int streamIdx) { + + HNBlasTNgemm(annSet->mapStruct->mappedTargetNum, batLen, annSet->outLayers[streamIdx]->nodeNum, 1.0, annSet->mapStruct->maskMatMapSum[streamIdx], annSet->outLayers[streamIdx]->trainInfo->labMat, 0.0, annSet->mapStruct->labMatMapSum[streamIdx]); +} + + +/* the batch with input features are assumed to be filled */ +void CheckANNBatchIndex(ANNSet *annSet, int index) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + Boolean first = TRUE; + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "CheckANNBatchIndex: Function not implemented"); break; + case CONVOLUTIONLAK: HError(8701, "CheckANNBatchIndex: Function not implemented"); break; + case PERCEPTRONLAK: + if (index < 0 && first == TRUE) { + index = layerElem->wghtMat->batchIndex; + first = FALSE; + } + if (layerElem->wghtMat->batchIndex != index) + HError(8790, "CheckANNBatchIndex: Wrong batch index of ~M \"%s\"", layerElem->wghtMat->id->name); + if (layerElem->biasVec->batchIndex != index) + HError(8790, "CheckANNBatchIndex: Wrong batch index of ~V \"%s\"", layerElem->biasVec->id->name); + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + if (layerElem->actfunVecs[j]->batchIndex != index) + HError(8790, "CheckANNBatchIndex: Wrong batch index of ~V \"%s\"", layerElem->actfunVecs[j]->id->name); + break; + case SUBSAMPLINGLAK: HError(8701, "CheckANNBatchIndex: Function not implemented"); break; + default: + HError(8791, "CheckANNBatchIndex: Unknown layer kind"); + } + } + + /* get the next ANNDef */ + curAI = curAI->next; + } +} + +/* cz277 - batch sync */ +/* the batch with input features are assumed to be filled */ +void SetNBundleBatchIndex(ANNSet *annSet, int index) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "SetANNBatchIndex: Function not implemented"); break; + case CONVOLUTIONLAK: HError(8701, "SetANNBatchIndex: Function not implemented"); break; + case PERCEPTRONLAK: + layerElem->wghtMat->batchIndex = index; + layerElem->biasVec->batchIndex = index; + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->batchIndex = index; + break; + case SUBSAMPLINGLAK: HError(8701, "SetANNBatchIndex: Function not implemented"); break; + default: + HError(8791, "SetANNBatchIndex: Unknown layer kind"); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + + +/* the batch with input features are assumed to be filled */ +void SetFeaMixBatchIndex(ANNSet *annSet, int index) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /*batchIndex = index;*/ + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + if (layerElem->feaMix != NULL) + layerElem->feaMix->batchIndex = index; + if (layerElem->errMix != NULL) + layerElem->errMix->batchIndex = index; + } + + /* get the next ANNDef */ + curAI = curAI->next; + } + +} + + +/* cz277 - pact */ +/* y = 1 / sqrt(var) * x + (- mean / sqrt(var)) */ +static void InitAffineScaleByVar(int vecLen, NVector *varVec) { + int i; + + if (!(vecLen <= varVec->vecLen)) + HError(8721, "InitAffineScaleByVar: Wrong vector length"); +#ifdef CUDA + SyncNVectorDev2Host(varVec); +#endif + /* convert variance */ + for (i = 0; i < vecLen; ++i) { + if (varVec->vecElems[i] <= 0.0) + HError(8721, "InitAffineScaleByVar: variance should be > 0.0"); + varVec->vecElems[i] = 1.0 / sqrt(varVec->vecElems[i]); + } +#ifdef CUDA + SyncNVectorHost2Dev(varVec); +#endif +} + +/* cz277 - pact */ +/* y = 1 / sqrt(var) * x + (- mean / sqrt(var)) */ +static void InitAffineShiftByMean(int vecLen, NVector *scaleVec, NVector *meanVec) { + int i; + + if (!(vecLen <= meanVec->vecLen && vecLen <= scaleVec->vecLen)) + HError(8721, "InitAffineShiftByMean: Wrong vector length"); +#ifdef CUDA + SyncNVectorDev2Host(meanVec); + SyncNVectorDev2Host(scaleVec); +#endif + /* convert mean */ + for (i = 0; i < vecLen; ++i) + meanVec->vecElems[i] = (-1.0) * meanVec->vecElems[i] * scaleVec->vecElems[i]; +#ifdef CUDA + SyncNVectorHost2Dev(meanVec); + SyncNVectorHost2Dev(scaleVec); +#endif +} + +/* cz277 - pact */ +void DoStaticUpdateOperation(int status, int drvIdx, LELink layerElem, int batLen) { + double nSamples; + size_t *cnt1, *cnt2; + + if (layerElem->trainInfo == NULL) + return; + if (layerElem->trainInfo->initFlag == FALSE) + return; + + switch (layerElem->actfunKind) { + case AFFINEAF: + if (layerElem->drvCtx[drvIdx] == 0) { + cnt1 = (size_t *) layerElem->actfunVecs[1]->accptr; + cnt2 = (size_t *) layerElem->actfunVecs[2]->accptr; + switch (status) { + case 0: + *cnt1 += batLen; + *cnt2 += batLen; + break; + case 1: + nSamples = *cnt2; + if (nSamples == 0) + HError(-8721, "DoStaticUpdateOperation: nSamples = 0, inf will generate"); + AccMeanNVector(layerElem->yFeaMats[drvIdx], batLen, layerElem->nodeNum, (NFloat) nSamples, layerElem->actfunVecs[2]->variables); + break; + case 2: + nSamples = *cnt1; + if (nSamples == 0) + HError(-8721, "DoStaticUpdateOperation: nSamples = 0, inf will generate"); + AccVarianceNVector(layerElem->yFeaMats[drvIdx], batLen, layerElem->nodeNum, (NFloat) nSamples, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[1]->variables); + break; + case 3: + nSamples = *cnt1; + if (nSamples > 0) { + InitAffineScaleByVar(layerElem->nodeNum, layerElem->actfunVecs[1]->variables); + *cnt1 = 0; + } + break; + case 4: + nSamples = *cnt2; + if (nSamples > 0) { + InitAffineShiftByMean(layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables); + *cnt2 = 0; + } + break; + default: + break; + } + } + break; + default: + break; + } +} + +/* cz277 - pact */ +/*void ForwardPropBlank(ANNSet *annSet, int batLen) { + int i, j, n; + AILink curAI; + ADLink annDef; + LELink layerElem; + + curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + for (j = 1; j <= n; ++j) { + DoStaticUpdateOperation(layerElem->status, j, layerElem, batLen); + } + } + curAI = curAI->next; + } +}*/ + +void ComputeForwardPropActivation(int batLen, LELink layerElem, int ctxIdx) { + NMatrix *yNMat; + + yNMat = layerElem->yFeaMats[ctxIdx]; + switch (layerElem->actfunKind) { + case AFFINEAF: + ApplyAffineAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case HERMITEAF: + ApplyHermiteAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case LINEARAF: + CopyNSegment(yNMat, 0, batLen * layerElem->nodeNum, yNMat, 0); + break; + case RELUAF: + ApplyReLUAct(yNMat, batLen, layerElem->nodeNum, 0.0, yNMat); + break; + case PRELUAF: + ApplyPReLUAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMRELUAF: + if (layerElem->trainInfo != NULL) + CopyNSegment(yNMat, 0, batLen * layerElem->nodeNum, layerElem->trainInfo->cacheMats[ctxIdx], 0); + ApplyParmReLUAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case SIGMOIDAF: + ApplySigmoidAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case LHUCSIGMOIDAF: + ApplyLHUCSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PSIGMOIDAF: + ApplyPSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMSIGMOIDAF: + if (layerElem->trainInfo != NULL) + CopyNSegment(yNMat, 0, batLen * layerElem->nodeNum, layerElem->trainInfo->cacheMats[ctxIdx], 0); + ApplyParmSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[3]->variables, yNMat); + break; + case SOFTRELUAF: + ApplySoftReLAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case SOFTMAXAF: + ApplySoftmaxAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case TANHAF: + ApplyTanHAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + default: + HError(8791, "ComputeActivationForwardPropBatch: Unknown activation function type"); + } +} + +void ForwardPropActivationOnlyLayer(int batLen, LELink layerElem) { + + HError(8701, "ForwardPropActivationOnlyLayer: Function not implemented"); + return; +} + +void ForwardPropConvolutionLayer(int batLen, LELink layerElem) { + + HError(8701, "ForwardPropConvolutionLayer: Function not implemented"); + return; +} + +void ForwardPropPerceptronLayer(int batLen, LELink layerElem) { + int i, n; + + if (layerElem->layerKind != PERCEPTRONLAK) + HError(8792, "ForwardPropPerceptronLayer: Function can only process a PERCEPTRON layer"); + + n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) { + /* y = b, B^T should be row major matrix, duplicate the bias vectors */ + DupNVector(layerElem->biasVec->variables, layerElem->yFeaMats[i], batLen); + /* y += w * b, X^T is row major, W^T is column major, Y^T = X^T * W^T + B^T */ + HNBlasTNgemm(layerElem->nodeNum, batLen, layerElem->inputDim, 1.0, layerElem->wghtMat->variables, layerElem->xFeaMats[i], 1.0, layerElem->yFeaMats[i]); + /* cz277 - pact */ + DoStaticUpdateOperation(layerElem->status, i, layerElem, batLen); + /* apply activation transformation */ + ComputeForwardPropActivation(batLen, layerElem, i); + } + + return; +} + +void ForwardPropSubsamplingLayer(int batLen, LELink layerElem) { + + HError(8701, "ForwardPropSubsamplingLayer: Function not implemented"); + return; +} + + +/* the batch with input features are assumed to be filled */ +void ForwardProp(ANNSet *annSet, int batLen, int *CMDVecPL) { + /*int i, j, n;*/ + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* update the batch index */ + ++batchIndex; + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + FillBatchFromFeaMix(layerElem, batLen); + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: ForwardPropActivationOnlyLayer(batLen, layerElem); break; + case CONVOLUTIONLAK: ForwardPropConvolutionLayer(batLen, layerElem); break; + case PERCEPTRONLAK: ForwardPropPerceptronLayer(batLen, layerElem); break; + case SUBSAMPLINGLAK: ForwardPropSubsamplingLayer(batLen, layerElem); break; + default: + HError(8791, "ForwardProp: Unknown layer kind"); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void AccGradProbeWeight(LayerElem *layerElem) { + int i, j, k, size; + NFloat *wghtMat; + +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->wghtMat->gradients); +#endif + wghtMat = layerElem->wghtMat->gradients->matElems; + /* weights */ + size = layerElem->nodeNum * layerElem->inputDim; + j = DVectorSize(layerElem->wghtGradInfoVec); + for (i = 0; i < size; ++i) { + if (wghtMat[i] > layerElem->maxWghtGrad) + layerElem->maxWghtGrad = wghtMat[i]; + if (wghtMat[i] < layerElem->minWghtGrad) + layerElem->minWghtGrad = wghtMat[i]; + layerElem->meanWghtGrad += wghtMat[i]; + k = wghtMat[i] / PROBERESOLUTE + j / 2; + layerElem->wghtGradInfoVec[k + 1] += 1; + } +} +#endif + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void AccGradProbeBias(LayerElem *layerElem) { + int i, j, k, size; + NFloat *biasVec; + +#ifdef CUDA + SyncNVectorDev2Host(layerElem->biasVec->gradients); +#endif + biasVec = layerElem->biasVec->gradients->vecElems; + /* biases */ + size = layerElem->nodeNum; + j = DVectorSize(layerElem->biasGradInfoVec); + for (i = 0; i < size; ++i) { + if (biasVec[i] > layerElem->maxBiasGrad) + layerElem->maxBiasGrad = biasVec[i]; + if (biasVec[i] < layerElem->minBiasGrad) + layerElem->minBiasGrad = biasVec[i]; + layerElem->meanBiasGrad += biasVec[i]; + k = biasVec[i] / PROBERESOLUTE + j / 2; + layerElem->biasGradInfoVec[k + 1] += 1; + } +} +#endif + + +/* function to compute the error signal for frame level criteria (for sequence level, do nothing) */ +/*void CalcOutLayerBackwardSignal(LELink layerElem, int batLen, ObjFunKind objfunKind, int ctxIdx) {*/ +void ComputeBackwardPropOutActivation(ObjFunKind objfunKind, int batLen, LELink layerElem, int ctxIdx) { + + if (layerElem->isFinalLayer == FALSE) + HError(8792, "ComputeBackwardPropInputSignal: Function only valid for output layers"); + if (ctxIdx != 1 || layerElem->drvCtx[ctxIdx] != 0) + HError(8701, "ComputeBackwardPropInputSignal: Out layer can only have single current frame now"); + + switch (objfunKind) { + case MMSEOF: + /* proceed for MMSE objective function */ + switch (layerElem->actfunKind) { + case LINEARAF: + SubNMatrix(layerElem->yFeaMats[ctxIdx], layerElem->trainInfo->labMat, batLen, layerElem->nodeNum, layerElem->yFeaMats[ctxIdx]); + break; + default: + HError(8701, "ComputeBackwardPropInputSignal: Unsupported output activation function for MMSE"); + } + break; + case XENTOF: + /* proceed for XENT objective function */ + switch (layerElem->actfunKind) { + case SOFTMAXAF: + SubNMatrix(layerElem->yFeaMats[ctxIdx], layerElem->trainInfo->labMat, batLen, layerElem->nodeNum, layerElem->yFeaMats[ctxIdx]); + break; + default: + HError(8701, "ComputeBackwardPropInputSignal: Unsupported output activation function for XENT"); + } + break; + case MLOF: + case MMIOF: + case MPEOF: + case MWEOF: + case SMBROF: + break; + default: + HError(8791, "ComputeBackwardPropInputSignal: Unknown objective function kind"); + } +} + +void ComputeBackwardPropHiddenActivation(int batLen, Boolean accFlag, LELink layerElem, int ctxIdx) { + NMatrix *yNMat, *dyNMat; + + yNMat = layerElem->yFeaMats[ctxIdx]; + dyNMat = layerElem->trainInfo->dyFeaMats[ctxIdx]; /* sum_k w_{k,j} * delta_k */ + switch (layerElem->actfunKind) { + case AFFINEAF: + ApplyTrAffineAct(dyNMat, yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, accFlag, layerElem->actfunVecs[1]->gradients, layerElem->actfunVecs[2]->gradients); + ApplyDAffineAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case HERMITEAF: + HError(8701, "ComputeBackwardPropHiddenActivation: HERMITE Not implemented yet"); + break; + case LINEARAF: + ApplyDLinearAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case RELUAF: + ApplyDReLUAct(yNMat, batLen, layerElem->nodeNum, 0.0, yNMat); + break; + case PRELUAF: + ApplyTrPReLUAct(dyNMat, yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, accFlag, layerElem->actfunVecs[1]->gradients); + ApplyDPReLUAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMRELUAF: + ApplyTrParmReLUAct(dyNMat, layerElem->trainInfo->cacheMats[ctxIdx], batLen, layerElem->nodeNum, accFlag, layerElem->actfunVecs[1]->gradients, layerElem->actfunVecs[2]->gradients); + ApplyDParmReLUAct(layerElem->trainInfo->cacheMats[ctxIdx], batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case SIGMOIDAF: + ApplyDSigmoidAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case LHUCSIGMOIDAF: + ApplyTrLHUCSigmoidAct(dyNMat, yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, accFlag, layerElem->actfunVecs[1]->gradients); + ApplyDLHUCSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PSIGMOIDAF: + ApplyTrPSigmoidAct(dyNMat, yNMat, layerElem->actfunVecs[1]->variables, batLen, layerElem->nodeNum, accFlag, layerElem->actfunVecs[1]->gradients); + ApplyDPSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMSIGMOIDAF: + ApplyTrParmSigmoidAct(dyNMat, layerElem->trainInfo->cacheMats[ctxIdx], batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[3]->variables, accFlag, layerElem->actfunVecs[1]->gradients, layerElem->actfunVecs[2]->gradients, layerElem->actfunVecs[3]->gradients); + ApplyDParmSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[3]->variables, yNMat); + break; + case SOFTRELUAF: + ApplyDSoftReLAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case SOFTMAXAF: + HError(8701, "ComputeBackwardPropHiddenActivation: SOFTMAX as hidden activation function not implemented yet!"); + break; + case TANHAF: + ApplyDTanHAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + default: + HError(8791, "ComputeBackwardPropHiddenActivation: Unsupported hidden activation function kind"); + } +} + + +/* attention: these two operations are gonna to change dyFeaMat elements to their square */ +void ComputeBackwardPropSumSquaredGradients(int batLen, LELink layerElem, NMatrix *dyFeaMat) { + int i, n; + + n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) { + SquaredNMatrix(layerElem->xFeaMats[i], batLen, layerElem->inputDim, GetTmpNMat()); + SquaredNMatrix(dyFeaMat, batLen, layerElem->nodeNum, dyFeaMat); + if (layerElem->wghtMat->updateflag == TRUE) + HNBlasNTgemm(layerElem->inputDim, layerElem->nodeNum, batLen, 1.0, GetTmpNMat(), dyFeaMat, 1.0, layerElem->wghtMat->sumsquaredgrad); + if (layerElem->biasVec->updateflag == TRUE) + SumNMatrixByCol(dyFeaMat, batLen, layerElem->nodeNum, TRUE, layerElem->biasVec->sumsquaredgrad); + } +} + +void BackwardPropActivationOnlyLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + + HError(8701, "BackwardPropActivationOnlyLayer: Function not implemented yet!"); + return; +} + +void BackwardPropConvolutionLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + + HError(8701, "BackwardPropConvolutionLayer: Function not implemented yet!"); + return; +} + +void BackwardPropPerceptronLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + int i, n; + Boolean acc; + NMatrix *dyNMat; + + n = IntVecSize(layerElem->drvCtx); + for (i = 1, acc = accFlag; i <= n; ++i, acc = TRUE) { + if (layerElem->isFinalLayer) { + /* delta_k */ + dyNMat = layerElem->yFeaMats[i]; + ComputeBackwardPropOutActivation(objfunKind, batLen, layerElem, i); + } + else { + /* sum_k w_{k,j} * delta_k */ + dyNMat = layerElem->trainInfo->dyFeaMats[i]; + ComputeBackwardPropHiddenActivation(batLen, acc, layerElem, i); + /* times sigma_k (dyFeaMat, from the next layer) */ + /* dyFeaMat: sum_k w_{k,j} * delta_k -> delta_j */ + /* delta_j = h'(a_j) * (sum_k w_{k,j} * delta_k) */ + MulNMatrix(layerElem->yFeaMats[i], dyNMat, batLen, layerElem->nodeNum, dyNMat); + } + /* Y^T is row major, W^T is column major, X^T = Y^T * W^T */ + /* sum_k w_{k,j} * delta_k */ + HNBlasNNgemm(layerElem->inputDim, batLen, layerElem->nodeNum, 1.0, layerElem->wghtMat->variables, dyNMat, 0.0, layerElem->trainInfo->dxFeaMats[i]); + /* compute and accumulate the updates */ + /* {layerElem->xFeaMat[n_frames * inputDim]}^T * dyFeaMat[n_frames * nodeNum] = deltaWeights[inputDim * nodeNum] */ + if (layerElem->wghtMat->updateflag == TRUE) { + HNBlasNTgemm(layerElem->inputDim, layerElem->nodeNum, batLen, 1.0, layerElem->xFeaMats[i], dyNMat, acc, layerElem->wghtMat->gradients); +#ifdef GRADPROBE + AccGradProbeWeight(layerElem); +#endif + } + /* graidents for biases */ + if (layerElem->biasVec->updateflag == TRUE) { + SumNMatrixByCol(dyNMat, batLen, layerElem->nodeNum, acc, layerElem->biasVec->gradients); +#ifdef GRADPROBE + AccGradProbeBias(layerElem); +#endif + } + /* cz277 - ssginfo*/ + if (layerElem->wghtMat->sumsquaredgrad != NULL && layerElem->biasVec->sumsquaredgrad != NULL) + ComputeBackwardPropSumSquaredGradients(batLen, layerElem, dyNMat); + } + + return; +} + +void BackwardPropSubsamplingLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + + HError(8701, "BackwardPropSubsamplingLayer: Function not implemented yet!"); + return; +} + + +/* delta_j = h'(a_j) * sum_k [w_k,j * delta_k] */ +/* dtl_j = sum_k [w_k,j * dtl_k * h'(a_k)] */ +/* dtl_j = delta_j / h'(a_j) */ +/* backward propagation algorithm */ +void BackwardProp(ObjFunKind objfunKind, ANNSet *annSet, int batLen, Boolean accFlag) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* init the ANNInfo pointer */ + curAI = annSet->defsTail; + /* proceed in the backward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = annDef->layerNum - 1; i >= 0; --i) { + /* get current LayerElem */ + layerElem = annDef->layerList[i]; + FillBatchFromErrMix(layerElem, batLen); /* cz277 - many */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: BackwardPropActivationOnlyLayer(objfunKind, batLen, accFlag, layerElem); break; + case CONVOLUTIONLAK: BackwardPropConvolutionLayer(objfunKind, batLen, accFlag, layerElem); break; + case PERCEPTRONLAK: BackwardPropPerceptronLayer(objfunKind, batLen, accFlag, layerElem); break; + case SUBSAMPLINGLAK: BackwardPropSubsamplingLayer(objfunKind, batLen, accFlag, layerElem); break; + default: + HError(8791, "BackwardProp: Unknown layer kind"); + } + } + /* get the previous ANNDef */ + curAI = curAI->prev; + } +} + +void ResetAllBundleProcessedFields(char *invoker, ANNSet *annSet) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* reset all processed fields to FALSE */ + curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "%s: Function not implemented", invoker); break; + case CONVOLUTIONLAK: HError(8701, "%s: Function not implemented", invoker); break; + case PERCEPTRONLAK: + layerElem->wghtMat->processed = FALSE; + layerElem->biasVec->processed = FALSE; + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->processed = FALSE; + break; + case SUBSAMPLINGLAK: HError(8701, "%s: Function not implemented", invoker); break; + default: + HError(8791, "%s: Unknown layer kind", invoker); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + +static void NormNVecBundleGradient(NVecBundle *bundle, float scale) { + BTLink curLink; + LELink layerElem; + int drvCnt = 0; + + if (bundle->kind != SIBK) + HError(8792, "NormNVecBundleGradient: Only SIBK bundle is allowed"); + if (bundle->hook == NULL) + HError(8793, "NormNVecBundleGradient: SI bundle should have the trace field set"); + /*if (bundle->batchIndex != batchIndex && bundle->batchIndex != batchIndex + 1) + HError(9999, "NormNVecBundleGradient: Wrong bundle batch index");*/ + if (scale == 0.0) + HError(8793, "NormNVecBundleGradient: Input scaling factor can not be 0, try 1.0"); + if (bundle->processed == TRUE) + return; + bundle->processed = TRUE; + + curLink = (BTLink) bundle->hook; + while (curLink != NULL) { + layerElem = curLink->layerElem; + if (layerElem->trainInfo == NULL) + HError(8700, "NormNVecBundleGradient: All trainInfo should be initialised"); + drvCnt += layerElem->trainInfo->tDrvCnt; + curLink = curLink->nextTrace; + } + if (scale * drvCnt != 1.0) + ScaleNVector(1.0 / (scale * drvCnt), bundle->gradients->vecLen, bundle->gradients); + /* cz277 - ssgInfo */ + +} + +static void NormNMatBundleGradient(NMatBundle *bundle, float scale) { + BTLink curLink; + LELink layerElem; + int drvCnt = 0; + + if (bundle->kind != SIBK) + HError(8792, "NormNMatBundleGradient: Only SIBK bundle is allowed"); + if (bundle->hook == NULL) + HError(8793, "NormNMatBundleGradient: SI bundle should have the trace field set"); + if (scale == 0.0) + HError(8793, "NormNMatBundleGradient: Input scaling factor can not be 0, try 1.0"); + if (bundle->processed == TRUE) + return; + bundle->processed = TRUE; + + curLink = (BTLink) bundle->hook; + while (curLink != NULL) { + layerElem = curLink->layerElem; + if (layerElem->trainInfo == NULL) + HError(8700, "NormNMatBundleGradient: All trainInfo should be initialised"); + drvCnt += layerElem->trainInfo->tDrvCnt; + curLink = curLink->nextTrace; + } + if (scale * drvCnt != 1.0) + ScaleNMatrix(1.0 / (scale * drvCnt), bundle->gradients->rowNum, bundle->gradients->colNum, bundle->gradients); + /* cz277 - ssgInfo */ + +} + +/* the batch with input features are assumed to be filled */ +void NormBackwardPropGradients(ANNSet *annSet, float scale) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* reset all processed fields to FALSE */ + ResetAllBundleProcessedFields("NormBackwardPropGradients", annSet); + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "NormBackwardPropGradients: Function not implemented"); break; + case CONVOLUTIONLAK: HError(8701, "NormBackwardPropGradients: Function not implemented"); break; + case PERCEPTRONLAK: + NormNMatBundleGradient(layerElem->wghtMat, scale); + NormNVecBundleGradient(layerElem->biasVec, scale); + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + NormNVecBundleGradient(layerElem->actfunVecs[j], scale); + break; + case SUBSAMPLINGLAK: HError(8701, "NormBackwardPropGradients: Function not implemented"); break; + default: + HError(8791, "NormBackwardPropGradients: Unknown layer kind"); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + +/* randomise an ANN layer */ +void RandANNLayer(LELink layerElem, int seed, float scale) { + float r; + + switch (layerElem->actfunKind) { + case AFFINEAF: + case LINEARAF: + case RELUAF: + case PRELUAF: + case PARMRELUAF: + case SOFTRELUAF: + r = 16.0 / ((float) (layerElem->nodeNum + layerElem->inputDim)); + /* 0.004 for a (2000, 2000) layer; r = 0.001 for a (12000, 2000) layer */ + r *= scale; + RandInit(seed); + RandNSegmentUniform(-1.0 * r, r, layerElem->nodeNum * layerElem->inputDim, layerElem->wghtMat->variables->matElems); + break; + /*r = sqrt(2.0 / ((1.0 + pow(PLRELUNEGSCALE, 2.0)) * layerElem->nodeNum)); + RandNSegmentGaussian(0.0, r, layerElem->wghtMat->rowNum * layerElem->wghtMat->colNum, layerElem->wghtMat->matElems);*/ + default: + r = 4 * sqrt(6.0 / (float) (layerElem->nodeNum + layerElem->inputDim)); + r *= scale; + RandInit(seed); + RandNSegmentUniform(-1.0 * r, r, layerElem->nodeNum * layerElem->inputDim, layerElem->wghtMat->variables->matElems); + /* r = 0.22 for a (1000, 1000) layer; r = 0.083 for a (12000, 2000) layer */ + break; + } + + /*if (layerElem->actfunKind == RELAF || layerElem->actfunKind == SOFTRELAF) { + RandMaskNSegment(0.25, 0.0, layerElem->wghtMat->rowNum * layerElem->wghtMat->colNum, layerElem->wghtMat->matElems); + }*/ + + ClearNVector(layerElem->biasVec->variables); + /* TODO: if HERMITEAF */ +#ifdef CUDA + SyncNMatrixHost2Dev(layerElem->wghtMat->variables); + SyncNVectorDev2Host(layerElem->biasVec->variables); +#endif + +} + +/* generate a new ANN layer and randomise it */ +/*LELink GenNewPerceptronLayer(HMMSet *hset, int nodeNum, int inputDim, char *wghtName, char *biasName) { + LELink layerElem; + + layerElem = GenBlankLayer(hset->heap); + layerElem->nodeNum = nodeNum; + layerElem->inputDim = inputDim; + layerElem->wghtMat = FetchNMatBundle(hset, wghtName); + if (layerElem->wghtMat->variables == NULL) { + layerElem->wghtMat->variables = CreateNMatrix(heap, nodeNum, inputDim); + layerElem->wghtMat->kind = SIBK; + } + else { + if (layerElem->wghtMat->variables->rowNum != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix row"); + if (layerElem->wghtMat->variables->colNum != inputDim) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix column"); + } + CreateBundleTrace(heap, layerElem, &layerElem->wghtMat->hook); + layerElem->biasVec = FetchNVecBundle(hset, biasName); + if (layerElem->biasVec->variables == NULL) { + layerElem->biasVec->variables = CreateNVector(heap, nodeNum); + layerElem->biasVec->kind = SIBK; + } + else if (layerElem->biasVec->variables->vecLen != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong bias vector length"); + CreateBundleTrace(heap, layerElem, &layerElem->biasVec->hook); + + return layerElem; +}*/ + +/*void SetFeaMixBatchIdxes(ANNSet *annSet, int newIdx) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + NMatrix *dyFeaMat; + + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + if (layerElem->feaMix->batIdx == 0) { + layerElem->feaMix->batIdx = newIdx; + } + } + curAI = curAI->next; + } +}*/ + +/* cz277 - max norm2 */ +Boolean IsLinearInvariant(ActFunKind actfunKind) { + switch (actfunKind) { + case LINEARAF: + case RELUAF: + return TRUE; + default: + return FALSE; + } +} + +/* cz277 - pact */ +Boolean CacheActMatrixOrNot(ActFunKind actfunKind) { + switch (actfunKind) { + case PARMRELUAF: + case PARMSIGMOIDAF: + return TRUE; + default: + return FALSE; + } +} + +/* cz277 - 150824 */ +void CreateBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head) { + BTLink *trace; + + /* create a node at the end of the tracing list */ + trace = head; + while (*trace != NULL) + trace = &(*trace)->nextTrace; + /* allocate a new BundleTrace */ + *trace = (BTLink) New(heap, sizeof(BundleTrace)); + memset(*trace, 0, sizeof(BundleTrace)); + (*trace)->layerElem = layerElem; +} + +void CancelBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head) { + BTLink *trace, *prev = NULL; + + trace = head; + while (*trace != NULL && (*trace)->layerElem != layerElem) { + prev = trace; + trace = &(*trace)->nextTrace; + } + if (*trace == NULL) + HError(8700, "CancelBundleTrace: Fail to get the target layer from the trace list"); + if (prev == NULL) + *head = (*trace)->nextTrace; + else + (*prev)->nextTrace = (*trace)->nextTrace; + if (heap->type != MSTAK) + Dispose(heap, *trace); +} + +/* ------------------------- End of HANNet.c ------------------------- */ + diff --git a/HTKLib/HANNet.h b/HTKLib/HANNet.h new file mode 100755 index 0000000..cb498b9 --- /dev/null +++ b/HTKLib/HANNet.h @@ -0,0 +1,361 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HANNet.h ANN model definition data type */ +/* ----------------------------------------------------------- */ + +/* !HVER!HANNet: 3.5.0 [CUED 12/10/15] */ + + +#ifndef _HANNET_H_ +#define _HANNET_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "HMem.h" + +/* ------------------------- Trace Flags ------------------------- */ + +/* + The following types define the in-memory representation of a ANN +*/ + +/* ------------------------- Predefined Types ------------------------- */ + +#define MAPTARGETPREF "_MAPPED" /* the prefix to convert the mapped target */ +/* cz277 - 1007 */ +#define MAXFEAMIXOWNER 20 /* the maximum number of layers or hset streams that could own a feature mixture */ + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +#define PROBERESOLUTE 50 +#define PROBEBOUNDARY 1000 +#endif + +#define AUTOMACRONAMEPREFIX "AUTOMACRONAME_" + +/* ------------------------- ANN Definition ------------------------- */ + +enum _InputKind {INPFEAIK, ANNFEAIK, ERRFEAIK, AUGFEAIK}; /* cz277 - aug */ +typedef enum _InputKind InputKind; + +enum _ActFunKind {AFFINEAF, HERMITEAF, LINEARAF, RELUAF, LHUCRELUAF, PRELUAF, PARMRELUAF, SIGMOIDAF, LHUCSIGMOIDAF, PSIGMOIDAF, PARMSIGMOIDAF, SOFTRELUAF, LHUCSOFTRELUAF, PSOFTRELUAF, PARMSOFTRELUAF, SOFTMAXAF, TANHAF}; +typedef enum _ActFunKind ActFunKind; + +enum _LayerKind {ACTIVATIONONLYLAK, CONVOLUTIONLAK, PERCEPTRONLAK, SUBSAMPLINGLAK}; +typedef enum _LayerKind LayerKind; + +enum _ObjFunKind {UNKOF = 0, MLOF = 1, MMIOF = 2, MMSEOF = 4, MPEOF = 8, MWEOF = 16, SMBROF = 32, XENTOF = 64}; +typedef enum _ObjFunKind ObjFunKind; + +/*enum _ANNUpdtKind {WEIGHTUK = 1, BIASUK = 2, ACTFUNUK = 4};*/ /* cz277 - 150811 */ +/*typedef enum _ANNUpdtKind ANNUpdtKind;*/ + +enum _BundleKind {SDBK, SIBK}; +typedef enum _BundleKind BundleKind; + + +typedef struct _LayerElem *LELink; +typedef struct _FeaElem *FELink; +typedef struct _ANNDef *ADLink; +typedef struct _ANNInfo *AILink; +typedef struct _LayerInfo *LILink; +typedef struct _RPLInfo *RILink; +typedef struct _BundleTrace *BTLink; + +/* cz277 - 150811 */ +typedef struct _BundleTrace { + LELink layerElem; + size_t x; + size_t y; + BTLink nextTrace; +} BundleTrace; + +/* cz277 - 150811 */ +typedef struct _NVecBundle { + LabId id; + BundleKind kind; + NVector *variables; + NVector *gradients; + NVector *updates; + NVector *neglearnrates; + NVector *sumsquaredgrad; + int batchIndex; + Boolean processed; + Boolean updateflag; /* cz277 - 151020 */ + size_t accum; + size_t *accptr; + int nUse; + Ptr hook; +} NVecBundle; + +/* cz277 - 150811 */ +typedef struct _NMatBundle { + LabId id; + BundleKind kind; + NMatrix *variables; + NMatrix *gradients; + NMatrix *updates; + NMatrix *neglearnrates; + NMatrix *sumsquaredgrad; + int batchIndex; + Boolean processed; + Boolean updateflag; /* cz277 - 151020 */ + size_t accum; + size_t *accptr; + int nUse; + Ptr hook; +} NMatBundle; + +/* cz277 - xform */ +typedef struct _RPLInfo { + int nSpkr; + char *inRPLMask; + char curOutSpkr[MAXSTRLEN]; + char curInSpkr[MAXSTRLEN]; + char cacheInSpkr[MAXSTRLEN]; + char *inRPLDir; + char *inRPLExt; + char *outRPLDir; + char *outRPLExt; + /*char *macroName;*/ + Boolean saveBinary; + LabId id; + union { + NMatBundle *curNMat; + NVecBundle *curNVec; + }; + union { + NMatBundle savNMat; + NVecBundle savNVec; + }; + RILink nextInfo; +} RPLInfo; + +typedef struct _FeaElem { + int feaDim; /* the dimension of this kind of feature (without context expansion) */ + int extDim; /* the dimension of this kind of feature (with context expansion and transforms) */ + IntVec ctxMap; /* the array contains the offset to current for context expansion */ + InputKind inputKind; /* the kind of the feature */ + LELink feaSrc; /* the layer pointer to the source of current feature element */ + NMatrix **feaMats; /* cz277 - many */ + int dimOff; /* the offset of the start dimension in feaMat of this FeaElem; useful for backprop */ + int srcDim; /* the dimension of the feature in feaMat */ + int augFeaIdx; /* the index of this (if it was) augmented feature index; default: 0 */ + int streamIdx; /* the index of the associated stream; default: 0 */ + char mName[MAXSTRLEN]; /* the ANN feature source macro name */ + char mType; /* the ANN feature source macro type */ + Boolean doBackProp; /* cz277 - semi */ + int hisLen; /* the length of the history */ + NMatrix *hisMat; /* the matrix for ANN feature history */ + int nUse; /* the usage counter */ + IntVec ctxPool; /* cz277 - many */ /* tells what each feaMat is associated with (only valid for INPFEAIK) */ +} FeaElem; + +typedef struct _FeaMix { + /* cz277 - 1007 */ + int batchIndex; /* the number of batches been processed */ + int ownerNum; /* the number of owners of this feature mixture */ + LELink ownerList[MAXFEAMIXOWNER]; /* the layers which employs this feature mxiture */ + int elemNum; /* number of different feature components */ + int mixDim; /* the total dimension of the input (a mixture of different features) */ + FELink *feaList; /* the feature information structure */ + NMatrix **mixMats; /* cz277 - many */ + IntVec ctxPool; /* cz277 - many */ + int nUse; /* usage counter */ +} FeaMix; + + +typedef struct _TrainInfo { + NMatrix *labMat; /* the batches for the output targets for all streams */ + NMatrix **dxFeaMats; /* cz277 - many */ /* de/dx */ + NMatrix **dyFeaMats; /* cz277 - many */ /* de/dy */ + NMatrix **cacheMats; /* cz277 - 150811 */ + IntVec drvCnt; /* cz277 - many */ + int tDrvCnt; /* cz277 - many */ + /*ANNUpdtKind updateFlag;*/ /* whether update this layer or not */ + /*long actfunUpdateFlag;*/ /* cz277 - 150811 */ + Boolean initFlag; /* cz277 - 150811 */ +} TrainInfo; + +typedef struct _ANNInfo { + AILink next; /* pointer to the next item of the chain */ + AILink prev; /* pointer to the previous item of the chain */ + ADLink annDef; /* one owner of this layer */ + int index; /* for LayerElem, the index of this layer in that owner ANNDef */ + int fidx; /* the file index of the associated ANNDef */ +} ANNInfo; /* for ANNSet, the index of this of this ANNDef in that ANNSet */ + +typedef struct _LayerElem { + int ownerCnt; /* the number of owners in the owner chain */ + ANNInfo *ownerHead; /* the head of the chain contains all owners */ + ANNInfo *ownerTail; /* the tail of the chain contains all owners */ + /*ActFunInfo actfunInfo;*/ /* cz277 - pact */ + FeaMix *feaMix; /* a list of different features for forward propagation */ + FeaMix *errMix; /* a list of different error signals for back propagation */ + int inputDim; /* the number of inputs to each node in current layer (column number of wgthMat) */ + int nodeNum; /* the number of nodes in current layer (row number of wghtMat) */ + NMatBundle *wghtMat; /* the weight matrix of current layer (a transposed matrix) */ + NVecBundle *biasVec; /* the bias vector of current layer */ + ActFunKind actfunKind; + int actfunParmNum; + NVecBundle **actfunVecs; + NMatrix **xFeaMats; /* cz277 - many */ /* the feature batch for the input signal, could point to another yFeaMat in a different LayerElem */ + NMatrix **yFeaMats; /* cz277 - many */ /* the feature batch for the output signal */ + TrainInfo *trainInfo; /* the structure for training info, could be NULL (if not training) */ + LayerKind layerKind; /* the type of current layer */ + Boolean isFinalLayer; /* cz277 - 150811 */ + int nUse; /* usage counter */ + int nDrv; /* feature derived counter */ + IntVec drvCtx; /* cz277 - many */ + int status; /* cz277 - many */ + /* cz277 - gradprobe */ +#ifdef GRADPROBE + DVector wghtGradInfoVec; + DVector biasGradInfoVec; + NFloat maxWghtGrad; + NFloat minWghtGrad; + NFloat meanWghtGrad; + NFloat maxBiasGrad; + NFloat minBiasGrad; + NFloat meanBiasGrad; +#endif +} LayerElem; + +typedef struct _ANNDef { + int layerNum; /* the number of layers */ + LELink *layerList; /* a list of layers */ + int targetNum; /* number of targets in this ANN */ + char *annDefId; /* identifier for the ANNDef */ + int nUse; /* usage counter */ + int nDrv; +} ANNDef; + +typedef struct _TargetMap { + char *name; /* the input name of this target */ + char *mappedName; /* the modified name of this mapped target (with MAPTARGETPREF) */ + int index; /* the index of this mapped target, in MappedList, maxResults, and sumResults */ + IntVec maxResults; /* mapped confusion list */ + IntVec sumResults; /* summed confusion list */ + int sampNum; /* the total number of samples */ + float mappedTargetPen[SMAX];/* the penalty of the mapped target */ +} TargetMap; + +typedef struct _TargetMapStruct { + TargetMap *targetMapList; /* used to convert the index of a mapped target to its structure */ + int mappedTargetNum; /* the total number of mapped targets */ + IntVec mapVectors[SMAX]; /* the mapping vectors for target map */ + NMatrix *maskMatMapSum[SMAX]; /* the mat matrix generated by extending mapVec to get outMatMapSum*/ + NMatrix *labMatMapSum[SMAX]; + NMatrix *outMatMapSum[SMAX];/* the mapping matrix for the yFeaMat of the output layers */ + NMatrix *llhMatMapSum[SMAX];/* the mapping matrix with llh values */ + NVector *penVecMapSum[SMAX]; +} TargetMapStruct; + +typedef struct _ANNSet { + int annNum; /* an ANN is a mixture of a set of sub ANNs */ + AILink defsHead; /* the head of the chain contains all sub ANNs (ANNDefs) */ + AILink defsTail; /* the tail of the chain contains all sub ANNs (ANNDefs) */ + LELink outLayers[SMAX]; /* pointers to the output layer in each stream */ + TargetMapStruct *mapStruct; /* the structure for target mapping */ + NMatrix *llhMat[SMAX]; /* the llr matrix of the yFeaMat of the output layers */ + NVector *penVec[SMAX]; +} ANNSet; + + +/* ------------------------ Global Settings ------------------------- */ + +int GetNBatchSamples(void); +void SetNBatchSamples(int userBatchSamples); +void InitANNet(void); +int GetGlobalBatchIndex(void); +void SetGlobalBatchIndex(int index); + +void UpdateOutMatMapSum(ANNSet *annSet, int batLen, int streamIdx); +void UpdateLabMatMapSum(ANNSet *annSet, int batLen, int streamIdx); +void ForwardProp(ANNSet *annSet, int batLen, int *CMDVecPL); +void ComputeBackwardPropOutActivation(ObjFunKind objfunKind, int batLen, LELink layerElem, int ctxIdx); +void BackwardProp(ObjFunKind objfunKind, ANNSet *annSet, int batLen, Boolean accFlag); + +void RandANNLayer(LELink layerElem, int seed, float scale); +/*void SetFeaMixBatchIdxes(ANNSet *annSet, int newIdx);*/ + +/* cz277 - max norm2 */ +Boolean IsLinearInvariant(ActFunKind actfunKind); + + +/* cz277 - pact */ +Boolean CacheActMatrixOrNot(ActFunKind actfunKind); + +char *GetANNUpdateFlagStr(void); +/*char *GetLayerUpdateFlagStr(void); +char *GetActFunUpdateFlagStr(void);*/ +char *GetNMatUpdateFlagStr(void); +char *GetNVecUpdateFlagStr(void); + +char *GetMaskStrNMatRPLInfo(void); +char *GetInDirStrNMatRPLInfo(void); +char *GetExtStrNMatRPLInfo(void); +char *GetOutDirStrNMatRPLInfo(void); +char *GetMaskStrNVecRPLInfo(void); +char *GetInDirStrNVecRPLInfo(void); +char *GetExtStrNVecRPLInfo(void); +char *GetOutDirStrNVecRPLInfo(void); +RILink GetHeadNMatRPLInfo(void); +RILink GetHeadNVecRPLInfo(void); +void SetHeadNMatRPLInfo(RILink info); +void SetHeadNVecRPLInfo(RILink info); +int GetNumNMatRPLInfo(void); +int GetNumNVecRPLInfo(void); +void SetNumNMatRPLInfo(int n); +void SetNumNVecRPLInfo(int n); + +/* cz277 - 150824 */ +void ResetAllBundleProcessedFields(char *invoker, ANNSet *annSet); +void CheckANNBatchIndex(ANNSet *annSet, int index); +void NormBackwardPropGradients(ANNSet *annSet, float scale); +/* cz277 - batch sync */ +void SetNBundleBatchIndex(ANNSet *annSet, int index); +void SetFeaMixBatchIndex(ANNSet *annSet, int index); + +void CreateBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head); +void CancelBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head); + + +#ifdef __cplusplus +} +#endif + +#endif /* _HANNET_H_ */ + +/* ------------------------- End of HANNet.h ------------------------- */ diff --git a/HTKLib/HAdapt.c b/HTKLib/HAdapt.c old mode 100644 new mode 100755 index a95593c..9f19b60 --- a/HTKLib/HAdapt.c +++ b/HTKLib/HAdapt.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* author: */ +/* M.J.F. Gales */ /* */ -/* 2003 M.J.F. Gales and */ -/* Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2003-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAdapt.c Adaptation Library module */ +/* File: HAdapt.c Adaptation library module */ /* ----------------------------------------------------------- */ -char *hadapt_version = "!HVER!HAdapt: 3.4.1 [CUED 12/03/09]"; -char *hadapt_vc_id = "$Id: HAdapt.c,v 1.2 2006/12/07 11:09:07 mjfg Exp $"; +char *hadapt_version = "!HVER!HAdapt: 3.5.0 [CUED 12/10/15]"; +char *hadapt_vc_id = "$Id: HAdapt.c,v 1.3 2015/10/12 12:07:24 cz277 Exp $"; #include /* Standard C Libraries */ @@ -46,11 +49,16 @@ char *hadapt_vc_id = "$Id: HAdapt.c,v 1.2 2006/12/07 11:09:07 mjfg Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" /* cz277 - ANN */ #include "HModel.h" #include "HTrain.h" #include "HUtil.h" #include "HAdapt.h" #include "HFB.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HNCache.h" /* cz277 - ANN */ /* trace flags */ #define T_TOP 00001 /* Top level tracing */ @@ -323,7 +331,9 @@ static IntVec ParseConfIntVec(MemHeap *x, char *inbuf) } /* EXPORT->InitAdapt: initialise configuration parameters */ -void InitAdapt (XFInfo *xfinfo) +/*void InitAdapt (XFInfo *xfinfo) */ +/* cz277 - xform */ +void InitAdapt() { int i; Boolean b; @@ -408,8 +418,9 @@ void InitAdapt (XFInfo *xfinfo) cmllrAdaptKind = Str2AdaptKind(buf); } + /* cz277 - xform */ /* Initialise the XFInfo values */ - xfinfo->outSpkrPat = "*.%%%"; + /*xfinfo->outSpkrPat = "*.%%%"; xfinfo->inSpkrPat = NULL; xfinfo->paSpkrPat = NULL; xfinfo->outXFormExt = NULL; @@ -426,10 +437,39 @@ void InitAdapt (XFInfo *xfinfo) xfinfo->paXForm = NULL; xfinfo->al_hset = NULL; xfinfo->alXFormExt = NULL; - xfinfo->alXFormDir = NULL; + xfinfo->alXFormDir = NULL;*/ + CheckAdaptOptions(); } +/* cz277 - xform */ +void InitXFInfo(XFInfo *xfinfo) { + xfinfo->nSpkr = 0; + xfinfo->curOutSpkr = NULL; + xfinfo->curInSpkr = NULL; + xfinfo->curPaSpkr = NULL; + + /* Initialise the XFInfo values */ + xfinfo->outSpkrPat = "*.%%%"; + xfinfo->inSpkrPat = NULL; + xfinfo->paSpkrPat = NULL; + xfinfo->outXFormExt = NULL; + xfinfo->inXFormExt = NULL; + xfinfo->paXFormExt = NULL; + xfinfo->outXFormDir = NULL; + xfinfo->paXFormDir = NULL; + xfinfo->useOutXForm = FALSE; + xfinfo->useInXForm = FALSE; + xfinfo->usePaXForm = FALSE; + xfinfo->xformTMF = NULL; + xfinfo->inXForm = NULL; + xfinfo->outXForm = NULL; + xfinfo->paXForm = NULL; + xfinfo->al_hset = NULL; + xfinfo->alXFormExt = NULL; + xfinfo->alXFormDir = NULL; +} + /* Additional code to parse configs to for appropriate thresholds */ static float GetSplitThresh(AdaptXForm *xform) @@ -992,7 +1032,6 @@ static void CreateBaseTriMat(MemHeap *x, MixPDF *mp, AdaptXForm *xform, int clas regAcc->obsVec = CreateVector(x,vsize); ZeroVector(regAcc->obsVec); regAcc->bDiagMat = CreateBlockTriMat(x,blockSize); - ZeroBlockTriMat(regAcc->bDiagMat); tm = (TriMat *)New(x,sizeof(TriMat)*(vsize+1)); vsp = (int *)tm; *vsp = vsize; for (b=1,cntj=1;b<=IntVecSize(blockSize);b++) { @@ -1032,13 +1071,14 @@ void UpdateAccCache(double Lr, Vector svec, MixPDF *mp) TriMat m; int vsize = VectorSize(svec); Vector covar; - int i, j, bl, bstart, nblock, bsize; + int i, j, bl, bstart, bsize; + unsigned long int nblock; paac = GetPAAccCache(mp); if ( paac != NULL ) { /* This needs to be altered so that it does not rely on a non-zero first element */ if ( paac->bTriMat[1][1][1] == 0 ) { - nblock = (int)(paac->bTriMat[0]); + nblock = (unsigned long int)(paac->bTriMat[0]); for (bl=1,bstart=0;bl<=nblock;bl++) { m = paac->bTriMat[bl]; bsize = TriMatSize(m); @@ -1061,7 +1101,8 @@ void UpdateAccCache(double Lr, Vector svec, MixPDF *mp) void UpdateBaseAccs(Vector svec) { - int i,j,b,k, bsize, nblock, bl; + int i,j,b,k, bsize, bl; + unsigned long int nblock; int cnt, cnti, cntj; TriMat tm, m; RegAcc *ra; @@ -1076,7 +1117,7 @@ void UpdateBaseAccs(Vector svec) ra = GetRegAcc(mp); if ((ra->bTriMat != NULL) && (ra->bVector[1]>0)) { acc = ra->bVector; - nblock = (int)(ra->bDiagMat[0]); + nblock = (unsigned long int)(ra->bDiagMat[0]); /* generate the outer-product */ /* moved to here for speed with large numbers of baseclasses */ @@ -1114,7 +1155,8 @@ void UpdateBaseAccs(Vector svec) void UpdateBaseAccsWithPaac(void) { - int i,j,k, b, bsize, nblock, bl; + int i,j,k, b, bsize, bl; + unsigned long int nblock; int cnti; TriMat tm, m; RegAcc *ra; @@ -1133,7 +1175,7 @@ void UpdateBaseAccsWithPaac(void) for (paac = headac; paac!= NULL; paac=paac->next) { if ( (paac->baseclass == b)&& (paac->bVector[1]>0) ){ acc = paac->bVector; - nblock = (int)(ra->bDiagMat[0]); + nblock = (unsigned long int)(ra->bDiagMat[0]); for (bl=1,cnti=1;bl<=nblock;bl++) { m = paac->bTriMat[bl]; bsize = TriMatSize(m); @@ -1378,7 +1420,6 @@ static AccStruct *CreateAccStruct(MemHeap *x, AdaptXForm *xform, static void SetSemiTiedAvCov(HMMSet *hset) { HMMScanState hss; - StateInfo *si ; StreamElem *ste; MixPDF *mp; STriMat inv; @@ -1410,7 +1451,6 @@ static void SetSemiTiedAvCov(HMMSet *hset) NewHMMScan(hset,&hss); occAcc = 0.0; while(GoNextState(&hss,FALSE)) { - si = hss.si; while (GoNextStream(&hss,TRUE)) { s = hss.s; if (strmProj) vsize = hset->vecSize; @@ -1547,7 +1587,7 @@ static float SetNodeOcc(RegNode *node, BaseClass *bclass) static Boolean ParseNode(RegNode *node, AdaptXForm *xform, RegTree *rtree, IntVec classes) { - int b,c,size; + int b,c; Boolean genXForm; IntVec lclasses; @@ -1556,7 +1596,6 @@ static Boolean ParseNode(RegNode *node, AdaptXForm *xform, genXForm = FALSE; if (trace&T_TRE) printf("Node %d (%f)\n",node->nodeIndex,node->nodeOcc); if (node->nodeOcc > rtree->thresh) { - size = IntVecSize(classes); lclasses = CreateIntVec(&gstack,IntVecSize(classes)); ZeroIntVec(lclasses); if (node->numChild>0) { /* Not a terminal node */ @@ -1910,7 +1949,6 @@ static AccCache *CreateAccCache(IntVec size, int b) ac->bVector = CreateDVector(&acccaStack,vsize); ZeroDVector(ac->bVector); ac->bTriMat = CreateBlockTriMat(&acccaStack,size); - ZeroBlockTriMat(ac->bTriMat); ac->next = headac; headac = ac; return(ac); @@ -3715,6 +3753,7 @@ static Boolean GenClassXForm(BaseClass *bclass, AdaptXForm *xform) } Dispose(&gstack,accs); } + FreeIntVec(&gstack,classes); return TRUE; } @@ -4538,12 +4577,13 @@ Boolean UpdateSpkrStats(HMMSet *hset, XFInfo *xfinfo, char *datafn) if (!keepXFormDistinct) { if (xfinfo->xformTMF == NULL) { MakeFN("TMF",xfinfo->outXFormDir,NULL,newFn); - SaveAllXForms(hset,newFn,xfinfo->saveBinary); - } else + } else { MakeFN(xfinfo->xformTMF,xfinfo->outXFormDir,NULL,newFn); - SaveAllXForms(hset,newFn,xfinfo->saveBinary); + } + SaveAllXForms(hset,newFn,xfinfo->saveBinary); } } + return spkrChange; } @@ -4595,3 +4635,5 @@ void UpdateProjectModels(HMMSet *hset, char *dir) } +/* ------------------------- End of HAdapt.c ------------------------- */ + diff --git a/HTKLib/HAdapt.h b/HTKLib/HAdapt.h old mode 100644 new mode 100755 index a474643..4299313 --- a/HTKLib/HAdapt.h +++ b/HTKLib/HAdapt.h @@ -3,31 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* author: */ +/* M.J.F. Gales */ /* */ -/* 2003 M.J.F. Gales and */ -/* Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2003-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAdapt.h Adaptation Library module */ +/* File: HAdapt.h Adaptation Library module */ /* ----------------------------------------------------------- */ +/* !HVER!HAdapt: 3.5.0 [CUED 12/10/15] */ + #ifndef _HADAPT_H_ #define _HADAPT_H_ @@ -36,6 +41,12 @@ extern "C" { #endif typedef struct { + /* cz277 - xform */ + int nSpkr; + char *curOutSpkr; + char *curInSpkr; + char *curPaSpkr; + char *outSpkrPat; char *inSpkrPat; char *paSpkrPat; @@ -60,7 +71,10 @@ typedef struct { /* -------------------- Initialisation Functions -------------------------- */ -void InitAdapt(XFInfo *xfinfo); +/* cz277 - xform */ +void InitAdapt(); +void InitXFInfo(XFInfo *xfinfo); + /* Initialise configuration parameters */ @@ -195,4 +209,4 @@ void UpdateProjectModels(HMMSet *hset, char *dir); #endif /* _HADAPT_H_ */ -/* ---------------------------- END HAdapt.h ------------------------------ */ +/* ---------------------- End of HAdapt.h ------------------------ */ diff --git a/HTKLib/HArc.c b/HTKLib/HArc.c old mode 100644 new mode 100755 index b3ebb33..b80111d --- a/HTKLib/HArc.c +++ b/HTKLib/HArc.c @@ -3,31 +3,33 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HArc.c Forward Backward routines */ +/* File: HArc.c Forward backward routines */ /* ----------------------------------------------------------- */ -char *arc_version = "!HVER!HArc: 3.4.1 [CUED 12/03/09]"; -char *arc_vc_id = "$Id: HArc.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; +char *arc_version = "!HVER!HArc: 3.5.0 [CUED 12/10/15]"; +char *arc_vc_id = "$Id: HArc.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; /* @@ -43,6 +45,7 @@ char *arc_vc_id = "$Id: HArc.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -68,7 +71,7 @@ static Boolean IsLMScale = FALSE; static float WDPEN = 0; static Boolean IsWdPen = FALSE; static float FRAMEDUR = 0; -static int debug=0; +/*static int debug=0;*/ #define MAX(a,b) ((a)>(b) ? (a):(b)) @@ -77,9 +80,8 @@ static int debug=0; Boolean StackInitialised=FALSE; static MemHeap tempArcStack; /* for temporary structures. */ - - - +/* cz277 - mtload */ +static MemHeap arcstak; /* -------------------------- Arc support routines.----------------------- */ @@ -147,7 +149,11 @@ int TimeToNFrames(float time, ArcInfo *aInfo){ float fans; int ans; fans = time/aInfo->framedur; ans = (int)(fans+0.5); - if(fabs(ans-fans) > 0.1) HError(1, "There is a problem with lattice frame length. Set ARC:FRAMEDUR to frame length in seconds (e.g 0.01)"); + + if(fabs(ans-fans) > 0.1) { + HError(1, "There is a problem with lattice frame length. Set ARC:FRAMEDUR to frame length in seconds (e.g 0.01)"); + } + return ans; } @@ -210,8 +216,8 @@ HArc *CreateArc(MemHeap *mem, Lattice *lat, LArc *la, int start_time, int pos, i void PrintArc(FILE *f, HArc *a){ ArcTrans *at; - fprintf(f, "Arc{ id=%d, pos=%d, parentLarc=0x%x, t_start=%f, t_end=%f", - a->id, a->pos, (int)a->parentLarc, (float)a->t_start, (float)a->t_end); + fprintf(f, "Arc{ id=%d, pos=%d, parentLarc=%p, t_start=%f, t_end=%f", + a->id, a->pos, a->parentLarc, (float)a->t_start, (float)a->t_end); if(a->prec && a->t_end > a->prec->t_end){ printf("(>%f by %E)\n", (float)a->prec->t_end, (float)(a->t_end - a->prec->t_end)); if(a->t_end + 0.0 == a->prec->t_end){ printf("****\n"); } @@ -270,7 +276,17 @@ int arc_compare( const void* a , const void* b ) void SortArcs( ArcInfo *aInfo ) { int q; - HArc **arclist = New( &gstack , aInfo->nArcs * sizeof(HArc*) ); + + /* cz277 - mtload */ + if(!StackInitialised) { + CreateHeap(&tempArcStack, "tempArcStore", MSTAK, 1, 0.5, 10000, 100000); + StackInitialised = TRUE; + } + + /* cz277 - mtload */ + /*HArc **arclist = New( &gstack , aInfo->nArcs * sizeof(HArc*) );*/ + HArc **arclist = New(&tempArcStack, aInfo->nArcs * sizeof(HArc*)); + HArc *a , *prec = NULL ; HArc **al = arclist , **ale = arclist + aInfo->nArcs ; int id = 1 ; @@ -301,7 +317,11 @@ void SortArcs( ArcInfo *aInfo ) q=0; for(a=aInfo->start;a;a=a->foll) a->id = ++q; - Dispose( &gstack , arclist ); + /* cz277 - mtload */ + /*Dispose( &gstack , arclist );*/ + /*Dispose(&gcheap, arclist);*/ + Dispose(&tempArcStack, arclist); + } @@ -348,9 +368,182 @@ void FixLatTimes(Lattice *lat){ /*Makes it so that the sum of phone lengths equa } +/* -------------------------- Creates the arcs from the lattice. ----------------------- */ +/* cz277 - cuda fblat */ +#ifdef CUDA +void InitAcousticDev(Acoustic *ac, AcousticDev *acDev) { + int i, j, T1, Nq1, size; + StreamElem *ste; + AcousticDev acHost; + int *indexes; + NFloat *transp; + + Nq1 = ac->Nq + 1; + T1 = ac->t_end - ac->t_start + 1 + 1; + /* Nq */ + acHost.Nq = ac->Nq; + acHost.t_start = ac->t_start; + acHost.t_end = ac->t_end; + acHost.aclike = ac->aclike; + acHost.locc = ac->locc; + acHost.SP = ac->SP; + + /* indexes */ + size = sizeof(int) * Nq1; + indexes = (int *) New(&arcstak, size); + for (i = 2; i < ac->Nq; ++i) { + indexes[i] = ac->hmm->svec[i].info->pdf[1].targetIdx; + } + DevNew((void **) &acHost.indexes, size); + SyncHost2Dev(indexes, acHost.indexes, size); + /* transp */ + size = sizeof(NFloat) * Nq1 * Nq1; + transp = (NFloat *) New(&arcstak, size); + for (i = 1; i <= ac->Nq; ++i) + for (j = 1; j <= ac->Nq; ++j) + transp[i * Nq1 + j] = ac->hmm->transP[i][j]; + DevNew((void **) &acHost.transp, size); + SyncHost2Dev(transp, acHost.transp, size); + /* alphaPlus */ + size = sizeof(NFloat) * T1 * Nq1; + acHost.alphaPlus = NULL; + if (ac->alphaPlus != NULL) { + DevNew((void **) &acHost.alphaPlus, size); + } + /* betaPlus */ + acHost.betaPlus = NULL; + if (ac->betaPlus != NULL) { + DevNew((void **) &acHost.betaPlus, size); + } + /* otprob */ + acHost.otprob = NULL; + if (ac->otprob != NULL) { + DevNew((void **) &acHost.otprob, size); + } + + /*Dispose(&arcstak, transp);*/ + Dispose(&arcstak, indexes); + + /* transfer */ + SyncHost2Dev(&acHost, acDev, sizeof(AcousticDev)); +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void ClearAcousticDev(AcousticDev *acDev) { + int i, T1, Nq1, size; + AcousticDev acHost; + + SyncDev2Host(acDev, &acHost, sizeof(AcousticDev)); + T1 = acHost.t_end - acHost.t_start + 1 + 1; + Nq1 = acHost.Nq + 1; + /* indexes */ + size = sizeof(int) * Nq1; + DevDispose(acHost.indexes, size); + /* transp */ + size = sizeof(NFloat) * Nq1 * Nq1; + DevDispose(acHost.transp, size); + /* alphaPlus */ + size = sizeof(NFloat) * T1 * Nq1; + if (acHost.alphaPlus != NULL) { + DevDispose(acHost.alphaPlus, size); + } + /* betaPlus */ + if (acHost.betaPlus != NULL) { + DevDispose(acHost.betaPlus, size); + } + /* otprob */ + if (acHost.otprob != NULL) { + DevDispose(acHost.otprob, size); + } -/* -------------------------- Creates the arcs from the lattice. ----------------------- */ +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void SyncAcousticDev2HostBeta(AcousticDev *acDev, Acoustic *ac, MemHeap *mem) { + int i, j, t, T1, Nq1, size, base; + NFloat *betaPlus, *otprob; + AcousticDev acHost; + + SyncDev2Host(acDev, &acHost, sizeof(AcousticDev)); + T1 = acHost.t_end - acHost.t_start + 1 + 1; + Nq1 = acHost.Nq + 1; + /* aclike */ + ac->aclike = acHost.aclike; + + /* betaPlus (not necessary?) */ + if (acHost.SP == FALSE) { + size = sizeof(NFloat) * T1 * Nq1; + betaPlus = (NFloat *) New(&arcstak, size); + SyncDev2Host(acHost.betaPlus, betaPlus, size); + for (i = ac->t_start; i <= ac->t_end; ++i) { + t = i - ac->t_start + 1; + base = t * Nq1; + for (j = 1; j <= ac->Nq; ++j) + ac->betaPlus[i][j] = betaPlus[base + j]; + } + /* otprob (not necessary?) */ + otprob = (NFloat *) New(&arcstak, size); + SyncDev2Host(acHost.otprob, otprob, size); + for (i = ac->t_start; i <= ac->t_end; ++i) { + t = i - ac->t_start + 1; + base = t * Nq1; + for (j = 2; j < ac->Nq; ++j) { + if (ac->otprob[i][j][0] == NULL) + ac->otprob[i][j][0] = (float *) New(mem, sizeof(float) * 1); + ac->otprob[i][j][0][0] = (float) otprob[base + j]; + } + } + + /* Dispose(&arcstak, otprob); */ + Dispose(&arcstak, betaPlus); + } +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void SyncAcousticHost2DevAlpha(Acoustic *ac, AcousticDev *acDev) { + NFloat locc; + + locc = ac->locc; + /* locc */ + SyncHost2Dev(&locc, &acDev->locc, sizeof(float)); +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void SyncAcousticDev2HostAlpha(AcousticDev *acDev, Acoustic *ac) { + int size, i, j, t, T1, Nq1, base; + AcousticDev acHost; + NFloat *alphaPlus; + + SyncDev2Host(acDev, &acHost, sizeof(AcousticDev)); + T1 = acHost.t_end - acHost.t_start + 1 + 1; + Nq1 = acHost.Nq + 1; + /* alphaPlus */ + size = sizeof(NFloat) * T1 * Nq1; + alphaPlus = (NFloat *) New(&arcstak, size); + SyncDev2Host(acHost.alphaPlus, alphaPlus, size); + for (i = ac->t_start; i <= ac->t_end; ++i) { + t = i - ac->t_start + 1; + base = t * Nq1; + for (j = 1; j <= ac->Nq; ++j) + ac->alphaPlus[i][j] = alphaPlus[base + j]; + } + Dispose(&arcstak, alphaPlus); + +} +#endif void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ @@ -361,8 +554,11 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ int l; float framedur; - if(!StackInitialised) - CreateHeap(&tempArcStack, "tempArcStore", MSTAK, 1, 0.5, 1000, 10000); + /* cz277 - mtload */ + if(!StackInitialised) { + CreateHeap(&tempArcStack, "tempArcStore", MSTAK, 1, 0.5, 10000, 100000); + StackInitialised = TRUE; + } aInfo->start=aInfo->end=0; aInfo->nArcs=0; @@ -437,6 +633,7 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ aInfo->Q = Q = q; /* num unique arcs. */ aInfo->T = T; aInfo->ac = New(aInfo->mem, sizeof(Acoustic) * (q+1)); + q=0; for(arc=aInfo->start;arc;arc=arc->foll){ if(!arc->calcArc){ /* if this is one of the 'calculated' arcs */ @@ -453,6 +650,8 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ if(ac->t_start == ac->t_end+1){ ac->SP=TRUE; ac->alphat=ac->alphat1=NULL;ac->betaPlus=NULL;ac->otprob=NULL; + /* cz277 - cuda fblat */ + ac->alphaPlus = NULL; } else { int j,s,SS,S = hset->swidth[0]; /* probably just 1. */ StreamElem *ste; @@ -463,9 +662,15 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ ac->alphat1 = CreateDVector(aInfo->mem, ac->Nq); ac->betaPlus = ((DVector*)New(aInfo->mem, sizeof(DVector)*(ac->t_end-ac->t_start+1)))-ac->t_start; ac->otprob = ((float****)New(aInfo->mem, sizeof(float***)*(ac->t_end-ac->t_start+1)))-ac->t_start; + /* cz277 - cuda fblat */ + ac->alphaPlus = ((DVector *) New(aInfo->mem, sizeof(DVector) * (ac->t_end - ac->t_start + 1))) - ac->t_start; + for(t=ac->t_start;t<=ac->t_end;t++){ ac->betaPlus[t] = CreateDVector(aInfo->mem,ac->Nq); ac->otprob[t] = ((float***)New(aInfo->mem,(ac->Nq-2)*sizeof(float **)))-2; + /* cz277 - cuda fblat */ + ac->alphaPlus[t] = CreateDVector(aInfo->mem, ac->Nq); + for(j=2;jNq;j++){ ac->otprob[t][j] = (float**)New(aInfo->mem,SS*sizeof(float*)); /*2..Nq-1*/ ste = ac->hmm->svec[j].info->pdf+1; @@ -484,9 +689,7 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ } for(arc=aInfo->start;arc;arc=arc->foll) if(arc->calcArc) arc->ac = arc->calcArc->ac; - /* Set up arrays qLo[t] and qHi[t] which are used to speed up iterations over q. */ - aInfo->qLo = (int*)New(aInfo->mem, sizeof(int)*(aInfo->T+1)); /* For efficiency later, work out min & max q active at each time t. */ aInfo->qHi = (int*)New(aInfo->mem, sizeof(int)*(aInfo->T+1)); for(t=1;t<=T;t++){ aInfo->qLo[t] = T+1; aInfo->qHi[t] = -1; } @@ -499,8 +702,26 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ } } - if(trace&T_ARC && debug++ < 100){ - printf("[HArc:] %d arcs, depth %f, depth[reduced] %f\n", aInfo->nArcs, Depth(aInfo,TRUE), Depth(aInfo,FALSE)); + /* cz277 - cuda fblat */ +#ifdef CUDA + if (aInfo->FBLatCUDA == TRUE) { + /* acDev */ + DevNew((void **) &aInfo->acDev, sizeof(AcousticDev) * (aInfo->Q + 1)); + for (l = 1; l <= aInfo->Q; ++l) { + InitAcousticDev(&aInfo->ac[l], &aInfo->acDev[l]); + } + /* qLoDev & qHiDev */ + DevNew((void **) &aInfo->qLoDev, sizeof(int) * (aInfo->T + 1)); + DevNew((void **) &aInfo->qHiDev, sizeof(int) * (aInfo->T + 1)); + SyncHost2Dev(aInfo->qLo, aInfo->qLoDev, sizeof(int) * (aInfo->T + 1)); + SyncHost2Dev(aInfo->qHi, aInfo->qHiDev, sizeof(int) * (aInfo->T + 1)); + } +#endif + + /* cz277 - arcs */ + /*if(trace&T_ARC && debug++ < 100){*/ + if(trace&T_ARC) { + printf("\t\t[HArc:] %d arcs, depth %f, depth[reduced] %f\n", aInfo->nArcs, Depth(aInfo,TRUE), Depth(aInfo,FALSE)); if(trace&T_ARC2) PrintArcs(stdout, aInfo->start); } @@ -533,10 +754,14 @@ Boolean LatInLatRec(LNode *n1, LNode *n2){ return TRUE; /*Path found.*/ } - if(n1->pred && n1->pred->parc != NULL) return TRUE; /*This is to take the case where the numerator could have choices of arcs (multiple prons). + if(n1->pred && n1->pred->parc != NULL) { + return TRUE; /*This is to take the case where the numerator could have choices of arcs (multiple prons). Where the arcs re-join, just check the last one re-joining. This makes sure we don't take exponential time.*/ + } - if(n1->foll==NULL || n2->foll==NULL) return FALSE; + if(n1->foll==NULL || n2->foll==NULL) { + return FALSE; + } else{ LNode *newn1; LArc *la; @@ -553,7 +778,9 @@ Boolean LatInLatRec(LNode *n1, LNode *n2){ SameArcs(n1FollArc, la)) if(LatInLatRec(newn1, newn2)) ThisIsOK = TRUE; /*We've found a path to the end (or to re-join point). --> this num pron is OK.*/ } - if (!ThisIsOK) return FALSE; /*This num pron was not there.*/ + if (!ThisIsOK) { + return FALSE; /*This num pron was not there.*/ + } } return TRUE; } @@ -581,5 +808,9 @@ void InitArc(void) if (GetConfFlt(cParm,nParm,"FRAMEDUR",&f)){ FRAMEDUR = f; } /* Important. Frame duration in seconds. If != 0.01, specify it. */ if (GetConfFlt(cParm,nParm,"WDPEN",&f)){ WDPEN = f; IsWdPen = TRUE; } /* Overrides lattice-specified one. */ } + /* cz277 - mtload */ + CreateHeap(&arcstak, "HArc Stack", MSTAK, 1, 0.0, 100000, ULONG_MAX); } +/* ------------------------- End of HArc.c ------------------------- */ + diff --git a/HTKLib/HArc.h b/HTKLib/HArc.h old mode 100644 new mode 100755 index 682c00d..010e438 --- a/HTKLib/HArc.h +++ b/HTKLib/HArc.h @@ -3,33 +3,38 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: Arc.h -- Routines used in HFwdBkwdLat.c */ +/* File: HArc.h -- Routines used in HFBLat.c */ /* An alternative kind of lattice format used there. */ /* ----------------------------------------------------------- */ -/* !HVER!HArc: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HArc: 3.5.0 [CUED 12/10/15] */ +/* cz277 - cuda fblat */ +#ifdef CUDA +#include "HCUDA.h" +#endif /* Turns a Lattice into Arc structure. @@ -91,7 +96,6 @@ struct _CorrN{ double *beta; /* [starti..endi]. */ }; - typedef struct _Acoustic{ HArc *myArc; @@ -108,8 +112,8 @@ typedef struct _Acoustic{ DVector alphat; /* 1..Nq */ DVector alphat1; /* 1..Nq [for time t-1] */ DVector *betaPlus; /* [myArc->t_start..myArc->t_end][1..Nq] */ + DVector *alphaPlus; /* cz277 - cuda fblat */ /* [myArc->t_start..myArc->t_end][1..Nq] */ float ****otprob; /* [myArc->t_start..myArc->t_end][0..(S>1?S:0)][2..Nq-1][0..(M>1)?M:0] */ - } Acoustic; /* for calculating acoustic likelihoods... */ typedef struct _MPEStruct{ @@ -160,7 +164,11 @@ struct _Arc{ }; -#define MAXLATS 10 +/*#define MAXLATS 10*/ + +/* cz277 - ANN */ +#define MAXLATS 2000 + /*Will usually be only 1 or 2-- i.e, recognised lat plus aligned correct-transcription lattice.*/ typedef struct ArcInfoStruct{ @@ -181,9 +189,25 @@ typedef struct ArcInfoStruct{ Acoustic *ac; /* 1..Q */ int *qLo; /* [t], lowest q active at time t */ int *qHi; /* [t], highest q active at time t */ -}ArcInfo; + /* cz277 - cuda fblat */ +#ifdef CUDA + AcousticDev *acDev; /* 1 ... Q */ + int *qLoDev; /* 1 ... T */ + int *qHiDev; /* 1 ... T */ +#endif + Boolean FBLatCUDA; /* from FBInfo->FBLatCUDA */ + +}ArcInfo; +/* cz277 - cuda fblat */ +#ifdef CUDA +void InitAcousticDev(Acoustic *ac, AcousticDev *acDev); +void ClearAcousticDev(AcousticDev *acDev); +void SyncAcousticDev2HostBeta(AcousticDev *acDev, Acoustic *ac, MemHeap *mem); +void SyncAcousticHost2DevAlpha(Acoustic *ac, AcousticDev *acDev); +void SyncAcousticDev2HostAlpha(AcousticDev *acDev, Acoustic *ac); +#endif void ArcFromLat(ArcInfo *aInfo, HMMSet *hset); /*Takes a ArcInfo with the 'nLats', 'lat' and 'mem' in place, and creates the arcs .*/ @@ -206,8 +230,6 @@ int TimeToNFrames(float time, ArcInfo *aInfo); as the first and last frames of the phone). */ -/* ------------------------- End of Arc.h --------------------------- */ - void AttachMPEInfo(ArcInfo *aInfo); /* attaches the "mpe" fields */ Boolean LatInLat(Lattice *numLat, Lattice *denLat); @@ -216,3 +238,7 @@ Boolean LatInLat(Lattice *numLat, Lattice *denLat); #define EndOfWord(a) (a->pos == a->parentLarc->nAlign-1) void InitArc(void); + +/* ------------------------- End of Arc.h --------------------------- */ + + diff --git a/HTKLib/HAudio.c b/HTKLib/HAudio.c old mode 100644 new mode 100755 index cd7e510..8af2456 --- a/HTKLib/HAudio.c +++ b/HTKLib/HAudio.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAudio.c: Audio Input/Output Interface */ +/* File: HAudio.c Audio input/output interface */ /* ----------------------------------------------------------- */ -char *haudio_version = "!HVER!HAudio: 3.4.1 [CUED 12/03/09]"; +char *haudio_version = "!HVER!HAudio: 3.5.0 [CUED 12/10/15]"; char *haudio_vc_id = "$Id: HAudio.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" /* HTK Libraries */ @@ -2171,7 +2187,7 @@ void StartAudioInput(AudioIn a, int sig) if (sig<0) { /* Means use keys to start/stop */ #ifndef WIN32 printf("Press return to start sampling\n"); - read(0, &c, 1); + if(read(0, &c, 1)<0) HError(6006,"StartAudioInput: error reading from audio device"); #endif StartAudioSignal(); } diff --git a/HTKLib/HAudio.h b/HTKLib/HAudio.h old mode 100644 new mode 100755 index a4b2e79..06f3b88 --- a/HTKLib/HAudio.h +++ b/HTKLib/HAudio.h @@ -3,23 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAudio.h: Audio Input/Output */ +/* File: HAudio.h Audio Input/Output */ /* ----------------------------------------------------------- */ -/* !HVER!HAudio: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HAudio: 3.5.0 [CUED 12/10/15] */ + #ifndef _HAUDIO_H_ #define _HAUDIO_H_ diff --git a/HTKLib/HCUDA.cu b/HTKLib/HCUDA.cu new file mode 100755 index 0000000..44aec57 --- /dev/null +++ b/HTKLib/HCUDA.cu @@ -0,0 +1,2340 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HCUDA.h CUDA utilities */ +/* ----------------------------------------------------------- */ + + +#ifdef __cplusplus +extern "C" { +#endif + +const char *hcuda_version = "!HVER!HCUDA: 3.5.0 [CUED 12/10/15]"; +const char *hcuda_vc_id = "$Id: HCUDA.cu,v 1.0 2015/10/12 12:07:23 cz277 Exp $"; + +#include +#include +#include +#include "HCUDA.h" +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "config.h" + + +/* --------------------------- Trace Flags ------------------------ */ + +#define CEIL(x,y) (((x)+(y)-1) / (y)) + +/* --------------------------- Trace Flags ------------------------ */ +#define T_TOP 0001 /* Top Level tracing */ + +static ConfParam *cParm[MAXGLOBS]; /* config parameters */ +static int nParm = 0; + +static int GPUDevId = -1; /* */ +static Boolean GPUInit = FALSE; /* */ +static const char *GPUIdEnvVar = ""; /* */ +cublasHandle_t handle; /* */ +static size_t GPUMemUsed = 0; /* */ + +/* ----------------------- Device Management ---------------------- */ + +/* */ +static void ShowAllGPUs(void) { + int nGPU, i; + cudaError_t error; + cudaDeviceProp prop; + /*CUResult result;*/ + + error = cudaGetDeviceCount(&nGPU); + if (error != cudaSuccess) + HError(8800, (char *)"ShowAllGPUs: %s", cudaGetErrorString(error)); + if (nGPU == 0) + HError(8820, (char *)"ShowAllGPUs: No GPU device"); + for (i = 0; i < nGPU; ++i) { + error = cudaGetDeviceProperties(&prop, i); + if (error != cudaSuccess) + HError(8800, (char *)"ShowAllGPUs: %s", cudaGetErrorString(error)); + printf("GPU %d: %s, %luMB, SM = %d.%d", i, prop.name, prop.totalGlobalMem / 1048576, prop.major, prop.minor); + if (GPUDevId == i) + printf(" [Selected]"); + printf("\n"); + } +} + +/* To check CUDA requirement */ +static void CheckCUDAReq(cudaDeviceProp *prop) +{ + int driverVer; + int runtimeVer; + int cublasVer; + cudaError_t error; + cublasStatus_t status; + + error = cudaDriverGetVersion(&driverVer); + if (error != cudaSuccess) + HError(8800, (char *)"CheckCUDAReq: %s", cudaGetErrorString(error)); + if (driverVer < MINCUDAVER) + HError(8800, (char *)"CheckCUDAReq: CUDA driver version %d is lower than the minimum required version %d", driverVer, MINCUDAVER); + + error = cudaRuntimeGetVersion(&runtimeVer); + if (error != cudaSuccess) + HError(8800, (char *)"CheckCUDAReq: %s", cudaGetErrorString(error)); + if (runtimeVer < MINCUDAVER) + HError(8800, (char *)"CheckCUDAReq: CUDA runtime version %d is lower than the minimum required version %d", runtimeVer, MINCUDAVER); + + status = cublasGetVersion(handle, &cublasVer); + if (status != CUBLAS_STATUS_SUCCESS) + HError(8800, (char *)"CheckCUDAReq: Fail to get CUBLAS library version"); + if (cublasVer < MINCUDAVER) + HError(8800, (char *)"CheckCUDAReq: CUBLAS library version %d is lower than the minimum required version %d", cublasVer, MINCUDAVER); + + if (prop->major <= MINMAJORSMARCH && prop->minor <= MINMINORSMARCH) + HError(8800, (char *)"CheckCUDAReq: SM architecture is lower than the minimum requirement, %d.%d", MINMAJORSMARCH, MINMINORSMARCH); + + printf("CUDA driver version %d\n", driverVer); + printf("CUDA runtime version %d\n", runtimeVer); + printf("CUBLAS library version %d\n", cublasVer); +} + +/* Initialize the GPU device. It first loads the GPU device + from the config file. Then +*/ +void InitCUDA(void) +{ + ConfParam *cpVal; + + Register((char *)hcuda_version, (char *)hcuda_vc_id); + + /* load parameters from the config file */ + nParm = GetConfig((char *)"HCUDA", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfAny(cParm, nParm, (char *)"GPUID", &cpVal)) { + if (cpVal->kind == IntCKind) + GPUDevId = cpVal->val.i; + else if (cpVal->kind == StrCKind) + GPUIdEnvVar = CopyString(&gcheap, cpVal->val.s); + else + HError(8820, (char *)"InitCUDA: Unknown GPUID value kind"); + /*strcpy(buf, cpVal->val.s); + GPUIdEnvVar = (char *) New(&gcheap, sizeof(char) * strlen(buf)); + strcpy(GPUIdEnvVar, buf);*/ + } + } +} + +/* */ +void StartCUDA(void) { + char *envVar; + cudaError_t error; + cublasStatus_t status; + cudaDeviceProp prop; + + /* initialize the library and device */ + if (!GPUInit) { + /* select a device */ + if (strcmp(GPUIdEnvVar, "") != 0) { /* use env variable */ + envVar = getenv(GPUIdEnvVar); + if (envVar == NULL) { + HError(-8821, (char *)"InitCUDA: Environment variable %s not defined, reset to use GPU 0\n", GPUIdEnvVar); + GPUDevId = 0; + } + else { + GPUDevId = atoi(envVar); + } + } + if (GPUDevId < 0) { + error = cudaChooseDevice(&GPUDevId, &prop); + if (error != cudaSuccess) + HError(8800, (char *)"InitCUDA: %s", cudaGetErrorString(error)); + } + error = cudaSetDevice(GPUDevId); + if (error != cudaSuccess) + HError(8800, (char *)"InitCUDA: %s", cudaGetErrorString(error)); + error = cudaGetDeviceProperties(&prop, GPUDevId); + if (error != cudaSuccess) + HError(8800, (char *)"InitCUDA: %s", cudaGetErrorString(error)); + /* initiate CUBLAS */ + status = cublasCreate(&handle); + if (status != CUBLAS_STATUS_SUCCESS) + HError(8800, (char *)"InitCUDA: Fail to initialise CUBLAS"); + /* check version */ + CheckCUDAReq(&prop); + /* set GPUInit flag */ + GPUInit = TRUE; + /* show devices */ + ShowAllGPUs(); + } + else { + printf("InitCUDA: GPU device %d already initialised", GPUDevId); + } + printf("\n"); +} + +/* */ +void StopCUDA(void) { + if (GPUInit) { + /* destroy the context on the GPU */ + cublasDestroy(handle); + /* shutdown CUBLAS */ + cudaDeviceReset(); + /* reset GPU IDs and the flag */ + GPUDevId = -1; + GPUInit = FALSE; + } + else { + printf("StopCUDA: GPU device has already stopped"); + } +} + +/* --------------------------- Trace Flags ------------------------ */ + +__global__ void HKern_SetNSegment(NFloat val, NFloat *segPtr, int segLen) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + segPtr[pos] = val; + } +} + +__global__ void HKern_ScaledSelfAddNSegment(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + lhPtr[pos] = scale * lhPtr[pos] + rhPtr[pos]; + } +} + +__global__ void HKern_DupNSegment(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int srcPos, dstPos; + + dstPos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (dstPos < segLen * times) { + srcPos = dstPos % segLen; + dstPtr[dstPos] = srcPtr[srcPos]; + } +} + +__global__ void HKern_SubNSegment(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + resPtr[pos] = lhPtr[pos] - rhPtr[pos]; + } +} + +__global__ void HKern_MulNSegment(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + resPtr[pos] = lhPtr[pos] * rhPtr[pos]; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyAffineAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + dstPtr[pos] = scalePtr[colIdx] * srcPtr[pos] + shiftPtr[colIdx]; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyDAffineAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + dstPtr[pos] = scalePtr[colIdx]; + } +} + + +/* cz277 - pact */ +__global__ void HKern_ApplyTrAffineAct(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step, off = THREADPERBLOCK; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /* dScale */ + tmpPtr[off + thdIdx] = 0.0; /* dShift */ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += errPtr[pos] * actPtr[pos]; + tmpPtr[off + thdIdx] += errPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + tmpPtr[off + thdIdx] += tmpPtr[off + pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) { + dScalePtr[colIdx] = 0.0; + dShiftPtr[colIdx] = 0.0; + } + dScalePtr[colIdx] += tmpPtr[0]; + dShiftPtr[colIdx] += tmpPtr[off + 0]; + } + } +} + +/* cz277 - laf */ +__global__ void HKern_AccMeanNSegment(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += valPtr[pos] / tSamp; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + meanPtr[colIdx] += tmpPtr[0]; + } + } +} + +/* cz277 - laf */ +__global__ void HKern_AccVarianceNSegment(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += pow(valPtr[pos] - meanPtr[colIdx], 2) / tSamp; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + varPtr[colIdx] += tmpPtr[0]; + } + } +} + + +/* cz277 - pact */ +__global__ void HKern_ApplyParmReLUAct(NFloat *srcPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (srcPtr[pos] > 0.0) + dstPtr[pos] = posPtr[colIdx] * srcPtr[pos]; + else + dstPtr[pos] = negPtr[colIdx] * srcPtr[pos]; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyDParmReLUAct(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (inpPtr[pos] > 0.0) + dstPtr[pos] = posPtr[colIdx]; + else + dstPtr[pos] = negPtr[colIdx]; + } +} + + +/* cz277 - pact */ +__global__ void HKern_ApplyTrParmReLUAct(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step, off = THREADPERBLOCK; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /* alpha */ + tmpPtr[off + thdIdx] = 0.0; /* beta */ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + if (inpPtr[pos] > 0.0) + tmpPtr[thdIdx] += errPtr[pos] * inpPtr[pos]; + else + tmpPtr[off + thdIdx] += errPtr[pos] * inpPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + tmpPtr[off + thdIdx] += tmpPtr[off + pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) { + dPosPtr[colIdx] = 0.0; + dNegPtr[colIdx] = 0.0; + } + dPosPtr[colIdx] += tmpPtr[0]; + dNegPtr[colIdx] += tmpPtr[off + 0]; + } + } +} + + +/* cz277 - laf */ +__global__ void HKern_ApplyPReLUAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (srcPtr[pos] > 0.0) + dstPtr[pos] = scalePtr[colIdx] * srcPtr[pos]; + else + dstPtr[pos] = 0.0; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyDPReLUAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (scalePtr[colIdx] != 0.0 && srcPtr[pos] / scalePtr[colIdx] > 0.0) + dstPtr[pos] = scalePtr[colIdx]; + else + dstPtr[pos] = 0.0; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyTrPReLUAct(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + NFloat act; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + if (scalePtr[colIdx] != 0.0) { + act = srcPtr[pos] / scalePtr[colIdx]; + if (act > 0.0) + tmpPtr[thdIdx] += errPtr[pos] * act; + } + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dScalePtr[colIdx] = 0.0; + dScalePtr[colIdx] += tmpPtr[0]; + } + } +} + +__global__ void HKern_ApplyReLUAct(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + if (srcPtr != dstPtr && srcPtr[pos] > 0) { + dstPtr[pos] = srcPtr[pos]; + } + if (srcPtr[pos] < 0) { + dstPtr[pos] = srcPtr[pos] * scale; + /* cz277 - standard ReLU */ + /*dstPtr[pos] = 0.0;*/ + } + } +} + +__global__ void HKern_ApplyDReLUAct(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + if (srcPtr[pos] > 0.0) { + dstPtr[pos] = 1.0; + } + else { + dstPtr[pos] = scale; + /* cz277 - standard ReLU */ + /*dstPtr[pos] = 0.0;*/ + } + } +} + +__global__ void HKern_ApplyDLinearAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = 1.0; + } +} + +__global__ void HKern_ApplyLHUCSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal, lhucVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = -1.0 * rolePtr[colIdx]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + floatVal = -1.0 * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = lhucVal * 1.0 / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDLHUCSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal, lhucVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = -1.0 * rolePtr[colIdx]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + floatVal = srcPtr[pos] / lhucVal; + dstPtr[pos] = srcPtr[pos] * (1.0 - floatVal); + } +} + +__global__ void HKern_ApplyTrLHUCSigmoidActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + NFloat floatVal; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + floatVal = -1.0 * rolePtr[colIdx]; + CHKNFLTEXPE(floatVal) + floatVal = 0.5 * 2.0 / (1.0 + exp(floatVal)); + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*actPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += errPtr[pos] * actPtr[pos] * (1.0 - floatVal); + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dRolePtr[colIdx] = 0.0; + dRolePtr[colIdx] += tmpPtr[0]; + } + } +} + + +__global__ void HKern_ApplyParmSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat* thetaPtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = (-1.0) * gammaPtr[colIdx] * srcPtr[pos] + thetaPtr[colIdx]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[colIdx] / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDParmSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int pos, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + if (etaPtr[colIdx] != 0.0) + dstPtr[pos] = gammaPtr[colIdx] * srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[colIdx]); + else + dstPtr[pos] = 0.0; + } +} + +__global__ void HKern_ApplyTrParmSigmoidActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step, off = THREADPERBLOCK; + NFloat floatVal, fracVal; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /*actPtr[base + idx * col];*/ + tmpPtr[off + thdIdx] = 0.0; + tmpPtr[off + off + thdIdx] = 0.0; + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + floatVal = (-1.0) * gammaPtr[colIdx] * inpPtr[pos] + thetaPtr[colIdx]; + CHKNFLTEXPE(floatVal) + fracVal = 1.0 / (1.0 + exp(floatVal)); + tmpPtr[thdIdx] += errPtr[pos] * fracVal; + if (etaPtr[colIdx] != 0.0) { + tmpPtr[off + thdIdx] += errPtr[pos] * inpPtr[pos] * etaPtr[colIdx] * fracVal * (1.0 - fracVal); + tmpPtr[off + off + thdIdx] -= errPtr[pos] * etaPtr[colIdx] * fracVal * (1.0 - fracVal); + } + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + tmpPtr[off + thdIdx] += tmpPtr[off + pos]; + tmpPtr[off + off + thdIdx] += tmpPtr[off + off + pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) { + dEtaPtr[colIdx] = 0.0; + dGammaPtr[colIdx] = 0.0; + dThetaPtr[colIdx] = 0.0; + } + dEtaPtr[colIdx] += tmpPtr[0]; + dGammaPtr[colIdx] += tmpPtr[off + 0]; + dThetaPtr[colIdx] += tmpPtr[off + off + 0]; + } + } +} + + +__global__ void HKern_ApplyPSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = (-1.0) * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[colIdx] / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDPSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int pos, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + /* dstPtr[pos] = srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[colIdx]); */ + if (etaPtr[colIdx] != 0.0) + dstPtr[pos] = 1.0 / etaPtr[colIdx] * srcPtr[pos] * (etaPtr[colIdx] - srcPtr[pos]); + else + dstPtr[pos] = 0.0; + } +} + +__global__ void HKern_ApplyTrPSigmoidActCUDA(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /*actPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + /* tmpPtr[thdIdx] += errPtr[pos] * srcPtr[pos] / etaPtr[colIdx]; */ + if (etaPtr[colIdx] != 0.0) + tmpPtr[thdIdx] += errPtr[pos] * 1.0 / etaPtr[colIdx] * srcPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dEtaPtr[colIdx] = 0.0; + dEtaPtr[colIdx] += tmpPtr[0]; + } + } +} + + +__global__ void HKern_ApplySigmoidAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = -1.0 * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = 1.0 / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDSigmoidAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = (1 - srcPtr[pos]) * srcPtr[pos]; + } +} + +__global__ void HKern_ApplyTanHAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + CHKNFLTEXPE(floatVal) + floatVal = exp(floatVal); + dstPtr[pos] = (floatVal - 1.0 / floatVal) / (floatVal + 1.0 / floatVal); + } +} + +__global__ void HKern_ApplyDTanHAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = 1 - pow(srcPtr[pos], 2); + } +} + +__global__ void HKern_DualSumByRow(NFloat *srcPtr, int col, int size, int incr, NFloat *dstPtr) { + int lhpos, rhpos, lhidx, rhidx, mod; + + lhpos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (lhpos < size) { + mod = incr * 2; + lhidx = lhpos % col; + if (lhidx % mod == 0) { + rhidx = lhidx + incr; + rhpos = lhpos + incr; + if (rhidx >= col) { + dstPtr[lhpos] = srcPtr[lhpos]; + } + else { + dstPtr[lhpos] = srcPtr[lhpos] + srcPtr[rhpos]; + } + } + } +} + +__global__ void HKern_ApplySoftmaxAct(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int frame, i, base, off; + NFloat den, floatVal; + + frame = (blockIdx.x * blockDim.x) + threadIdx.x; + if (frame < row) { + den = 0.0; + base = frame * col; + for (i = 0, off = base; i < col; ++i, ++off) { + floatVal = srcPtr[off]; + CHKNFLTEXPE(floatVal) + floatVal = exp(floatVal); + dstPtr[off] = floatVal; + den += floatVal; + } + for (i = 0, off = base; i < col; ++i, ++off) { + dstPtr[off] /= den; + } + } +} + +__global__ void HKern_ApplyRedSoftmaxAct(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos; + NFloat maxVal, sumVal, tmpVal; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + base = rowIdx * col; + /* 1. find the max val for current frame (rowIdx) and store it in tmpPtr[thdIdx] */ + /* a. collect the maxes for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = srcPtr[base + idx]; + idx += thdNum; + while (idx < col) { + pos = base + idx; + if (tmpPtr[thdIdx] < srcPtr[pos]) + tmpPtr[thdIdx] = srcPtr[pos]; + idx += thdNum; + } + __syncthreads(); + /* b. dual max within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx && tmpPtr[thdIdx] < tmpPtr[pos]) { + tmpPtr[thdIdx] = tmpPtr[pos]; + } + } + __syncthreads(); + } + maxVal = tmpPtr[0]; + __syncthreads(); + /* 2. find the sum */ + /* a. collect the sum for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (idx < col) { + pos = base + idx; + tmpVal = srcPtr[pos] - maxVal; + CHKNFLTEXPE(tmpVal) + dstPtr[pos] = exp(tmpVal); + tmpPtr[thdIdx] += dstPtr[pos]; + idx += thdNum; + } + __syncthreads(); + /* b. dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + sumVal = tmpPtr[0]; + /* 3. normalise */ + idx = thdIdx; + while (idx < col) { + dstPtr[base + idx] /= sumVal; + idx += thdNum; + } + } +} + +__global__ void HKern_ApplySoftReLAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = log(1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDSoftReLAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = 1.0 - 1.0 / exp(floatVal); + } +} + +__global__ void HKern_ApplySoftSignAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = srcPtr[pos] / (1 + abs(srcPtr[pos])); + } +} + +__global__ void HKern_ApplyLogTrans(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + if (floatVal <= 0) { + floatVal = LZERO; + } + else { + floatVal = log(floatVal); + if (floatVal < LSMALL) { + floatVal = LSMALL; + } + } + dstPtr[pos] = floatVal; + } +} + +__global__ void HKern_RedSumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += srcPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dstPtr[colIdx] = 0.0; + dstPtr[colIdx] += tmpPtr[0]; + } + } +} + +__global__ void HKern_SumNMatrixByCol(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, pos; + NFloat sum; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < col) { + sum = 0.0; + for (i = 0; i < row; ++i) { + sum += srcPtr[i * col + pos]; + } + dstPtr[pos] = sum; + } +} + +__global__ void HKern_SumNMatrixByColAcc(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, pos; + NFloat sum; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < col) { + sum = 0.0; + for (i = 0; i < row; ++i) { + sum += srcPtr[i * col + pos]; + } + dstPtr[pos] += sum; + } +} + +__global__ void HKern_SquaredNSegment(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + dstPtr[pos] = pow(srcPtr[pos], 2); + } +} + +__global__ void HKern_CompAdaGradNSegment(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + nlrSeg[pos] = eta / sqrt(K + ssgSeg[pos]); + } +} + +__global__ void HKern_CalXENTCriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + __shared__ NFloat tmpPtr[THREADPERBLOCK]; + int thdIdx, thdNum, pos, idx, incr; + NFloat tn, yn; + + thdIdx = threadIdx.x; + thdNum = blockDim.x; + + if (thdIdx < thdNum) { + /* a. collect the sums for the groups */ + pos = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (pos < segLen) { + tn = refPtr[pos]; + yn = hypPtr[pos]; + if (tn == 0.0) + tmpPtr[thdIdx] += 0.0; + else if (yn == 0.0) + tmpPtr[thdIdx] += tn * LZERO; + else + tmpPtr[thdIdx] += (-1.0) * tn * log(yn / tn); + pos += thdNum; + } + __syncthreads(); + /* b. dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) + tmpPtr[thdIdx] += tmpPtr[pos]; + } + __syncthreads(); + } + *crtPtr = tmpPtr[0]; + } +} + +__global__ void HKern_CalMMSECriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + __shared__ NFloat tmpPtr[THREADPERBLOCK]; + int thdIdx, thdNum, pos, idx, incr; + + thdIdx = threadIdx.x; + thdNum = blockDim.x; + + if (thdIdx < thdNum) { + /* a. collect the sums for the groups */ + pos = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (pos < segLen) { + tmpPtr[thdIdx] += pow(refPtr[pos] - hypPtr[pos], 2); + pos += thdNum; + } + __syncthreads(); + /* dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + *crtPtr = tmpPtr[0]; + } +} + +__global__ void HKern_AddSegmentTargetPen(NFloat *srcPtr, NFloat *penPtr, int row, int col, NFloat *dstPtr) { + int pos, off; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + off = pos % col; + dstPtr[pos] = srcPtr[pos] + penPtr[off]; + } +} + +/*__global__ void HKern_SubNSegmentByConst(NFloat *srcSeg, int segLen, float constVal, NFloat *dstSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + dstSeg[pos] = srcSeg[pos] - constVal; + } +}*/ + +/* cz277 - semi */ +__global__ void HKern_ShiftNSegmentVals(NFloat *srcSeg, int segLen, float shiftVal, NFloat *dstSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + dstSeg[pos] = srcSeg[pos] + shiftVal; + } +} + +/* cz277 - 1007 */ +__global__ void HKern_CopyPartialNSegment(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < minRow * minCol) { + rowIdx = pos / minCol; + colIdx = pos % minCol; + dstPtr[rowIdx * dstCol + colIdx] = srcPtr[rowIdx * srcCol + colIdx]; + } +} + +/* cz277 - gradlim */ +__global__ void HKern_ClipNSegmentVals(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + if (srcSeg[pos] > upperLim) + dstSeg[pos] = upperLim; + else if (srcSeg[pos] < lowerLim) + dstSeg[pos] = lowerLim; + else if (srcSeg != dstSeg) + dstSeg[pos] = srcSeg[pos]; + } +} + +__global__ void HKern_RedMaxElementIndex(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos, off = THREADPERBLOCK; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + base = rowIdx * col; + /* find the max val for current frame (rowIdx) and store it in tmpPtr[thdIdx] */ + /* a. collect the maxes for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = srcPtr[base + idx]; + tmpPtr[off + thdIdx] = idx; + idx += thdNum; + while (idx < col) { + pos = base + idx; + if (tmpPtr[thdIdx] < srcPtr[pos]) { + tmpPtr[thdIdx] = srcPtr[pos]; + tmpPtr[off + thdIdx] = idx; + } + idx += thdNum; + } + __syncthreads(); + /* b. dual max within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx && tmpPtr[thdIdx] < tmpPtr[pos]) { + tmpPtr[thdIdx] = tmpPtr[pos]; + tmpPtr[off + thdIdx] = tmpPtr[off + pos]; + } + } + __syncthreads(); + } + /*__syncthreads();*/ + if (thdIdx == 0) + dstPtr[rowIdx] = tmpPtr[off + 0]; + /*dstPtr[rowIdx] = (NFloat) tmpPtr[off + 0];*/ + /*__syncthreads();*/ + } +} + +/* cz277 - max norm */ +__global__ void HKern_RedCalNMatrixL2NormByRow(NFloat *matPtr, int row, int col, NFloat *normPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + /* 1. accumulate the L2 norm for each row */ + base = rowIdx * col; + idx = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (idx < col) { + pos = base + idx; + tmpPtr[thdIdx] += pow(matPtr[pos], 2); + idx += thdNum; + } + __syncthreads(); + /* b. dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + if (thdIdx == 0) { + normPtr[rowIdx] = sqrt(tmpPtr[0]); + } + } +} + +/* cz277 - max norm */ +__global__ void HKern_RedMaxElementValue(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + base = rowIdx * col; + /* find the max val for current frame (rowIdx) and store it in tmpPtr[thdIdx] */ + /* a. collect the maxes for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = srcPtr[base + idx]; + idx += thdNum; + while (idx < col) { + pos = base + idx; + if (tmpPtr[thdIdx] < srcPtr[pos]) { + tmpPtr[thdIdx] = srcPtr[pos]; + } + idx += thdNum; + } + __syncthreads(); + /* b. dual max within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx && tmpPtr[thdIdx] < tmpPtr[pos]) { + tmpPtr[thdIdx] = tmpPtr[pos]; + } + } + __syncthreads(); + } + /*__syncthreads();*/ + if (thdIdx == 0) + dstPtr[rowIdx] = sqrt(tmpPtr[0]); + } +} + +__global__ void HKern_DivideNMatrixByRow(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr) { + int pos, rowIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + rowIdx = (int) pos / col; + dstPtr[pos] = srcPtr[pos] / normPtr[rowIdx]; + } +} + +/* --------------------------- HFBLat Kerns ------------------------ */ + +/* cz277 - cuda fblat */ +__global__ void HKern_Setotprob4q(int T, NFloat *llhPtr, int ncols, int *qLo, int *qHi, int Q, float probScale, AcousticDev *acList) { + int pos, tIdx, tRel, qIdx, s, Nq1; + AcousticDev *curAc; + NFloat *otprob; + NFloat *matptr; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < T * Q) { + tIdx = pos / Q + 1; + qIdx = pos % Q + 1; + if (qIdx >= qLo[tIdx] && qIdx <= qHi[tIdx]) { + curAc = &acList[qIdx]; + Nq1 = curAc->Nq + 1; + if (tIdx >= curAc->t_start && tIdx <= curAc->t_end) { /* q is active at t */ + matptr = llhPtr + (tIdx - 1) * ncols; + tRel = tIdx - curAc->t_start + 1; + otprob = curAc->otprob + tRel * Nq1; + for (s = 2; s < curAc->Nq; ++s) { + otprob[s] = matptr[curAc->indexes[s] - 1]; + } + } + } + } +} + + +/* cz277 - cuda fblat */ +__device__ NFloat LAddDev(NFloat x, NFloat y) { + NFloat temp, diff, z; + + if (x < y) { + temp = x; + x = y; + y = temp; + } + diff = y - x; + if (diff < -23.025851) { + if (x < LSMALL) { + return LZERO; + } + else { + return x; + } + } + else { + z = exp(diff); + return x + log(1.0 + z); + } +} + +/* cz277 - cuda fblat */ +__global__ void HKern_SetModelPlus(int Q, AcousticDev *acList) { + int tIdx, tRel, qIdx, Nq1, i, j; + AcousticDev *curAc; + NFloat *bqt, *bqt1, x; + + qIdx = (blockIdx.x * blockDim.x) + threadIdx.x; + if (qIdx < Q) { + qIdx += 1; + curAc = acList + qIdx; + Nq1 = curAc->Nq + 1; + for (tIdx = curAc->t_end; tIdx >= curAc->t_start; --tIdx) { + tRel = tIdx - curAc->t_start + 1; + /* SetModelPlus subroutine */ + x = LZERO; + bqt = &curAc->betaPlus[tRel * Nq1]; + bqt1 = &curAc->betaPlus[(tRel + 1) * Nq1]; + if (tIdx == curAc->t_end) + bqt[curAc->Nq] = 0; + else + bqt[curAc->Nq] = LZERO; + for (i = 2; i < curAc->Nq; ++i) { + x = bqt[curAc->Nq] + curAc->transp[i * Nq1 + curAc->Nq]; + if (tIdx + 1 <= curAc->t_end) { /* in beam next time frame */ + for (j = 2; j < curAc->Nq; ++j) { + x = LAddDev(x, bqt1[j] + curAc->transp[i * Nq1 + j]); + } + } + x += curAc->otprob[tRel * Nq1 + i]; + bqt[i] = x; + } + x = LZERO; + for (i = 2; i < curAc->Nq; ++i) { + x = LAddDev(x, bqt[i] + curAc->transp[1 * Nq1 + i]); + } + bqt[1] = x; + } + /* neet to set the total accumulated acoustics (tRel ~ tIdx = curAc->t_start) */ + if (curAc->SP == TRUE) + curAc->aclike = curAc->transp[1 * Nq1 + curAc->Nq]; + else + curAc->aclike = curAc->betaPlus[tRel * Nq1 + 1]; + } +} + + +/* cz277 - cuda fblat */ +__global__ void HKern_ZeroAlphas(int T, int Q, AcousticDev *acList) { + int i, pos, Nq1, tIdx, tRel, qIdx; + AcousticDev *curAc; + NFloat *alpha; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < T * Q) { + tIdx = pos / Q + 1; + qIdx = pos % Q + 1; + curAc = &acList[qIdx]; + /* q is active at t */ + if (tIdx >= curAc->t_start && tIdx <= curAc->t_end) { + tRel = tIdx - curAc->t_start + 1; + Nq1 = curAc->Nq + 1; + alpha = &curAc->alphaPlus[tRel * Nq1]; + if (curAc->SP == FALSE) { + for (i = 1; i < Nq1; ++i) { + alpha[i] = LZERO; + } + } + } + } +} + + +/* cz277 - cuda fblat */ +__global__ void HKern_StepAlpha(int Q, AcousticDev *acList) { + int tIdx, qIdx, Nq1, i, j, tRel; + AcousticDev *curAc; + NFloat *aq, *laq, x = 0.0, y, a; + NFloat *outprob; + + qIdx = (blockIdx.x * blockDim.x) + threadIdx.x; + if (qIdx < Q) { + qIdx += 1; + curAc = acList + qIdx; + /* for each time */ + for (tIdx = curAc->t_start; tIdx <= curAc->t_end; ++tIdx) { + tRel = tIdx - curAc->t_start + 1; + Nq1 = curAc->Nq + 1; + aq = &curAc->alphaPlus[tRel * Nq1]; + laq = (tIdx - 1 >= curAc->t_start && tIdx - 1 <= curAc->t_end)? &curAc->alphaPlus[(tRel - 1) * Nq1]: NULL; + /* outprob != NULL ?? */ + outprob = &curAc->otprob[tRel * Nq1]; + if (tIdx == curAc->t_start) + aq[1] = curAc->locc - curAc->aclike; + else + aq[1] = LZERO; + x = LZERO; + for (j = 2; j < curAc->Nq; ++j) { + a = curAc->transp[1 * Nq1 + j]; + x = (a > LSMALL)? a + aq[1]: LZERO; + for (i = 2; i <= curAc->Nq; ++i) { + a = curAc->transp[i * Nq1 + j]; + y = (laq? laq[i]: LZERO); + if (a > LSMALL && y > LSMALL) { + x = LAddDev(x, y + a); + /*x = log(x + y + a);*/ + } + } + aq[j] = x + outprob[j]; + } + x = LZERO; + for (i = 2; i < curAc->Nq; ++i) { + a = curAc->transp[i * Nq1 + curAc->Nq]; + y = aq[i]; + if (a > LSMALL && y > LSMALL) { + x = LAddDev(x, y + a); + /*x = log(x + y + a);*/ + } + } + aq[curAc->Nq] = x; + /* work out the exit problem for checking purpose */ + } + } +} + + +/* --------------------------- Trace Flags ------------------------ */ + +/* */ +void SyncDev2Host(void *devPtr, void *hostPtr, size_t size) { + cudaMemcpy(hostPtr, devPtr, size, cudaMemcpyDeviceToHost); +} + +/* */ +void SyncHost2Dev(void *hostPtr, void *devPtr, size_t size) { + cudaMemcpy(devPtr, hostPtr, size, cudaMemcpyHostToDevice); +} + +/* */ +void DevDispose(void *devPtr, size_t size) { + cudaFree(devPtr); + GPUMemUsed -= size; +} + +/* */ +Boolean DevNew(void **devAddr, size_t size) { + if (cudaMalloc(devAddr, size) != cudaSuccess) + return FALSE; + GPUMemUsed += size; + return TRUE; +} + +/* */ +void ShowGPUMemUsage(void) { + printf("(More than) %luMB space allocated in GPU %d memory\n", GPUMemUsed / 1048576, GPUDevId); +} + +/* */ +void SetNSegmentCUDA(NFloat val, NFloat *segPtr, int segLen) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SetNSegmentCUDA: Block number exceeds the maximum"); + HKern_SetNSegment<<>>(val, segPtr, segLen); +} + +/* */ +void ClearNSegmentCUDA(NFloat *segPtr, int segLen) { + int nBlocks; + cudaError_t status; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ClearNSegmentCUDA: Block number exceeds the maximum"); + /*HKern_SetNSegment<<>>(0, segPtr, segLen);*/ + status = cudaMemset(segPtr, 0, segLen * sizeof(NFloat)); + if (status != cudaSuccess) + HError(8822, (char *)"ClearNSegmentCUDA: cudaMemset funtion failed"); + /*cudaDeviceSynchronize();*/ +} + + +/* */ +void CopyNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDcopy(handle, segLen, srcPtr, 1, dstPtr, 1); +#else + status = cublasScopy(handle, segLen, srcPtr, 1, dstPtr, 1); +#endif + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"CopyNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* */ +void AddNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + cublasStatus_t status; + const NFloat alpha = 1.0; + +#ifdef DOUBLEANN + status = cublasDaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#else + status = cublasSaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#endif + + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"AddNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* cz277 - l2 fix */ +void AddScaledNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr) { + cublasStatus_t status; + const NFloat alpha = scale; + +#ifdef DOUBLEANN + status = cublasDaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#else + status = cublasSaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#endif + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"AddScaledNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* */ +void ScaleNSegmentCUDA(int segLen, NFloat scale, NFloat *valPtr) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDscal(handle, segLen, &scale, valPtr, 1); +#else + status = cublasSscal(handle, segLen, &scale, valPtr, 1); +#endif + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"ScaleNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* */ +void ScaledSelfAddNSegmentCUDA(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ScaledSelfAddNSegmentCUDA: Block number exceeds the maximum"); + HKern_ScaledSelfAddNSegment<<>>(rhPtr, segLen, scale, lhPtr); +} + +/* */ +void DupNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int nBlocks; + + nBlocks = CEIL(segLen * times, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"DupNSegmentCUDA: Block number exceeds the maximum"); + HKern_DupNSegment<<>>(srcPtr, segLen, dstPtr, times); +} + +/* */ +void SubNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SubNSegmentCUDA: Block number exceeds the maximum"); + HKern_SubNSegment<<>>(lhPtr, rhPtr, segLen, resPtr); +} + +/* */ +void MulNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"MulNSegmentCUDA: Block number exceeds the maximum"); + HKern_MulNSegment<<>>(lhPtr, rhPtr, segLen, resPtr); +} + +/* cz277 - pact */ +void ApplyAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyAffineActCUDA: Block number exceeds the maximum"); + HKern_ApplyAffineAct<<>>(srcPtr, row, col, scalePtr, shiftPtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyDAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDAffineActCUDA: Block number exceeds the maximum"); + HKern_ApplyDAffineAct<<>>(srcPtr, row, col, scalePtr, shiftPtr, dstPtr); +} + + +/* cz277 - pact */ +void ApplyTrAffineActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = 2 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrStdDevAffineActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrAffineAct<<>>(errPtr, actPtr, row, col, scalePtr, shiftPtr, accFlag, dScalePtr, dShiftPtr); +} + + +/* cz277 - laf */ +void AccMeanNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"AccMeanNSegmentCUDA: Block number exceeds the maximum"); + HKern_AccMeanNSegment<<>>(valPtr, row, col, tSamp, meanPtr); +} + +/* cz277 - laf */ +void AccVarianceNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"AccVarianceNSegmentCUDA: Block number exceeds the maximum"); + HKern_AccVarianceNSegment<<>>(valPtr, row, col, tSamp, meanPtr, varPtr); +} + +/* cz277 - pact */ +void ApplyParmReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyParmReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyParmReLUAct<<>>(srcPtr, row, col, posPtr, negPtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyDParmReLUActCUDA(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDParmReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyDParmReLUAct<<>>(inpPtr, row, col, posPtr, negPtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyTrParmReLUActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = 2 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrParmReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrParmReLUAct<<>>(errPtr, inpPtr, row, col, accFlag, dPosPtr, dNegPtr); +} + +/* cz277 - pact */ +void ApplyPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyPReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyPReLUAct<<>>(srcPtr, row, col, scalePtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyDPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDPReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyDPReLUAct<<>>(srcPtr, row, col, scalePtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyTrPReLUActCUDA(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrPReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrPReLUAct<<>>(errPtr, srcPtr, row, col, scalePtr, accFlag, dScalePtr); +} + +/* */ +void ApplyReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyReLActCUDA: Block number exceeds the maximum"); + HKern_ApplyReLUAct<<>>(srcPtr, len, scale, dstPtr); +} + +/* */ +void ApplyDReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDReLActCUDA: Block number exceeds the maximum"); + HKern_ApplyDReLUAct<<>>(srcPtr, len, scale, dstPtr); +} + +/* */ +void ApplyDLinearActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDLinearActCUDA: Block number exceeds the maximum"); + HKern_ApplyDLinearAct<<>>(srcPtr, len, dstPtr); +} + +void ApplyLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyLHUCSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyLHUCSigmoidAct<<>>(srcPtr, row, col, rolePtr, dstPtr); +} + +void ApplyDLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDLHUCSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDLHUCSigmoidAct<<>>(srcPtr, row, col, rolePtr, dstPtr); +} + +void ApplyTrLHUCSigmoidActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrLHUCSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrLHUCSigmoidActCUDA<<>>(errPtr, actPtr, row, col, rolePtr, accFlag, dRolePtr); +} + +void ApplyPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyPSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyPSigmoidAct<<>>(srcPtr, row, col, etaPtr, dstPtr); +} + +void ApplyDPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDPSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDPSigmoidAct<<>>(srcPtr, row, col, etaPtr, dstPtr); +} + +void ApplyTrPSigmoidActCUDA(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrPSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrPSigmoidActCUDA<<>>(errPtr, srcPtr, etaPtr, row, col, accFlag, dEtaPtr); +} + + +void ApplyParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyParmSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyParmSigmoidAct<<>>(srcPtr, row, col, etaPtr, gammaPtr, thetaPtr, dstPtr); +} + +void ApplyDParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDParmSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDParmSigmoidAct<<>>(srcPtr, row, col, etaPtr, gammaPtr, thetaPtr, dstPtr); +} + +void ApplyTrParmSigmoidActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = 3 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrParmSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrParmSigmoidActCUDA<<>>(errPtr, inpPtr, row, col, etaPtr, gammaPtr, thetaPtr, accFlag, dEtaPtr, dGammaPtr, dThetaPtr); +} + + +/* */ +void ApplySigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplySigmoidAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyDSigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDSigmoidAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTanHActCUDA: Block number exceeds the maximum"); + HKern_ApplyTanHAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyDTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDTanHActCUDA: Block number exceeds the maximum"); + HKern_ApplyDTanHAct<<>>(srcPtr, len, dstPtr); +} + + +/* */ +void ApplyRedSoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks, sBytes; + + nBlocks = row; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyRedSoftmaxActCUDA: Block number exceeds the maximum"); + HKern_ApplyRedSoftmaxAct<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +void ApplySoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftmaxActCUDA: Block number exceeds the maximum"); + HKern_ApplySoftmaxAct<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +void ApplySoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftReLActCUDA: Block number exceeds the maximum"); + HKern_ApplySoftReLAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyDSoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftReLActCUDA: Block number exceeds the maximum"); + HKern_ApplyDSoftReLAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplySoftSignActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftSignActCUDA: Block number exceeds the maximum"); + HKern_ApplySoftSignAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyLogTransCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyLogTransCUDA: Block number exceeds the maximum"); + HKern_ApplyLogTrans<<>>(srcPtr, len, dstPtr); +} + +/* */ +void RedSumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"RedSumNMatrixByColCUDA: Block number exceeds the maximum"); + HKern_RedSumNMatrixByColCUDA<<>>(srcPtr, row, col, accFlag, dstPtr); +} + +/* */ +void SumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SumNMatrixByColCUDA: Block number exceeds the maximum"); + HKern_SumNMatrixByCol<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +void SquaredNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SquaredNSegmentCUDA: Block number exceeds the maximum"); + HKern_SquaredNSegment<<>>(srcPtr, segLen, dstPtr); +} + +/* */ +void CompAdaGradNSegmentCUDA(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"CompAdaGradNSegmentCUDA: Block number exceeds the maximum"); + HKern_CompAdaGradNSegment<<>>(eta, K, segLen, ssgSeg, nlrSeg); +} + +/* */ +void HNBlasNNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, &alpha, A, m, B, k, &beta, C, m); +#else + status = cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, &alpha, A, m, B, k, &beta, C, m); +#endif + if (status != CUBLAS_STATUS_SUCCESS) { + HError(8890, (char *)"HNBlasNNgemmCUDA: CUBLAS library gemm function failed"); + } +} + +/* */ +void HNBlasNTgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_T, m, n, k, &alpha, A, m, B, n, &beta, C, m); +#else + status = cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_T, m, n, k, &alpha, A, m, B, n, &beta, C, m); +#endif + if (status != CUBLAS_STATUS_SUCCESS) { + HError(8890, (char *)"HNBlasNTgemmCUDA: CUBLAS library gemm function failed"); + } +} + +/* */ +void HNBlasTNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDgemm(handle, CUBLAS_OP_T, CUBLAS_OP_N, m, n, k, &alpha, A, k, B, k, &beta, C, m); +#else + status = cublasSgemm(handle, CUBLAS_OP_T, CUBLAS_OP_N, m, n, k, &alpha, A, k, B, k, &beta, C, m); +#endif + if (status != CUBLAS_STATUS_SUCCESS) { + HError(8890, (char *)"HNBlasTNgemmCUDA: CUBLAS library gemm function failed"); + } +} + +/* */ +void CalXENTCriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + HKern_CalXENTCriterionCUDA<<<1, THREADPERBLOCK>>>(refPtr, hypPtr, segLen, crtPtr); +} + +/* */ +void CalMMSECriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + HKern_CalMMSECriterionCUDA<<<1, THREADPERBLOCK>>>(refPtr, hypPtr, segLen, crtPtr); +} + +/* */ +void AddNSegmentTargetPenCUDA(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg) { + int nBlocks, size; + + size = row * col; + nBlocks = CEIL(size, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"AddNVectorTargetPenCUDA: Block number exceeds the maximum"); + + HKern_AddSegmentTargetPen<<>>(srcSeg, penSeg, row, col, dstSeg); +} + +void FindMaxElementCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks, sBytes; + + nBlocks = row; + sBytes = 2 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"FindMaxElementCUDA: Block number exceeds the maximum"); + HKern_RedMaxElementIndex<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +/*void SubNSegmentByConstCUDA(NFloat *srcSeg, int segLen, NFloat constVal, NFloat *dstSeg) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(9999, (char *)"SubNSegmentByConstCUDA: Block number exceeds the maximum"); + + HKern_SubNSegmentByConst<<>>(srcSeg, segLen, constVal, dstSeg); +}*/ + +/* cz277 - semi */ +/* */ +void ShiftNSegmentValsCUDA(NFloat *srcSeg, int segLen, NFloat shiftVal, NFloat *dstSeg) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ShiftNSegmentValsCUDA: Block number exceeds the maximum"); + + HKern_ShiftNSegmentVals<<>>(srcSeg, segLen, shiftVal, dstSeg); +} + +/* cz277 - 1007 */ +void CopyPartialNSegmentCUDA(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + int len, nBlocks; + + len = minRow * minCol; + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"CopyPartialNSegmentCUDA: Block number exceeds the maximum"); + HKern_CopyPartialNSegment<<>>(minRow, minCol, srcPtr, srcCol, dstPtr, dstCol); +} + +/* --------------------------- HFBLat funcs ------------------------ */ + +/* cz277 - cuda fblat */ +void SetModelBetaPlusCUDA(int T, NMatrix *llhMat, int *qLo, int *qHi, int Q, float probScale, AcousticDev *acList) { + int nBlocks; + + /* t in [1 ... T]; q in [1 ... Q] */ + nBlocks = CEIL(T * Q, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SetModelBetaPlusCUDA: Block number exceeds the maximum"); + /* setotprob */ + HKern_Setotprob4q<<>>(T, llhMat->devElems, llhMat->colNum, qLo, qHi, Q, probScale, acList); + /* set model beta plus */ + nBlocks = CEIL(Q, THREADPERBLOCK); + HKern_SetModelPlus<<>>(Q, acList); + +} + + +/* cz277 - cuda fblat */ +void ZeroAlphasCUDA(int T, int Q, AcousticDev *acList) { + int nBlocks; + + nBlocks = CEIL(T * Q, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ZeroAlphasCUDA: Block number exceeds the maximum"); + HKern_ZeroAlphas<<>>(T, Q, acList); +} + + +/* cz277 - cuda fblat */ +void StepAlphaCUDA(int Q, AcousticDev *acList) { + int nBlocks; + + nBlocks = CEIL(Q, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"StepAlphaCUDA: Block number exceeds the maximum"); + HKern_StepAlpha<<>>(Q, acList); +} + +/* cz277 - gradlim */ +void ClipNSegmentValsCUDA(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"LimitNSegmentValsCUDA: Block number exceeds the maximum"); + HKern_ClipNSegmentVals<<>>(srcSeg, len, upperLim, lowerLim, dstSeg); +} + +/* cz277 - max norm */ +void CalNMatrixL2NormByRowCUDA(NFloat *matPtr, int row, int col, NFloat *normPtr) { + int nBlocks, sBytes; + + nBlocks = row; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"CalExtNMatrixL2NormCUDA: Block number exceeds the maximum"); + HKern_RedCalNMatrixL2NormByRow<<>>(matPtr, row, col, normPtr); +} + +void DivideNMatrixByRowCUDA(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr) { + int nBlocks, size; + + size = row * col; + nBlocks = CEIL(size, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"DivideNMatrixByRowCUDA: Block number exceeds the maximum"); + + HKern_DivideNMatrixByRow<<>>(srcPtr, row, col, normPtr, dstPtr); +} + + +#ifdef __cplusplus +} +#endif + + +/* --------------------------- End of HCUDA.cu ---------------------------- */ + diff --git a/HTKLib/HCUDA.h b/HTKLib/HCUDA.h new file mode 100755 index 0000000..2ffa47a --- /dev/null +++ b/HTKLib/HCUDA.h @@ -0,0 +1,177 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HCUDA.h CUDA utilities */ +/* ----------------------------------------------------------- */ + +/* !HVER!HCUDA: 3.5.0 [CUED 12/10/15] */ + +#ifndef _HCUDA_H_ +#define _HCUDA_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/*#include "HShell.h"*/ +#include "HMem.h" + +#define THREADPERBLOCK 256 /* */ +#define MAXBLOCKNUM 2147483647 /* */ + +#define MINCUDAVER 4000 /* */ +#define MINMAJORSMARCH 2 /* */ +#define MINMINORSMARCH 0 /* */ + +/* +#define MINCUDAVER 6000 +#define MINMAJORSMARCH 3 +#define MINMINORSMARCH 0 +*/ + +/* cz277 - cuda fblat */ +/* a simplified structure to the struct Acoustic in HArc.h */ +#ifdef CUDA +typedef struct _AcousticDev{ + int Nq; + int t_start; + int t_end; + NFloat aclike; + NFloat locc; + Boolean SP; + + int *indexes; /* [1 ... Nq] */ + NFloat *transp; /* [1 ... Nq][1 ... Nq] */ + /*NFloat *alphat;*/ /* [1 ... Nq] */ + /*NFloat *alphat1;*/ /* [1 ... Nq] */ + NFloat *betaPlus; /* [t_start ... t_end][1 ... Nq] */ + NFloat *alphaPlus; /* [t_start ... t_end][1 ... Nq] */ + NFloat *otprob; /* [t_start ... t_end][1 ... Nq] */ +} AcousticDev; +#endif + +void InitCUDA(void); /* use to initialize CUDA */ +void StartCUDA(void); /* */ +void StopCUDA(void); /* use to shutdown CUDA */ + +void SyncDev2Host(void *devPtr, void *hostPtr, size_t size); +void SyncHost2Dev(void *hostPtr, void *devPtr, size_t size); +void DevDispose(void *devPtr, size_t size); +Boolean DevNew(void **devAddr, size_t size); +void ShowGPUMemUsage(void); + +/*void SetNSegment(NFloat val, NFloat *seg, int len);*/ +void CopyNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr); +void AddNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr); +void ScaleNSegmentCUDA(int segLen, NFloat scale, NFloat *valPtr); +void ScaledSelfAddNSegmentCUDA(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr); +void DupNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times); +void SubNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr); +void MulNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr); +/* cz277 - laf */ +void ApplyAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr); +void ApplyDAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr); +void ApplyTrAffineActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr); +void AccMeanNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr); +void AccVarianceNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr); +void ApplyLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr); +void ApplyDLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr); +void ApplyTrLHUCSigmoidActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr); +void ApplyPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr); +void ApplyDPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr); +void ApplyTrPReLUActCUDA(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr); +void ApplyParmReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr); +void ApplyDParmReLUActCUDA(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr); +void ApplyTrParmReLUActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr); +void ApplyPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr); +void ApplyDPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr); +void ApplyTrPSigmoidActCUDA(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr); +void ApplyParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr); +void ApplyDParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr); +void ApplyTrParmSigmoidActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr); + +void ApplyReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr); +void ApplyDReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr); +void ApplyDLinearActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplySigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyDSigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyDTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplySoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); +void ApplyRedSoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); +void ApplySoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyDSoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplySoftSignActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyLogTransCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void SumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); +void RedSumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr); +void SquaredNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr); +void CompAdaGradNSegmentCUDA(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg); +void HNBlasNNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C); +void HNBlasNTgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C); +void HNBlasTNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C); +void FindMaxElementCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); + +void CalXENTCriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr); +void CalMMSECriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr); +void AddNSegmentTargetPenCUDA(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg); +/*void SubNSegmentByConstCUDA(NFloat *srcSeg, int segLen, NFloat constVal, NFloat *dstSeg);*/ +/* cz277 - semi */ +void ShiftNSegmentValsCUDA(NFloat *srcSeg, int segLen, NFloat shiftVal, NFloat *dstSeg); +void SetNSegmentCUDA(NFloat val, NFloat *segPtr, int segLen); +void ClearNSegmentCUDA(NFloat *segPtr, int segLen); +void CopyPartialNSegmentCUDA(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol); +/* cz277 - l2 fix */ +void AddScaledNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr); + +/* cz277 - cuda fblat */ +void SetModelBetaPlusCUDA(int T, NMatrix *llhMat, int *qLo, int *qHi, int Q, float probScale, AcousticDev *acList); + +/* cz277 - cuda fblat */ +void ZeroAlphasCUDA(int T, int Q, AcousticDev *acList); +void StepAlphaCUDA(int Q, AcousticDev *acList); + +/* cz277 - gradlim */ +void ClipNSegmentValsCUDA(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg); + +/* cz277 - max norm */ +void CalNMatrixL2NormByRowCUDA(NFloat *matPtr, int row, int col, NFloat *normPtr); +void DivideNMatrixByRowCUDA(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr); + + +#ifdef __cplusplus +} +#endif + +#endif + +/* ----------------------- End of HCUDA.h --------------------------- */ + diff --git a/HTKLib/HDict.c b/HTKLib/HDict.c old mode 100644 new mode 100755 index 9ea9b44..6843c80 --- a/HTKLib/HDict.c +++ b/HTKLib/HDict.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HDict.c Dictionary Storage */ +/* File: HDict.c Dictionary storage */ /* ----------------------------------------------------------- */ -char *hdict_version = "!HVER!HDict: 3.4.1 [CUED 12/03/09]"; +char *hdict_version = "!HVER!HDict: 3.5.0 [CUED 12/10/15]"; char *hdict_vc_id = "$Id: HDict.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" @@ -58,7 +74,7 @@ void InitDict(void) /* VocabHash: return a hash value for given Word LabId */ static int VocabHash(LabId name) { - return (int) (((unsigned) name)%VHASHSIZE); + return (int) (((unsigned long int) name)%VHASHSIZE); } /* NewWord: Add a new word wordName to voc */ diff --git a/HTKLib/HDict.h b/HTKLib/HDict.h old mode 100644 new mode 100755 index b5c8fa1..b7a748f --- a/HTKLib/HDict.h +++ b/HTKLib/HDict.h @@ -3,23 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HDict.h Dictionary Storage */ +/* File: HDict.h Dictionary Storage */ /* ----------------------------------------------------------- */ -/* !HVER!HDict: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HDict: 3.5.0 [CUED 12/10/15] */ + #ifndef _HDICT_H_ #define _HDICT_H_ diff --git a/HTKLib/HExactMPE.c b/HTKLib/HExactMPE.c old mode 100644 new mode 100755 index 0299045..8364357 --- a/HTKLib/HExactMPE.c +++ b/HTKLib/HExactMPE.c @@ -3,21 +3,22 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ @@ -27,7 +28,7 @@ /* File: HExactMPE.c Discriminative training */ /* ----------------------------------------------------------- */ -char *hexactmpe_version = "!HVER!HExactMPE: 3.4.1 [CUED 12/03/09]"; +char *hexactmpe_version = "!HVER!HExactMPE: 3.5.0 [CUED 12/10/15]"; char *hexactmpe_vc_id = "$Id: HExactMPE.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; /* @@ -46,6 +47,7 @@ char *hexactmpe_vc_id = "$Id: HExactMPE.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Ex #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -268,7 +270,7 @@ float DoCorrectness(FBLatInfo *fbInfo, MemHeap *mem, ArcInfo *ai, float prune, if(locc > prune){ /* ... if above prune threshold then attach the 'cn' structure */ if(!PhoneMEE && StartOfWord(a)/*expands to a->pos==0*/){ /* This is the MWE case. Create a cn structure for the first phone of the word. */ LArc *la = a->parentLarc; - int iword = (int)/*from LabId*/ la->end->word->wordName; + int iword = (int)(unsigned long int)la->end->word->wordName; int id = (a->calcArc ? a->calcArc->id : a->id); HArc *b,*lastArc; int x; @@ -285,7 +287,7 @@ float DoCorrectness(FBLatInfo *fbInfo, MemHeap *mem, ArcInfo *ai, float prune, cn->nArcs = la->nAlign; x=1; /*n arcs in cn.*/ lastArc=a; if(a->follTrans) - for(b=a->follTrans->end;b->parentLarc==la;b->follTrans&&(b=b->follTrans->end)){ + for(b=a->follTrans->end;b->parentLarc==la;b=b->follTrans->end){ HArc *cb = (b->calcArc ? b->calcArc : b); x++; b->mpe->cn = (CorrN*)(void*)-1; @@ -329,10 +331,8 @@ float DoCorrectness(FBLatInfo *fbInfo, MemHeap *mem, ArcInfo *ai, float prune, for(x=cn->nArcs;x>1;x--){ /* loop only happens in Quinphone case (when nArcs>1). */ if(b){ - HArc *cb; b=b->follTrans->end; /*so b is last one ... */ b->mpe->cn = (CorrN*)(void*)-1; /* set to -1 for all others but the first...*/ - cb = (b->calcArc ? b->calcArc : b); cn->scaled_aclike += b->ac->aclike * latProbScale + translm(b->precTrans->lmlike)/*should be zero unless inspen used in a funny way.*/; } /* else will be error . */ } @@ -661,7 +661,7 @@ void DoExactCorrectness(FBLatInfo *fbInfo, Lattice *lat){ w=0; for(node=lat->lnodes+0; node->foll; node=node->foll->end) if(node->foll->nAlign > 1 || (node->foll->nAlign==1 && ! IsSilence(node->foll->lAlign[0].label->name))) /* a word [ not sil. ]...*/ - iwords[w++][0] = (int)node->foll->end->word->wordName; /* word is at the node at the end of the arc. */ + iwords[w++][0] = (int)(unsigned long int)node->foll->end->word->wordName; /* word is at the node at the end of the arc. */ for(larc=lat->larcs,a=0;ana;larc++,a++){ if(IsNonSilArc(larc)){ /* Is a word [not sil]*/ @@ -841,5 +841,5 @@ void InitExactMPE(void) } - +/* ------------------------- End of HExactMPE.c ------------------------- */ diff --git a/HTKLib/HExactMPE.h b/HTKLib/HExactMPE.h old mode 100644 new mode 100755 index a06662d..78ee7fc --- a/HTKLib/HExactMPE.h +++ b/HTKLib/HExactMPE.h @@ -3,32 +3,32 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HExactMPE.h MPE implementation (exact) */ +/* File: HExactMPE.h MPE implementation (exact) */ /* ----------------------------------------------------------- */ -/* !HVER!HExactMPE: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HExactMPE: 3.5.0 [CUED 12/10/15] */ /* A (rather long) routine called from HFBLat.c, relating to the exact implementation of MPE. @@ -45,3 +45,5 @@ void InitExactMPE(void); /* set configs. */ void DoExactCorrectness(FBLatInfo *fbInfo, Lattice *lat); #endif +/* ------------------- End of HExactMPE.h -------------------- */ + diff --git a/HTKLib/HFB.c b/HTKLib/HFB.c old mode 100644 new mode 100755 index 63dc748..1971a77 --- a/HTKLib/HFB.c +++ b/HTKLib/HFB.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFB.c: Forward Backward routines module */ +/* File: HFB.c: Forward backward routines module */ /* ----------------------------------------------------------- */ -char *hfb_version = "!HVER!HFB: 3.4.1 [CUED 12/03/09]"; +char *hfb_version = "!HVER!HFB: 3.5.0 [CUED 12/10/15]"; char *hfb_vc_id = "$Id: HFB.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" /* HMM ToolKit Modules */ @@ -44,6 +47,7 @@ char *hfb_vc_id = "$Id: HFB.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -996,7 +1000,6 @@ static void Setotprob(AlphaBeta *ab, FBInfo *fbInfo, ParmBuf pbuf, StreamElem *ste; HLink hmm; LogFloat sum; - PruneInfo *p; int skipstart, skipend; HMMSet *hset; Boolean seenState=FALSE; @@ -1004,7 +1007,6 @@ static void Setotprob(AlphaBeta *ab, FBInfo *fbInfo, ParmBuf pbuf, hset = fbInfo->al_hset; skipstart = fbInfo->skipstart; skipend = fbInfo->skipend; - p = ab->pInfo; otprob = ab->otprob; ReadAsTable(pbuf,t-1,&ot); if (hset->hsKind == TIEDHS) @@ -1158,9 +1160,7 @@ static LogDouble SetBeta(AlphaBeta *ab, FBInfo *fbInfo, UttInfo *utt) HLink hmm; PruneInfo *p; int skipstart, skipend; - HMMSet *hset; - hset = fbInfo->al_hset; skipstart = fbInfo->skipstart; skipend = fbInfo->skipend; pbuf=utt->pbuf; @@ -1751,33 +1751,33 @@ static void UpMixParms(FBInfo *fbInfo, int q, HLink hmm, HLink al_hmm, static void StepForward(FBInfo *fbInfo, UttInfo *utt) { - int q,t,start,end,negs; - DVector aqt,aqt1,bqt,bqt1,bq1t; - HLink al_hmm, up_hmm; - AlphaBeta *ab; - - /* reset the memory heap for alpha for a new utterance */ - /* ResetHeap(&(fbMemInfo.alphaStack)); */ - - ab = fbInfo->ab; - CreateAlpha(ab,fbInfo->al_hset,utt->Q); /* al_hset may be idential to up_hset */ - InitAlpha(ab,&start,&end,utt->Q,fbInfo->skipstart,fbInfo->skipend); - ab->occa = NULL; - if (trace&T_OCC) - CreateTraceOcc(ab,utt); - for (q=1;q<=utt->Q;q++){ /* inc access counters */ - up_hmm = ab->up_qList[q]; - negs = (int)up_hmm->hook+1; - up_hmm->hook = (void *)negs; - } - - ResetObsCache(); - - for (t=1;t<=utt->T;t++) { - - GetInputObs(utt, t, fbInfo->hsKind); - - if (fbInfo->hsKind == TIEDHS) + int q, t, start, end; + unsigned long int negs; + DVector aqt, aqt1, bqt, bqt1, bq1t; + HLink al_hmm, up_hmm; + AlphaBeta *ab; + + /* reset the memory heap for alpha for a new utterance */ + /* ResetHeap(&(fbMemInfo.alphaStack)); */ + ab = fbInfo->ab; + CreateAlpha(ab, fbInfo->al_hset, utt->Q); /* al_hset may be idential to up_hset */ + InitAlpha(ab, &start, &end, utt->Q, fbInfo->skipstart, fbInfo->skipend); + ab->occa = NULL; + if (trace & T_OCC) { + CreateTraceOcc(ab, utt); + } + for (q = 1; q <= utt->Q; q++) { /* inc access counters */ + up_hmm = ab->up_qList[q]; + negs = (unsigned long int)up_hmm->hook + 1; + up_hmm->hook = (void *)negs; + } + ResetObsCache(); + + for (t = 1; t <= utt->T; t++) { + + GetInputObs(utt, t, fbInfo->hsKind); + + if (fbInfo->hsKind == TIEDHS) PrecomputeTMix(fbInfo->al_hset,&(utt->ot),pruneSetting.minFrwdP,0); if (t>1) diff --git a/HTKLib/HFB.h b/HTKLib/HFB.h old mode 100644 new mode 100755 index 5122a27..ed15792 --- a/HTKLib/HFB.h +++ b/HTKLib/HFB.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFB.h: Forward Backward routines module */ +/* File: HFB.h Forward Backward routines module */ /* ----------------------------------------------------------- */ -/* !HVER!HFB: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HFB: 3.5.0 [CUED 12/10/15] */ #ifndef _HFB_H_ #define _HFB_H_ @@ -150,3 +166,6 @@ void PrLog(LogDouble x); #endif #endif /* _HFB_H_ */ + +/* ------------------------- End of HFB.h ------------------------- */ + diff --git a/HTKLib/HFBLat.c b/HTKLib/HFBLat.c old mode 100644 new mode 100755 index a9227ce..d6e3118 --- a/HTKLib/HFBLat.c +++ b/HTKLib/HFBLat.c @@ -3,32 +3,33 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFBLat.c Lattice Forward Backward routines */ +/* File: HFBLat.c Lattice forward backward routines */ /* ----------------------------------------------------------- */ -char *hfblat_version = "!HVER!HFBLat: 3.4.1 [CUED 12/03/09]"; -char *hfblat_vc_id = "$Id: HFBLat.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; +char *hfblat_version = "!HVER!HFBLat: 3.5.0 [CUED 12/10/15]"; +char *hfblat_vc_id = "$Id: HFBLat.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; /* Performs forward/backward alignment @@ -43,6 +44,7 @@ char *hfblat_vc_id = "$Id: HFBLat.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -57,6 +59,10 @@ char *hfblat_vc_id = "$Id: HFBLat.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include #include +/*#ifdef CUDA +#include "HCUDA.h" +#endif*/ + #if 0 float _exp(float x){ int _errno=errno; @@ -81,6 +87,8 @@ float _exp(float x){ static float minFrwdP = 10.0; /* mix prune threshold */ static int trace = 1; /* Trace level */ +static Boolean matchMPETone = FALSE; /* use variable length informatiln in MPE cost */ +static char *matchMPEMask = NULL; /* mask to use on fixed length information */ static Boolean PhoneMEE = TRUE; /*IMPORTANT*/ /* If true and the MPE routines are called, do MPE, else MWE (word level) */ static Boolean CalcAsError = FALSE; /* if TRUE, new way of calc'ing error... */ static Boolean PhoneMEEUseContext = FALSE; /*Compare phones-in-context. I doubt you would want this true, anyway it makes little difference.*/ @@ -126,6 +134,13 @@ static FBLatInfo *fbInfo; /* current fbInfo, so don't have to pass it around. */ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; +/* Local stack to allow storage of internal structrures */ +static MemHeap infoStack; + +/* cz277 - cuda fblat */ +#ifdef CUDA +static Boolean FBLatCUDA = FALSE; +#endif /* some macros and definitions.. */ @@ -165,13 +180,15 @@ typedef struct _CorrectArcList{ /* returns phone (with no context) as an identifying int. Turns a-b+c --> b and makes it into an integer. */ int GetNoContextPhone(LabId phone, int *nStates_quinphone/*actually,number of HMMs per phone*/, int *state_quinphone, HArc *a, int *frame_end){ - char _buf[MAXSTRLEN], *buf=_buf,*tmp; int i,len; + char _buf[MAXSTRLEN], *buf=_buf,*tmp, *posSt, *tonSt; + int i,len; + char cntxt[MAXSTRLEN], mpeCntxt[MAXSTRLEN]; int ans; char *lab = phone->name; if(PhoneMEEUseContext){ - if(Quinphone) HError(1, "Quinphone not compatible with context phones..."); - return (int) phone; + if(Quinphone) HError(8401, "Quinphone not compatible with context phones..."); + return (int) (unsigned long int)phone; } strcpy(buf,lab); #ifdef SUPPORT_QUINPHONE @@ -185,24 +202,60 @@ int GetNoContextPhone(LabId phone, int *nStates_quinphone/*actually,number of HM } else { /* x_n_nnn */ int i; *tmp='\0'; - if(!(tmp = strchr(buf,'_'))) HError(1, "Unrecognised quinphone %s", phone->name); + if(!(tmp = strchr(buf,'_'))) HError(8420, "Unrecognised quinphone %s", phone->name); *tmp='\0'; *nStates_quinphone = 3; - if ( (*state_quinphone = i = tmp[1]-(int)'0') < 2 || i > 4) /* 2,3,4 */ HError(1, "Unrecognised quinphone %s [maybe more states than expected? Just change this line].", phone->name); + if ( (*state_quinphone = i = tmp[1]-(int)'0') < 2 || i > 4) /* 2,3,4 */ HError(8420, "Unrecognised quinphone %s [maybe more states than expected? Just change this line].", phone->name); if(i==2 && frame_end!=NULL){ - if(!a || !a->follTrans || !a->follTrans->end->follTrans) HError(1, "Problem with arc structure in quinphones..."); + if(!a || !a->follTrans || !a->follTrans->end->follTrans) HError(8420, "Problem with arc structure in quinphones..."); *frame_end=a->follTrans->end->follTrans->end->t_end; /*set frame_end*/ } goto get_id;/*return GetId(buf);*/ } - } else HError(1, "Unrecognised quinphone %s", phone->name); + } else HError(8420, "Unrecognised quinphone %s", phone->name); } #endif if((tmp=strchr(buf,'-'))){ buf=tmp+1; } if((tmp=strchr(buf,'+'))){ *tmp='\0'; } get_id: + /* Need to include options for taking into account additional context information */ + posSt=strchr(buf,'^'); + tonSt=strchr(buf,';'); + if ((posSt != NULL) || (tonSt != NULL)) { + if ((posSt != NULL) && (matchMPEMask != NULL)) { + tmp = posSt+1; i=0; + while ((*tmp != ';') && (*tmp != '\0')) { + cntxt[i] = *tmp; + i++; tmp++; + } + cntxt[i] = '\0'; + if (!(MaskMatch(matchMPEMask,mpeCntxt,cntxt))) { + HError(8490,"Can't match MPE mask with context"); + } + /* copy the context back in */ + tmp = posSt+1; i=0; + while (mpeCntxt[i] != '\0') { + *tmp = mpeCntxt[i]; + tmp++; i++; + } + } else { + if (posSt == NULL) tmp=tonSt; + else tmp=posSt; + } + if ((matchMPETone == FALSE) || (tonSt == NULL)) { + *tmp = '\0'; + } else { + *tmp = ';'; + tmp++; tonSt++; + while (*tonSt != '\0') { + *tmp = *tonSt; + tmp++; tonSt++; + } + *tmp = '\0'; + } + } ans=0; tmp=buf; for(i=1,len=0;*buf;buf++,i<<=8,len++){ ans = ((int)ans + i * *buf); @@ -210,7 +263,7 @@ int GetNoContextPhone(LabId phone, int *nStates_quinphone/*actually,number of HM /* Want to return an integer identifier for the string. Put the string into an integer if it is <4 chars long, otherwise call GetLabId. Calling GetLabId too much can be inefficient so I use this approach instead for short phones. */ - if(len > sizeof(int)) return (int) GetLabId(tmp, TRUE); + if(len > sizeof(int)) return (int) (unsigned long int)GetLabId(tmp, TRUE); else return ans; } @@ -230,9 +283,11 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ int t; int larcid; CorrectArcList **correctArc; + correctArc=New(&fbInfo->tempStack, sizeof(CorrectArcList*)*(fbInfo->T+1)); ResetObsCache(); - if(!numLat) HError(-1, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); + + if(!numLat) HError(-8421, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); for(t=1;t<=fbInfo->T;t++) correctArc[t] = NULL; { @@ -252,7 +307,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ { LabId label = numLat->larcs[larcid].lAlign[seg].label; if(!PhoneMEEUseContext) i_label = GetNoContextPhone(label,&quinphone_nstates,&quinphone_state,NULL,NULL); - else i_label = (int)label; /* Use address of LabId. */ + else i_label = (int)(unsigned long int)label; /* Use address of LabId. */ } end_time = start_time + numLat->larcs[larcid].lAlign[seg].dur; @@ -263,12 +318,12 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ seg++; /* Use one more state.. */ label = numLat->larcs[larcid].lAlign[seg].label; if(seg>=numLat->larcs[larcid].nAlign){ /*outer loop condition not still true..*/ - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); } end_time += numLat->larcs[larcid].lAlign[seg].dur; /* Confirm correct phone + pos: */ if(!(i_label == GetNoContextPhone(label,&dummy,&quinphone_newstate,NULL,NULL) && quinphone_newstate == quinphone_state+1)) - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); quinphone_state = quinphone_newstate; } } @@ -301,7 +356,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ #endif ca = New(&fbInfo->tempStack, sizeof(CorrectArc)); ca->start = i_start; ca->end = i_end; - ca->i_label = (int)numLat->larcs[larcid].end->word->wordName; + ca->i_label = (int)(unsigned long int)numLat->larcs[larcid].end->word->wordName; for(i=i_start;i<=i_end;i++){ CorrectArcList *cal = New(&fbInfo->tempStack, sizeof(CorrectArcList)); @@ -309,8 +364,9 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ } } } + #ifdef SUPPORT_QUINPHONE - if(PhoneMEEUseContext&&Quinphone) HError(1, "Context and quinphone not compatible."); + if(PhoneMEEUseContext&&Quinphone) HError(8420, "Context and quinphone not compatible."); #endif /*now set the correctness field (for MPE). */ if(PhoneMEE){ @@ -331,7 +387,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ /*get phone start&end times.*/ i_start=a->t_start;i_end=a->t_end; if(!PhoneMEEUseContext) iphone = GetNoContextPhone(phone,&quinphone_nstates,&quinphone_state, a, &i_end); - else iphone = (int)phone; + else iphone = (int)(unsigned long int)phone; #ifdef SUPPORT_QUINPHONE if(Quinphone && quinphone_nstates>1 && quinphone_state > 2){ ZeroCorrectness = TRUE; } #endif @@ -386,7 +442,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ LabId word = a->word; int currBegin=-1,currEnd=-1; float currCorrect = -1; /*-1 is the min correctness (for wrong phones).*/ - if(!word) HError(1, "word is zero...coding error."); + if(!word) HError(8491, "word is zero...coding error."); start_time = la->start->time; end_time = la->end->time; i_start = 1 + TimeToNFrames(start_time, fbInfo->aInfo); @@ -400,7 +456,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ otherWord = cal->h->i_label; /*is actually the (int)LabId in this case.*/ proportion = (float)(MIN(i_end,currEnd)-MAX(i_start,currBegin)+1)/ ((float)(currEnd-currBegin+1)); - if(otherWord == (int)word) + if(otherWord == (int)(unsigned long int)word) /*Work out how much overlap we have with the correct phone*/ /* ref length div by overlap length */ currCorrect = MAX(currCorrect, InsCorrectness + proportion*(-InsCorrectness+1)); @@ -423,7 +479,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ if(a->calcArc) a->mpe->correctness = a->calcArc->mpe->correctness; } } - if (fbInfo->T != fbInfo->aInfo->T) HError(1, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); + if (fbInfo->T != fbInfo->aInfo->T) HError(8422, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); Dispose(&fbInfo->tempStack, correctArc); } @@ -482,7 +538,7 @@ float GetLowestNegError(int tStart, int tEnd, int tCurr, float curr_corr, float best = MAX(tmp,best); } } - if(best==-100 && *compute_count > 0) HError(-1, "Error in computing approximate error (no matching phone-start found...)"); + if(best==-100 && *compute_count > 0) HError(-8423, "Error in computing approximate error (no matching phone-start found...)"); return best; } } @@ -523,7 +579,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re CorrectArcList **correctArc; correctArc=New(&fbInfo->tempStack, sizeof(CorrectArcList*)*(fbInfo->T+1)); ResetObsCache(); - if(!numLat) HError(-1, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); + if(!numLat) HError(-8421, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); for(t=1;t<=fbInfo->T;t++) correctArc[t] = NULL; { /* Set up arrays of correct-transcription.. */ @@ -543,7 +599,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re { LabId label = numLat->larcs[larcid].lAlign[seg].label; if(!PhoneMEEUseContext) i_label = GetNoContextPhone(label,&quinphone_nstates,&quinphone_state,NULL,NULL); - else i_label = (int)label; /* Use address of LabId. */ + else i_label = (int)(unsigned long int)label; /* Use address of LabId. */ is_nonsil = (int) ! IsSilence(label->name); } @@ -556,12 +612,12 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re seg++; /* Use one more state.. */ label = numLat->larcs[larcid].lAlign[seg].label; if(seg>=numLat->larcs[larcid].nAlign){ /*outer loop condition not still true..*/ - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); } end_time += numLat->larcs[larcid].lAlign[seg].dur; /* Confirm correct phone + pos: */ if(!(i_label == GetNoContextPhone(label,&dummy,&quinphone_newstate,NULL,NULL) && quinphone_newstate == quinphone_state+1)) - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); quinphone_state = quinphone_newstate; } } @@ -594,7 +650,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re #endif ca = New(&fbInfo->tempStack, sizeof(CorrectArc)); ca->start = i_start; ca->end = i_end; - ca->i_label = (int)numLat->larcs[larcid].end->word->wordName; + ca->i_label = (int)(unsigned long int)numLat->larcs[larcid].end->word->wordName; for(i=i_start;i<=i_end;i++){ CorrectArcList *cal = New(&fbInfo->tempStack, sizeof(CorrectArcList)); @@ -603,7 +659,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re } } #ifdef SUPPORT_QUINPHONE - if(PhoneMEEUseContext&&Quinphone) HError(1, "Context and quinphone not compatible."); + if(PhoneMEEUseContext&&Quinphone) HError(8420, "Context and quinphone not compatible."); #endif /*now set the correctness field (for MPE). */ if(PhoneMEE){ @@ -623,7 +679,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re /*get phone start&end times.*/ i_start=a->t_start;i_end=a->t_end; if(!PhoneMEEUseContext) iphone = GetNoContextPhone(phone,&quinphone_nstates,&quinphone_state, a, &i_end); - else iphone = (int)phone; + else iphone = (int)(unsigned long int)phone; #ifdef SUPPORT_QUINPHONE if(Quinphone && quinphone_nstates>1 && quinphone_state > 2){ ZeroCorrectness = TRUE; } #endif @@ -648,10 +704,10 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re a->mpe->correctness = a->calcArc->mpe->correctness; } } - } else HError(1, "MWE not supported for approximate error..."); + } else HError(8423, "MWE not supported for approximate error..."); } - if (fbInfo->T != fbInfo->aInfo->T) HError(1, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); + if (fbInfo->T != fbInfo->aInfo->T) HError(8422, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); Dispose(&fbInfo->tempStack, correctArc); } @@ -675,76 +731,105 @@ static void ZeroAlpha(int sq, int eq) } } +#ifdef CUDA +/* cz277 - cuda fblat */ +static void StepAlphaSwapOnly(int t) { + DVector tmp; + int q; + Acoustic *ac; + + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; ++q) { /*swap alphat, alphat1*/ + ac = fbInfo->aInfo->ac + q; + if (!ac->SP) { + tmp = ac->alphat1; + ac->alphat1 = ac->alphat; + ac->alphat = tmp; + } + } +} +#endif + /* StepAlpha: calculate alphat column for time t */ /* Calculates the forward (alpha) likelihoods given the previous alpha likelihoods, i.e. for t-1 */ static void StepAlpha(int t) { - DVector aq,laq,tmp; - float ***outprob; - int i,j,q,Nq; - LogDouble x=0.0,y,a; - HLink hmm; + DVector aq, laq, tmp; + float ***outprob; + int i, j, q, Nq; + LogDouble x = 0.0, y, a; + HLink hmm; + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*swap alphat, alphat1*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + if (!ac->SP) { + tmp = ac->alphat1; + ac->alphat1 = ac->alphat; + ac->alphat = tmp; + } + } - for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*swap alphat, alphat1*/ - Acoustic *ac = fbInfo->aInfo->ac+q; - if(!ac->SP){ tmp = ac->alphat1; ac->alphat1=ac->alphat; ac->alphat=tmp; } - } - - /* Zero any alphas that may be nonzero.*/ - /* not needed. */ - /* if(t>2) + /* Zero any alphas that may be nonzero.*/ + /* not needed. */ + /* if(t>2) ZeroAlpha(fbInfo->aInfo->qLo[t-2],fbInfo->aInfo->qHi[t-2]); / * Because the alphat vectors are swapped over each time, we need to zero the one from t-2. */ - for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*This is just to avoid iterating over all q's.*/ - Acoustic *ac = fbInfo->aInfo->ac+q; + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*This is just to avoid iterating over all q's.*/ + Acoustic *ac = fbInfo->aInfo->ac+q; - if(t >= ac->t_start && t<=ac->t_end){ /*If it's in the beam...*/ - hmm = ac->hmm; Nq = hmm->numStates; - aq = ac->alphat; laq = (t-1>=ac->t_start&&t-1<=ac->t_end)?ac->alphat1:NULL; - if((outprob = ac->otprob[t]) == NULL) - HError(2322,"StepAlpha: Outprob NULL at time %d model %d in StepAlpha",t,q); - - - - if(t==ac->t_start) aq[1] = ac->locc - ac->aclike; - /* This is the forward log likelihood at the start of the phone model. It is a "cheating" log likelihood + if (t >= ac->t_start && t <= ac->t_end) { /*If it's in the beam...*/ + hmm = ac->hmm; + Nq = hmm->numStates; + aq = ac->alphat; + laq = (t - 1 >= ac->t_start && t - 1 <= ac->t_end) ? ac->alphat1 : NULL; + if ((outprob = ac->otprob[t]) == NULL) { + HError(8491,"StepAlpha: Outprob NULL at time %d model %d in StepAlpha", t, q); + } + if (t == ac->t_start) { + aq[1] = ac->locc - ac->aclike; + } + /* This is the forward log likelihood at the start of the phone model. It is a "cheating" log likelihood in the sense that it is calculated to give the model the log occupancy "locc". */ - else aq[1] = LZERO; /* no entry to the model unless at its start time. */ - - x=LZERO; - for (j=2;jtransP[1][j]; - x = (a>LSMALL)?a+aq[1]:LZERO; - for (i=2;i<=Nq;i++){ - a = hmm->transP[i][j]; y = (laq?laq[i]:LZERO); - if (a>LSMALL && y>LSMALL) - x = LAdd(x,y+a); + else { + aq[1] = LZERO; /* no entry to the model unless at its start time. */ + } + + x = LZERO; + for (j = 2; j < Nq; j++) { /*Calculate the alpha probs for the emitting states.*/ + a = hmm->transP[1][j]; + x = (a > LSMALL) ? a + aq[1] : LZERO; + for (i = 2; i <= Nq; i++) { + a = hmm->transP[i][j]; + y = (laq ? laq[i] : LZERO); + if (a > LSMALL && y > LSMALL) { + x = LAdd(x, y + a); + } + } + aq[j] = x + outprob[j][0][0]; } - aq[j] = x + outprob[j][0][0]; - } - x = LZERO; - for (i=2;itransP[i][Nq]; y = aq[i]; - if (a>LSMALL && y>LSMALL) - x = LAdd(x,y+a); - } - aq[Nq] = x; + x = LZERO; + for (i = 2; i < Nq; i++) { + a = hmm->transP[i][Nq]; + y = aq[i]; + if (a > LSMALL && y > LSMALL) { + x = LAdd(x, y + a); + } + } + aq[Nq] = x; - if(t==ac->t_end){ /*Work out the exit prob, just for checking purposes...... */ - double transP; - hmm = ac->hmm; Nq = hmm->numStates; - transP = hmm->transP[1][Nq]; - aq = ac->alphat; + if (t == ac->t_end) { /*Work out the exit prob, just for checking purposes...... */ + hmm = ac->hmm; + Nq = hmm->numStates; + aq = ac->alphat; - x = aq[Nq]; - if ( fabs(x - ac->locc) > 0.001 ) - HError(1, "StepAlpha: problem with occs.. (fabs(x-locc)=%d (>0.001))",x-ac->locc); /*x is like an occupancy for that segment.*/ - } - } - } + x = aq[Nq]; + if (fabs(x - ac->locc) > 0.001) { + HError(8424, "StepAlpha: problem with occs.. (fabs(x-locc)=%d (>0.001))", x - ac->locc); /*x is like an occupancy for that segment.*/ + } + } + } + } } /* NewOtprobVec: create prob vector size [0..M] */ @@ -802,7 +887,7 @@ static float * ShStrP(Vector v, int t, StreamElem *ste, AdaptXForm *xform, MemHe else { mixp = MOutP(ApplyCompFXForm(mp,v,xform,&det,t),mp); mixp += det; - if(isnan(mixp)) HError(1, "mixp zero..."); + if(isnan(mixp)) HError(8491, "mixp zero..."); pMix->prob = mixp; pMix->time = t; pMix->indx=-1; } x = LAdd(x,MixLogWeight(fbInfo->hset,me->weight)+mixp); @@ -821,128 +906,167 @@ static float * ShStrP(Vector v, int t, StreamElem *ste, AdaptXForm *xform, MemHe /* Setotprob: allocate and calculate otprob matrix at time t */ static void Setotprob(int t) { - int q,j,Nq,s; - float ***outprob; - StreamElem *ste; - HLink hmm; - LogFloat sum; - float local_probscale; + int q,j,Nq,s; + float ***outprob; + StreamElem *ste; + HLink hmm; + LogFloat sum; + float local_probscale; - ReadAsTable(fbInfo->al_pbuf,t-1,&fbInfo->al_ot); - - local_probscale = probScale; /* direct scale on acoustics on state level, usu. 1 */ + /* cz277 - ANN */ + if (fbInfo->hset->annSet != NULL && fbInfo->hsKind != HYBRIDHS) { /* TANDEM */ + /* TODO: Tandem */ + } + else if (fbInfo->al_pbuf != NULL) { + ReadAsTable(fbInfo->al_pbuf,t-1,&fbInfo->al_ot); + } - if (fbInfo->hsKind == TIEDHS) - PrecomputeTMix(fbInfo->hset,&(fbInfo->al_ot),minFrwdP,0); - + local_probscale = probScale; /* direct scale on acoustics on state level, usu. 1 */ + + if (fbInfo->hsKind == TIEDHS) { + PrecomputeTMix(fbInfo->hset,&(fbInfo->al_ot),minFrwdP,0); + } - for (q=fbInfo->aInfo->qHi[t];q>=fbInfo->aInfo->qLo[t];q--) { - if(t>=fbInfo->aInfo->ac[q].t_start && t<=fbInfo->aInfo->ac[q].t_end) { /* HMM is active at this time... */ - Acoustic *ac = fbInfo->aInfo->ac+q; - hmm = ac->hmm; Nq = hmm->numStates; - outprob = ac->otprob[t]; + for (q = fbInfo->aInfo->qHi[t]; q >= fbInfo->aInfo->qLo[t]; q--) { + if(t >= fbInfo->aInfo->ac[q].t_start && t <= fbInfo->aInfo->ac[q].t_end) { /* HMM is active at this time... */ + Acoustic *ac = fbInfo->aInfo->ac + q; + hmm = ac->hmm; + Nq = hmm->numStates; + outprob = ac->otprob[t]; - for (j=2;jsvec[j].info->pdf+1; sum = 0.0; - - - for (s=1;s<=fbInfo->S;s++,ste++){ - switch (fbInfo->hsKind){ - case TIEDHS: /* SOutP deals with tied mix calculation */ - case DISCRETEHS: - if (fbInfo->S==1) { - outprob[j][0] = NewOtprobVec(fbInfo->aInfo->mem,1); - outprob[j][0][0] = SOutP(fbInfo->hset,s,&fbInfo->al_ot, ste); - } else { - outprob[j][s] = NewOtprobVec(fbInfo->aInfo->mem,1); - outprob[j][s][0] = SOutP(fbInfo->hset,s,&fbInfo->al_ot, ste); - } - break; - case PLAINHS: /* x = SOutP(fbInfo->hset,s,&ot,ste); break; commented out by dp10006 since + for (j = 2; j < Nq; j++) { + ste = hmm->svec[j].info->pdf + 1; + sum = 0.0; + + for (s = 1; s <= fbInfo->S; s++, ste++) { + switch (fbInfo->hsKind) { + case TIEDHS: /* SOutP deals with tied mix calculation */ + case DISCRETEHS: + if (fbInfo->S == 1) { + outprob[j][0] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][0][0] = SOutP(fbInfo->hset, s, &fbInfo->al_ot, ste); + } else { + outprob[j][s] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][s][0] = SOutP(fbInfo->hset, s, &fbInfo->al_ot, ste); + } + break; + case PLAINHS: /* x = SOutP(fbInfo->hset,s,&ot,ste); break; commented out by dp10006 since sharing is needed in any case for lattices. */ - case SHAREDHS: - if (fbInfo->S==1) - outprob[j][0] = ShStrP(fbInfo->al_ot.fv[s],t+StartTime,ste,fbInfo->inXForm,fbInfo->aInfo->mem); - else - outprob[j][s] = ShStrP(fbInfo->al_ot.fv[s],t+StartTime,ste,fbInfo->inXForm,fbInfo->aInfo->mem); - break; - default: HError(1, "Unknown hset kind."); - } - if (fbInfo->S==1) - outprob[j][0][0] *= local_probscale; - else{ - outprob[j][s][0] *= local_probscale; - sum += outprob[j][s][0]; - } - } - if (fbInfo->S>1){ - outprob[j][0][0] = sum; - for (s=1;s<=fbInfo->S;s++) - outprob[j][s][0] = sum - outprob[j][s][0]; + case SHAREDHS: + if (fbInfo->S == 1) { + outprob[j][0] = ShStrP(fbInfo->al_ot.fv[s], t + StartTime, ste, fbInfo->inXForm, fbInfo->aInfo->mem); + } + else { + outprob[j][s] = ShStrP(fbInfo->al_ot.fv[s], t + StartTime, ste, fbInfo->inXForm, fbInfo->aInfo->mem); + } + break; + case HYBRIDHS: /* cz277 - ANN */ + if (fbInfo->S == 1) { + outprob[j][0] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][0][0] = fbInfo->hset->annSet->llhMat[1]->matElems[(t - 1) * fbInfo->hset->annSet->outLayers[1]->nodeNum + (ste->targetIdx - 1)]; + } + else { + outprob[j][s] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][s][0] = fbInfo->hset->annSet->llhMat[s]->matElems[(t - 1) * fbInfo->hset->annSet->outLayers[s]->nodeNum + (ste->targetIdx - 1)]; + } + break; + default: + HError(8492, "Unknown hset kind."); + } + if (fbInfo->S == 1) { + outprob[j][0][0] *= local_probscale; + } + else { + outprob[j][s][0] *= local_probscale; + sum += outprob[j][s][0]; + } + } + if (fbInfo->S > 1) { + outprob[j][0][0] = sum; + for (s = 1; s <= fbInfo->S; s++) { + outprob[j][s][0] = sum - outprob[j][s][0]; + } + } } - } - } - } + } + } } -void SetModelBetaPlus(int t, int q){ - double x=LZERO; - Acoustic *ac = fbInfo->aInfo->ac+q; - HLink hmm = ac->hmm; - int Nq = hmm->numStates,i,j; - DVector bqt = ac->betaPlus[t],bqt1; - float ***outprob = ac->otprob[t]; - - if(t==ac->t_end) bqt[Nq] = 0; /* We are calculating the acoustic likelihood for each model separately. */ - else bqt[Nq] = LZERO; +void SetModelBetaPlus(int t, int q) { + double x = LZERO; + Acoustic *ac = fbInfo->aInfo->ac + q; + HLink hmm = ac->hmm; + int Nq = hmm->numStates, i, j; + DVector bqt = ac->betaPlus[t], bqt1; + float ***outprob = ac->otprob[t]; + + if(t == ac->t_end) + bqt[Nq] = 0; /* We are calculating the acoustic likelihood for each model separately. */ + else + bqt[Nq] = LZERO; - for(i=2;itransP[i][Nq]; - if(t+1<=ac->t_end){ /*in beam next time frame*/ - bqt1=ac->betaPlus[t+1]; - for(j=2;jtransP[i][j]); - } - x += outprob[i][0][0]; - bqt[i] = x; - } - x=LZERO; - for(i=2;itransP[1][i]); - bqt[1] = x; + for (i = 2; i < Nq; i++) { + x = bqt[Nq] + hmm->transP[i][Nq]; + if (t + 1 <= ac->t_end) { /*in beam next time frame*/ + bqt1 = ac->betaPlus[t + 1]; + for(j = 2; j < Nq; j++) { + x = LAdd(x, bqt1[j] + hmm->transP[i][j]); + } + } + x += outprob[i][0][0]; + bqt[i] = x; + } + x = LZERO; + for (i = 2; i < Nq; i++) + x = LAdd(x, bqt[i] + hmm->transP[1][i]); + bqt[1] = x; } /* SetBetaPlus: calculate gamma and otprob matrices */ static void SetBetaPlus() { - int t,q; /*,lNq=0,q_at_gMax;*/ - LogDouble x; - + int t,q; /*,lNq=0,q_at_gMax;*/ + LogDouble x; - /* - Columns T-1 -> 1. - */ - ResetObsCache(); - for (t=fbInfo->T;t>=1;t--) { - Setotprob(t); - for (q=fbInfo->aInfo->qHi[t];q>=fbInfo->aInfo->qLo[t];q--) { /*MAX(qHi[t],qLo[t]) because of the case for tee models where qHi[t]=qLo[t]-1 .*/ - Acoustic *ac = fbInfo->aInfo->ac + q; - if(t>=ac->t_start && t<=ac->t_end){ /*in beam.*/ - SetModelBetaPlus(t,q); - } - if(t==ac->t_start){ /* We need to set "aclike", the total accumulated acoustic - probability for this frame. */ - if(ac->SP) /* Is a tee model, i.e. zero time, t_end=t_start-1. */ - x = ac->hmm->transP[1][ac->hmm->numStates]; /* beta will not have been set for tee models. */ - else - x = ac->betaPlus[t][1]; /* state 1 of HMM. */ - ac->aclike = x; - } - } - } + /* + Columns T-1 -> 1. + */ + ResetObsCache(); + for (t = fbInfo->T; t >= 1; t--) { + Setotprob(t); + for (q = fbInfo->aInfo->qHi[t]; q >= fbInfo->aInfo->qLo[t]; q--) { /*MAX(qHi[t],qLo[t]) because of the case for tee models where qHi[t]=qLo[t]-1 .*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + if (t >= ac->t_start && t <= ac->t_end) { /*in beam.*/ + SetModelBetaPlus(t,q); + } + if (t == ac->t_start) { /* We need to set "aclike", the total accumulated acoustic probability for this frame. */ + if(ac->SP) /* Is a tee model, i.e. zero time, t_end=t_start-1. */ + x = ac->hmm->transP[1][ac->hmm->numStates]; /* beta will not have been set for tee models. */ + else + x = ac->betaPlus[t][1]; /* state 1 of HMM. */ + ac->aclike = x; + } + } + } + } +/* cz277 - cuda fblat */ +#ifdef CUDA +static void SetBetaPlusCUDA() { + int q; + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + HError(8492, "SetBetaPlusCUDA: The case is not valid for CUDA based FBLat rescore"); + } + SetModelBetaPlusCUDA(fbInfo->aInfo->T, fbInfo->llhMat[1], fbInfo->aInfo->qLoDev, fbInfo->aInfo->qHiDev, fbInfo->aInfo->Q, probScale, fbInfo->aInfo->acDev); + for (q = 1; q <= fbInfo->aInfo->Q; ++q) { + SyncAcousticDev2HostBeta(&fbInfo->aInfo->acDev[q], &fbInfo->aInfo->ac[q], fbInfo->aInfo->mem); + } + +} +#endif void UpSkipTranParms(int q, int t){ @@ -981,7 +1105,6 @@ static void UpTranParms(int t, int q){ N = hmm->numStates; ta = ((TrAcc*)GetHook(hmm->transP)) + local_accindx; if(DoingFourthAcc) tammi = ((TrAcc*)GetHook(hmm->transP)) + add_index; - for(i=1;itran[i], *ai = hmm->transP[i]; for(j=2;j<=N;j++){ @@ -994,8 +1117,7 @@ static void UpTranParms(int t, int q){ x = aqt[i]+ai[N]+bqtPlus[N]; /* bqtPlus[N] lacks likelihood from this time. */ } /* dont do tee transition in this part of the code. */ - - if(x > 0.001) HError(1, "too large transition occ! (%d>0)",x); + if(x > 0.001) HError(8424, "too large transition occ! (%d>0)",x); if (x>MINEARG){ float occmmi,occ; occmmi = exp(x); @@ -1067,18 +1189,17 @@ void DoAllMixUpdates(int t){ int s,m,k,vSize; MixPDF *mp; float Lr, unscaledLr, LrWithSign; - Vector mean,variance,up_otvs,al_otvs,mu_jm; + Vector mean,variance,up_otvs,mu_jm; LogFloat det; float zmean,zmeanlr; - MuAcc *ma,*mammi; + MuAcc *ma,*mammi=NULL; VaAcc *va,*vammi; int local_accindx; for(s=1;s<=fbInfo->S;s++){ float steSumLr = 0.0; vSize = fbInfo->hset->swidth[s]; - al_otvs = fbInfo->al_ot.fv[s]; for(m=0;mcov.var; if(mp->ckind != INVDIAGC && mp->ckind != DIAGC){ - HError(-1, "HFwdBkwdLat.c: expecting INVDIAGC or DIAGC"); + HError(-8493, "HFBLat.c: expecting INVDIAGC or DIAGC"); } /* -------------------- (a) MLLR updates --------------------*/ @@ -1163,7 +1284,7 @@ void DoAllMixUpdates(int t){ } } break; - default: HError(1, "Unknown CKIND."); + default: HError(8492, "Unknown CKIND."); } } else { ma->occ += Lr; @@ -1181,7 +1302,7 @@ void DoAllMixUpdates(int t){ } } } - if(steSumLr > 1.01 || steSumLr < 0.99) HError(-1, "Wrong steSumLr: %f, t=%d, s=%d",steSumLr, t, s); + if(steSumLr > 1.01 || steSumLr < 0.99) HError(-8425, "Wrong steSumLr: %f, t=%d, s=%d",steSumLr, t, s); } for(s=1;s<=fbInfo->S;s++) /*Reset.*/ nPDFs[s] = 0; @@ -1189,178 +1310,179 @@ void DoAllMixUpdates(int t){ /* UpMixParms: update mu/va accs of given hmm */ -static double UpMixParms(int q, HLink hmm, int t, DVector aqt, - DVector aqt1, DVector gqt) +static double UpMixParms(int q, HLink hmm, int t, DVector aqt, DVector aqt1, DVector gqt) { - Acoustic *ac = fbInfo->aInfo->ac+q; - double ans=LZERO; - double ans2=LZERO; - int mx,s,j,m=0,M=0,N,vSize; - TMixRec *tmRec = NULL; - float ***outprob; - LogFloat c_jm,prob=0; - LogDouble x,initx = LZERO; - double Lr,steSumLr; - float tmp; - StreamElem *ste; - MixtureElem *me; - MixPDF *mp=NULL; - WtAcc *wa, *wammi=NULL; - PreComp *pMix; - Boolean mmix=FALSE; /* TRUE if multiple mixture */ - float wght=0; - float mee_acc_scale = fbInfo->AccScale * (fbInfo->MPE? fbInfo->aInfo->ac[q].mpe_occscale: 1 ), - abs_mee_acc_scale = fabs(mee_acc_scale); int local_accindx = (mee_acc_scale > 0 ? fbInfo->num_index : fbInfo->den_index); - - float local_probscale; - - local_probscale = probScale; - N = hmm->numStates; - for (j=2;jotprob[t]; - if(aqt[j]+gqt[j]-outprob[j][0][0]/*-pr*/ > MINEARG){ - ans = LAdd(ans, aqt[j]+gqt[j]-outprob[j][0][0]); /*the total occ.*/ - } - - if(aqt[j]+gqt[j]-outprob[j][0][0] < -minFrwdP) continue; /*go to the next state. This added for the tiedhs case, - to speed things up.*/ - - initx = aqt[j]+gqt[j]-(outprob[j][0][0] * (1 + 1 / local_probscale)); - /*the outprob[j][0][0]*1 is to - get the correct occupancy (since both alpha and gamma contain this states outprob); - and the outprob[j][0][0]*1/probScale is to subtract the (unscaled) prob - so we get the 'initx', which is the x without this timeframe's prob.*/ - - /*Initx is the occupancy for this mixture, divided by the (unscaled) output prob for this state's PDF.*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + double ans = LZERO; + double ans2 = LZERO; + int mx, s, j, m = 0, M = 0, N; + TMixRec *tmRec = NULL; + float ***outprob; + LogFloat c_jm, prob = 0; + LogDouble x, initx = LZERO; + double Lr, steSumLr; + float tmp; + StreamElem *ste; + MixtureElem *me; + MixPDF *mp = NULL; + WtAcc *wa, *wammi = NULL; + PreComp *pMix; + Boolean mmix = FALSE; /* TRUE if multiple mixture */ + float wght = 0; + float mee_acc_scale = fbInfo->AccScale * (fbInfo->MPE ? fbInfo->aInfo->ac[q].mpe_occscale : 1); + float abs_mee_acc_scale = fabs(mee_acc_scale); + int local_accindx = (mee_acc_scale > 0 ? fbInfo->num_index : fbInfo->den_index); + float local_probscale; + + local_probscale = probScale; + N = hmm->numStates; + for (j = 2; j < N; j++) { + outprob = ac->otprob[t]; + if (aqt[j] + gqt[j] - outprob[j][0][0]/*-pr*/ > MINEARG) { + ans = LAdd(ans, aqt[j] + gqt[j] - outprob[j][0][0]); /*the total occ.*/ + } + if (aqt[j] + gqt[j] - outprob[j][0][0] < -minFrwdP) { + continue; /*go to the next state. This added for the tiedhs case, to speed things up.*/ + } + initx = aqt[j] + gqt[j] - (outprob[j][0][0] * (1 + 1 / local_probscale)); + /*the outprob[j][0][0]*1 is to + get the correct occupancy (since both alpha and gamma contain this states outprob); + and the outprob[j][0][0]*1/probScale is to subtract the (unscaled) prob + so we get the 'initx', which is the x without this timeframe's prob.*/ - ste = hmm->svec[j].info->pdf+1; - - for (s=1;s<=fbInfo->S;s++,ste++){ - /* Get observation vector for this state/stream */ - vSize = fbInfo->hset->swidth[s]; - - switch (fbInfo->hsKind){ - case TIEDHS: /* if tied mixtures then we only */ - tmRec = &(fbInfo->hset->tmRecs[s]); /* want to process the non-pruned */ - M = tmRec->topM; /* components */ - mmix = TRUE; - break; - case DISCRETEHS: - M = 1; - mmix = FALSE; - break; - case PLAINHS: - case SHAREDHS: - M = ste->nMix; - mmix = (M>1); - break; - } - - wa = ((WtAcc*)ste->hook) + local_accindx; - if(DoingFourthAcc) wammi = ((WtAcc*)ste->hook) + add_index; - steSumLr = 0.0; /* zero stream occupation count */ - + /*Initx is the occupancy for this mixture, divided by the (unscaled) output prob for this state's PDF.*/ + ste = hmm->svec[j].info->pdf + 1; + + for (s = 1; s <= fbInfo->S; s++, ste++) { + /* Get observation vector for this state/stream */ + switch (fbInfo->hsKind) { + case TIEDHS: /* if tied mixtures then we only */ + tmRec = &(fbInfo->hset->tmRecs[s]); /* want to process the non-pruned */ + M = tmRec->topM; /* components */ + mmix = TRUE; + break; + case DISCRETEHS: + M = 1; + mmix = FALSE; + break; + case PLAINHS: + case SHAREDHS: + M = ste->nMix; + mmix = (M > 1); + break; + } - /* process mixtures */ - for (mx=1;mx<=M;mx++) { - switch (fbInfo->hsKind){ /* Get wght and mpdf */ - case TIEDHS: - m=tmRec->probs[mx].index; - wght=MixWeight(fbInfo->hset,ste->spdf.tpdf[m]); - mp=tmRec->mixes[m]; - break; - case DISCRETEHS: - m=fbInfo->twoDataFiles ? fbInfo->up_ot.vq[s] : fbInfo->al_ot.vq[s]; - wght = 1.0; - mp=NULL; - break; - case PLAINHS: - case SHAREDHS: - m = mx; - me = ste->spdf.cpdf+m; - wght = MixWeight(fbInfo->hset,me->weight); - mp=me->mpdf; - break; + wa = ((WtAcc*) ste->hook) + local_accindx; + if (DoingFourthAcc) { + wammi = ((WtAcc*) ste->hook) + add_index; } - if (wght>MINMIX){ /* For this mixture m, if the weight is nonzero... */ - /* compute mixture likelihood */ - if (!mmix || (fbInfo->hsKind==DISCRETEHS)){ /* Don't need the MOutP for 1-mix systems. */ - x = aqt[j]+gqt[j]-outprob[j][0][0]/*-pr*/; - pMix = (PreComp *)mp->hook; - if(pMix->time != t+StartTime){ /* set the indx to -1, this relates to caching of the mixture occupation - probability on each time frame. */ - pMix->time = t+StartTime; + steSumLr = 0.0; /* zero stream occupation count */ + + /* process mixtures */ + for (mx = 1; mx <= M; mx++) { + switch (fbInfo->hsKind) { /* Get wght and mpdf */ + case TIEDHS: + m = tmRec->probs[mx].index; + wght = MixWeight(fbInfo->hset, ste->spdf.tpdf[m]); + mp = tmRec->mixes[m]; + break; + case DISCRETEHS: + m = fbInfo->twoDataFiles ? fbInfo->up_ot.vq[s] : fbInfo->al_ot.vq[s]; + wght = 1.0; + mp = NULL; + break; + case PLAINHS: + case SHAREDHS: + m = mx; + me = ste->spdf.cpdf + m; + wght = MixWeight(fbInfo->hset, me->weight); + mp=me->mpdf; + break; + } + if (wght > MINMIX) { /* For this mixture m, if the weight is nonzero... */ + /* compute mixture likelihood */ + if (!mmix || (fbInfo->hsKind == DISCRETEHS)) { /* Don't need the MOutP for 1-mix systems. */ + x = aqt[j] + gqt[j] - outprob[j][0][0]/*-pr*/; + pMix = (PreComp *) mp->hook; + if (pMix->time != t + StartTime) { /* set the indx to -1, this relates to caching of the mixture occupation probability on each time frame. */ + pMix->time = t + StartTime; #ifdef MIX_UPDATE_SHARING - pMix->indx = -1; + pMix->indx = -1; #endif - } - } else { /* Multiple-mixture --> need to work out the occupation probabilty of the individual mixture. */ - c_jm=log(wght); - x = initx+c_jm; - switch(fbInfo->hsKind){ - case TIEDHS : - tmp = tmRec->probs[m].prob; - prob = (tmp>=MINLARG)?(log(tmp)+tmRec->maxP):LZERO; /*maxP is a normalising factor subtracted from all the TMProbs.*/ - break; /*"prob" now contains the TM prob [not the mixture weight as well.]*/ - case SHAREDHS : case PLAINHS: - if (fbInfo->S==1) - prob = outprob[j][0][mx]; - else - prob = outprob[j][s][mx]; - pMix = (PreComp *)mp->hook; - if(pMix->time != t+StartTime){ /* set the indx to -1, this relates to caching of the mixture occupation + } + } + else { /* Multiple-mixture --> need to work out the occupation probabilty of the individual mixture. */ + c_jm = log(wght); + x = initx + c_jm; + switch (fbInfo->hsKind) { + case TIEDHS: + tmp = tmRec->probs[m].prob; + prob = (tmp >= MINLARG) ? (log(tmp) + tmRec->maxP) : LZERO; /*maxP is a normalising factor subtracted from all the TMProbs.*/ + break; /*"prob" now contains the TM prob [not the mixture weight as well.]*/ + case SHAREDHS: + case PLAINHS: + if (fbInfo->S == 1) { + prob = outprob[j][0][mx]; + } + else { + prob = outprob[j][s][mx]; + } + pMix = (PreComp *) mp->hook; + if (pMix->time != t + StartTime) { /* set the indx to -1, this relates to caching of the mixture occupation probability on each time frame. */ - pMix->time = t+StartTime; + pMix->time = t + StartTime; #ifdef MIX_UPDATE_SHARING - pMix->indx = -1; + pMix->indx = -1; #endif - } - break; - default: - HError(1, "Unknown hsKind."); - break; - } - x += prob; - if (fbInfo->S>1) /* adjust for parallel streams */ - x += outprob[j][s][0]/probScale; /* all the other streams... */ - } - - /* If transforms are used, x is the prob from the *alignment* transform, not the update transform. */ + } + break; + default: + HError(8492, "Unknown hsKind."); + break; + } + x += prob; + if (fbInfo->S > 1) { /* adjust for parallel streams */ + x += outprob[j][s][0] / probScale; /* all the other streams... */ + } + } - if (-x 1.001) - HError(1, "FwdBkwdLat: UpMixParms: invalid Lr."); - if (Lr>1.001) - HError(-999,"UpMix: Lr too big %f ", Lr); + /* More diagnostics */ + if (isnan(Lr)) + HError(8425, "HFBLat: UpMixParms: invalid Lr."); + if (Lr > 1.001) + HError(-8425, "UpMix: Lr too big %f ", Lr); - steSumLr += Lr; + steSumLr += Lr; - DoMixUpdate(mp, s, Lr, mee_acc_scale, t); /* This now does not actually update the mixture, but just notes down - the probability for later updating with "DoAllMixUpdates", which is called - once every time frame. */ - /* ------------------ update mixture weight counts ----------------- */ - if (fbInfo->uFlags&UPMIXES) { - wa->c[m] += Lr * abs_mee_acc_scale; - if(DoingFourthAcc) wammi->c[m] += Lr; - } - } - /* printf("q=%d, N=%d,j=%d, M=%d, m=%d, x=%f, prob=%f,stocc=%f\n", q,N,j,M,m,x,prob,aqt[j]+gqt[j]-outprob[j][0][0]); */ - } - } + DoMixUpdate(mp, s, Lr, mee_acc_scale, t); /* This now does not actually update the mixture, but just notes down + the probability for later updating with "DoAllMixUpdates", which is called + once every time frame. */ + /* ------------------ update mixture weight counts ----------------- */ + if (fbInfo->uFlags & UPMIXES) { + wa->c[m] += Lr * abs_mee_acc_scale; + if (DoingFourthAcc) + wammi->c[m] += Lr; + } + } + /* printf("q=%d, N=%d,j=%d, M=%d, m=%d, x=%f, prob=%f,stocc=%f\n", q,N,j,M,m,x,prob,aqt[j]+gqt[j]-outprob[j][0][0]); */ + } + } /* for (mx = 1; mx <= M; mx++) */ - wa = ((WtAcc*)ste->hook) + local_accindx; - wa->occ += steSumLr * abs_mee_acc_scale; - if(DoingFourthAcc){ /* do 4th acc if MPE with MMI prior */ - wammi = ((WtAcc*)ste->hook) + add_index; - wammi->occ += steSumLr; - } - } - } - return ans; + wa = ((WtAcc*) ste->hook) + local_accindx; + wa->occ += steSumLr * abs_mee_acc_scale; + if (DoingFourthAcc) { /* do 4th acc if MPE with MMI prior */ + wammi = ((WtAcc*) ste->hook) + add_index; + wammi->occ += steSumLr; + } + } /* for (s = 1; s <= fbInfo->S; s++, ste++) */ + } /* for (j = 2; j < N; j++) */ + + return ans; } @@ -1371,11 +1493,11 @@ static double UpMixParms(int q, HLink hmm, int t, DVector aqt, static void CheckData(char *fn, BufferInfo *info) { if (info->tgtVecSize!=fbInfo->hset->vecSize) - HError(2350,"CheckData: Vector size in %s[%d] is incompatible with hset [%d]", + HError(8426,"CheckData: Vector size in %s[%d] is incompatible with hset [%d]", fn,info->tgtVecSize,fbInfo->hset->vecSize); if (!fbInfo->twoDataFiles){ if (info->tgtPK != fbInfo->hset->pkind) - HError(2350,"CheckData: Parameterisation in %s is incompatible with hset ", + HError(8426,"CheckData: Parameterisation in %s is incompatible with hset ", fn); } } @@ -1385,70 +1507,198 @@ static void CheckData(char *fn, BufferInfo *info) /* StepForward: Step from 1 to T calc'ing Alpha columns and updating parms */ static void StepForward() { - int q,t,negs; - DVector aqt,aqt1,bqt,bqt1,tmp; - double occ, total_occ; - HLink hmm, up_hmm; - ResetObsCache(); - ZeroAlpha(1, fbInfo->Q); /*Zero the alphat column,*/ - for(q=1;q<=fbInfo->Q;q++){ /*And switch: now the alphat1 column is zero.*/ - Acoustic *ac = fbInfo->aInfo->ac + q; - tmp=ac->alphat;ac->alphat=ac->alphat1;ac->alphat1=tmp; - } - ZeroAlpha(1, fbInfo->Q); /*Now the alphat column is zero too.*/ - - for (q=1;q<=fbInfo->Q;q++){ /* inc access counters */ - up_hmm = fbInfo->aInfo->ac[q].hmm; - negs = (int)up_hmm->hook+1; - up_hmm->hook = (void *)negs; - } + int q, t, s, i, N; + unsigned long int negs; + DVector aqt, aqt1, bqt, tmp; + double occ, occConv, total_occ, total_exp_occ; + HLink hmm, up_hmm; + /* cz277 - ANN */ + StreamElem *ste; + float mee_acc_scale; + float ***outprob; + int pos; + float occScale = fbInfo->FSmoothH * probScale * fbInfo->AccScale; + + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + ZeroAlphasCUDA(fbInfo->T, fbInfo->Q, fbInfo->aInfo->acDev); /* cz277 - cuda fblat */ + } +#endif + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + ResetObsCache(); + ZeroAlpha(1, fbInfo->Q); /*Zero the alphat column,*/ + for(q = 1; q <= fbInfo->Q; q++) { /*And switch: now the alphat1 column is zero.*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + tmp = ac->alphat; + ac->alphat = ac->alphat1; + ac->alphat1 = tmp; + } + ZeroAlpha(1, fbInfo->Q); /*Now the alphat column is zero too.*/ + } + + for (q = 1; q <= fbInfo->Q; q++) { /* inc access counters */ + up_hmm = fbInfo->aInfo->ac[q].hmm; + negs = (unsigned long int)up_hmm->hook + 1; + up_hmm->hook = (void *) negs; + } - for (t=1;t<=fbInfo->T;t++) { - /* Get Data */ - ReadAsTable(fbInfo->al_pbuf,t-1,&fbInfo->al_ot); +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + for(q = 1; q <= fbInfo->Q; ++q) { + SyncAcousticHost2DevAlpha(&fbInfo->aInfo->ac[q], &fbInfo->aInfo->acDev[q]); + } + /* cz27 - cuda fblat */ + StepAlphaCUDA(fbInfo->Q, fbInfo->aInfo->acDev); + for (q = 1; q <= fbInfo->Q; ++q) { + SyncAcousticDev2HostAlpha(&fbInfo->aInfo->acDev[q], &fbInfo->aInfo->ac[q]); + } + } +#endif - if (fbInfo->twoDataFiles) - ReadAsTable(fbInfo->up_pbuf,t-1,&fbInfo->up_ot); + for (t = 1; t <= fbInfo->T; t++) { + /* cz277 - ANN */ + if (fbInfo->hset->annSet != NULL && fbInfo->hsKind != HYBRIDHS) { /* TANDEM */ + /* TODO: Tandem */ + + } + else if (fbInfo->al_pbuf != NULL) { + /* Get Data */ + ReadAsTable(fbInfo->al_pbuf, t - 1, &fbInfo->al_ot); + if (fbInfo->twoDataFiles) { + ReadAsTable(fbInfo->up_pbuf, t - 1, &fbInfo->up_ot); + } + } - if (fbInfo->hsKind == TIEDHS) PrecomputeTMix(fbInfo->hset,&fbInfo->al_ot,minFrwdP,0); + /* cz277 - frame rejection */ + if (fbInfo->rejFrame && fbInfo->findRef && fbInfo->num_index == 0.0) { /* for numerator lattices */ + for (s = 1; s <= fbInfo->S; ++s) { + fbInfo->refVec[s][t] = -1; + } + } + if (fbInfo->hsKind == TIEDHS) { + PrecomputeTMix(fbInfo->hset, &fbInfo->al_ot, minFrwdP, 0); + } + + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + StepAlphaSwapOnly(t); + } +#endif + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + StepAlpha(t); /* Calculate this time's Alpha column. */ + } + + /* Now accumulate statistics. */ + total_occ = LZERO; + total_exp_occ = 0.0; + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /* inc accs for each active model */ + Acoustic *ac = fbInfo->aInfo->ac + q; + int tLo = ac->t_start, tHi = ac->t_end; + if (t == tLo && tHi == tLo - 1 && fbInfo->uFlags & UPTRANS) { /*In the ExactMatch case, where we have a skip transition.*/ + UpSkipTranParms(q, t); + } + if (t >= tLo && t <= tHi) { + hmm = ac->hmm; + aqt = ac->alphat; + bqt = ac->betaPlus[t]; + /*bqt1 = (t + 1 >= tLo && t + 1 <= tHi) ? ac->betaPlus[t + 1] : NULL;*/ + aqt1 = (t == 1) ? NULL : ac->alphat1; /* alpha from t-1 */ + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + aqt = ac->alphaPlus[t]; + if (aqt1 != NULL) + aqt1 = ac->alphaPlus[t - 1]; + } +#endif + if (fbInfo->uFlags & (UPMEANS | UPVARS | UPMIXES | UPXFORM | UPMIXES)) { + if ((occ = UpMixParms(q, hmm, t, aqt, aqt1, bqt)) > LSMALL) { + total_occ = LAdd(total_occ, occ); + } + } + if (fbInfo->uFlags & UPTRANS) { + UpTranParms(t, q); + } + /* cz277 - ANN */ + if (fbInfo->hsKind == HYBRIDHS) { + N = hmm->numStates; + if (fbInfo->MPE) { + mee_acc_scale = fbInfo->AccScale * ac->mpe_occscale; + } + else if (fbInfo->num_index == 1.0) { /* MMI denorminator */ + mee_acc_scale = fbInfo->AccScale * (-1.0); + } + else { + mee_acc_scale = fbInfo->AccScale; + } + /*mee_acc_scale = fabs(mee_acc_scale);*/ + outprob = ac->otprob[t]; + for (i = 2; i < N; ++i) { + /* to compute gamma^{MPE}_{q}(t) = \dfrac{a_q(t) * b_q(t)}{P}(c(q) - c_avg) */ + occ = aqt[i] + bqt[i] - outprob[i][0][0]; + total_occ = LAdd(total_occ, occ); + occConv = exp(occ); + occ = occConv * mee_acc_scale; + total_exp_occ += occConv; + occ *= probScale; + for (s = 1; s <= fbInfo->S; ++s) { + ste = &hmm->svec[i].info->pdf[s]; + if ((fbInfo->num_index == 0.0) && ((fbInfo->uFlags & UPTARGETPEN) != 0)) { /* ML or MMI numerator */ + ste->occAcc += occConv; + } + /* cz277 - seq bug 1 */ + /*pos = fbInfo->occMat[s]->colNum * t + ste->targetIdx - 1;*/ + pos = fbInfo->occMat[s]->colNum * (t - 1) + ste->targetIdx - 1; + + fbInfo->occMat[s]->matElems[pos] -= fbInfo->FSmoothH * occ; + /* cz277 - frame rejection */ + if (fbInfo->rejFrame && fbInfo->findRef && fbInfo->num_index == 0.0) { /* for numerator lattice */ + occConv = (-1.0) * (fbInfo->occMat[s]->matElems[pos] / occScale); /* abs(occ) */ + if ((fbInfo->refVec[s][t] == -1) || (fbInfo->occVec[s][t] < occConv)) { + fbInfo->occVec[s][t] = occConv; + fbInfo->refVec[s][t] = ste->targetIdx - 1; + } + } + } + } + } + } + } + /* cz277 - frame rejection */ + if (fbInfo->rejFrame) { + if (fbInfo->num_index == 1.0) { /* MMI denominator, (den - num) * occScale is stored */ + for (s = 1; s <= fbInfo->S; ++s) { + /* fbInfo->occVec[s][t] changes from the num occ to den occ */ + fbInfo->occVec[s][t] += fbInfo->occMat[s]->matElems[fbInfo->occMat[s]->colNum * t + fbInfo->refVec[s][t]] / occScale; + } + } + else if (fbInfo->findRef == FALSE && fbInfo->num_index == 0.0) { /* for MMI numerator */ + for (s = 1; s <= fbInfo->S; ++s) { + /* set fbInfo->occVec[s][t] to the num occ */ + fbInfo->occVec[s][t] = (-1.0) * (fbInfo->occMat[s]->matElems[fbInfo->occMat[s]->colNum * t + fbInfo->refVec[s][t]] / occScale); /* abs(occ) */ + } + } + } - StepAlpha(t); /* Calculate this time's Alpha column. */ + /* cz277 - ANN */ + if (fbInfo->hsKind != HYBRIDHS) { /* TODO: need to cover xfrom for hybrid system */ + DoAllMixUpdates(t); /* Iterates over all active mpdf's and actually accumulates stats. */ + } - /* Now accumulate statistics. */ - total_occ=LZERO; - for (q=fbInfo->aInfo->qLo[t];q<=fbInfo->aInfo->qHi[t];q++){ /* inc accs for each active model */ - Acoustic *ac = fbInfo->aInfo->ac+q; - int tLo = ac->t_start, - tHi = ac->t_end; - if(t==tLo && tHi==tLo-1 && fbInfo->uFlags&UPTRANS){ /*In the ExactMatch case, where we have a skip transition.*/ - UpSkipTranParms(q, t); - } - if(t>=tLo&&t<=tHi){ - hmm = ac->hmm; - aqt = ac->alphat; bqt = ac->betaPlus[t]; - - bqt1 = (t+1>=tLo&&t+1<=tHi) ? ac->betaPlus[t+1]:NULL; - aqt1 = (t==1) ? NULL:ac->alphat1; /* alpha from t-1 */ - - if (fbInfo->uFlags&(UPMEANS|UPVARS|UPMIXES|UPXFORM|UPMIXES)) - if((occ=UpMixParms(q,hmm,t,aqt,aqt1,bqt)) > LSMALL){ - total_occ = LAdd(total_occ, occ); - } - if (fbInfo->uFlags&UPTRANS) - UpTranParms(t,q); - } + /* cz277 - cuda fblat */ + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + if (fabs(total_occ) > 0.1) { + HError(8424, "in HFBLat.c: Wrong occ: exp(%f)\n", total_occ); + } + if (fabs(total_occ) > 1.0e-4) { + HError(-8424, "in HFBLat.c: Wrong occ: exp(%f)\n", total_occ); + } + } } - DoAllMixUpdates(t); /* Iterates over all active mpdf's and actually accumulates stats. */ - - if(fabs(total_occ) > 0.1) - HError( 1, "in HFwdBkwdLat.c: Wrong occ: exp(%f)\n",total_occ); - if(fabs(total_occ) > 1.0e-4) - HError( -1, "in HFwdBkwdLat.c: Wrong occ: exp(%f)\n",total_occ); - } } - - /* -------------------------- Top Level Forward-Backward Routine ------------------------ */ @@ -1479,8 +1729,8 @@ void FBLatAddLattice (FBLatInfo *fbInfo, Lattice *lat){ /* add this lattice, can do this repeatedly. */ fbInfo->aInfo->lat[ fbInfo->aInfo->nLats ++ ] = lat; - if(!lat) HError(1, "Zero lattice supplied to FBLat."); - if(fbInfo->aInfo->nLats > MAXLATS) HError(1,"fbInfo->aInfo->nLats > MAXLATS, increase array size MAXLATS."); + if(!lat) HError(8422, "Zero lattice supplied to FBLat."); + if(fbInfo->aInfo->nLats > MAXLATS) HError(8427,"fbInfo->aInfo->nLats > MAXLATS, increase array size MAXLATS."); } @@ -1523,256 +1773,350 @@ int MPE_GetFileLen(Lattice *lat){ void FBLatClearUp(FBLatInfo *fbInfo); -void FBLatFirstPass(FBLatInfo *_fbInfo, FileFormat dff, char * datafn, char *datafn2, Lattice *MPECorrLat){ - int q,T2=0; Boolean MPE; - - fbInfo = _fbInfo; - if(fbInfo->InUse) FBLatClearUp(fbInfo); - fbInfo->InUse=TRUE; /* will now initialise */ - - if (trace&T_TOP) { - printf(" Processing Data: %s\n", NameOf(datafn,buf1)); - fflush(stdout); - } - MPE = fbInfo->MPE = (MPECorrLat!=NULL); - - ArcFromLat(fbInfo->aInfo, fbInfo->hset); - if(MPE) AttachMPEInfo(fbInfo->aInfo); +Boolean FBLatFirstPass(FBLatInfo *_fbInfo, FileFormat dff, char * datafn, char *datafn2, Lattice *MPECorrLat){ + int q, T2 = 0; + Boolean MPE; - /*[trace:] PrintArcInfo(stdout, &fbInfo->aInfo);*/ - fbInfo->Q = fbInfo->aInfo->Q; - if (fbInfo->Q==0) - HError(2325,"FBLat: No arcs in lattice for %s",datafn); + fbInfo = _fbInfo; + if (fbInfo->InUse) { + FBLatClearUp(fbInfo); + } + fbInfo->InUse = TRUE; /* will now initialise */ - if (fbInfo->twoDataFiles) - SetNewConfig("HPARM1"); - fbInfo->al_pbuf=OpenBuffer(&fbInfo->al_dataStack,datafn,0,dff,FALSE_dup,FALSE_dup); - GetBufferInfo(fbInfo->al_pbuf,&fbInfo->al_info); - if (fbInfo->twoDataFiles){ - if(!datafn2) HError(1, "Need 2 data file names if single pass retraining."); - SetNewConfig("HPARM2"); - fbInfo->up_pbuf=OpenBuffer(&fbInfo->up_dataStack,datafn2,0,dff,FALSE_dup,FALSE_dup); - GetBufferInfo(fbInfo->up_pbuf,&fbInfo->up_info); - CheckData(datafn2,&fbInfo->up_info); - /* SyncBuffers(pbuf,pbuf2); */ - T2 = ObsInBuffer(fbInfo->up_pbuf); - }else - CheckData(datafn,&fbInfo->al_info); - fbInfo->T = ObsInBuffer(fbInfo->al_pbuf); + if (trace & T_TOP) { + printf("\tProcessing Data: %s\n", NameOf(datafn, buf1)); + fflush(stdout); + } + MPE = fbInfo->MPE = (MPECorrLat != NULL); - if (fbInfo->twoDataFiles && (fbInfo->T != T2)) - HError(2319,"HERest: Paired training files must be same length for single pass retraining"); + ArcFromLat(fbInfo->aInfo, fbInfo->hset); + if(MPE) { + AttachMPEInfo(fbInfo->aInfo); + } + + /*[trace:] PrintArcInfo(stdout, &fbInfo->aInfo);*/ + fbInfo->Q = fbInfo->aInfo->Q; + if (fbInfo->Q == 0) { + HError(8422, "FBLat: No arcs in lattice for %s", datafn); + } + + /* cz277 - ANN */ + if (fbInfo->hsKind == HYBRIDHS) { /* for hybrid systems, llhMat and T are already set */ + fbInfo->al_pbuf = NULL; + fbInfo->up_pbuf = NULL; + } + else if (fbInfo->hset->annSet != NULL) { /* TANDEMHS */ + /* TODO */ + } + else { /* if need to load the data */ + if (fbInfo->twoDataFiles) { + SetNewConfig("HPARM1"); + } + fbInfo->al_pbuf = OpenBuffer(&fbInfo->al_dataStack, datafn, 0, dff, FALSE_dup, FALSE_dup); + GetBufferInfo(fbInfo->al_pbuf, &fbInfo->al_info); + if (fbInfo->twoDataFiles) { + if(!datafn2) { + HError(8419, "Need 2 data file names if single pass retraining."); + } + SetNewConfig("HPARM2"); + fbInfo->up_pbuf = OpenBuffer(&fbInfo->up_dataStack, datafn2, 0, dff, FALSE_dup, FALSE_dup); + GetBufferInfo(fbInfo->up_pbuf, &fbInfo->up_info); + CheckData(datafn2, &fbInfo->up_info); + /* SyncBuffers(pbuf,pbuf2); */ + T2 = ObsInBuffer(fbInfo->up_pbuf); + } else { + CheckData(datafn,&fbInfo->al_info); + } + fbInfo->T = ObsInBuffer(fbInfo->al_pbuf); - if (fbInfo->firstTime){ - SetStreamWidths(fbInfo->al_info.tgtPK,fbInfo->al_info.tgtVecSize,fbInfo->hset->swidth,&eSep); + if (fbInfo->twoDataFiles && (fbInfo->T != T2)) { + HError(8428, "HERest: Paired training files must be same length for single pass retraining"); + } + + if (fbInfo->firstTime){ + SetStreamWidths(fbInfo->al_info.tgtPK, fbInfo->al_info.tgtVecSize, fbInfo->hset->swidth, &eSep); - fbInfo->al_ot = MakeObservation(&fbInfo->miscStack,fbInfo->hset->swidth,fbInfo->al_info.tgtPK, - fbInfo->hsKind==DISCRETEHS,eSep); + fbInfo->al_ot = MakeObservation(&fbInfo->miscStack, fbInfo->hset->swidth, fbInfo->al_info.tgtPK, fbInfo->hsKind == DISCRETEHS, eSep); - if (fbInfo->twoDataFiles){ /*todo, fix use of this. */ - fbInfo->up_ot = MakeObservation(&fbInfo->miscStack,fbInfo->hset->swidth,fbInfo->up_info.tgtPK, - fbInfo->hsKind==DISCRETEHS,eSep); - } - fbInfo->firstTime = FALSE; - } - - - SetBetaPlus(); /* Step back through file. */ - - { - HArc *a; ArcTrans *at; LogFloat lmprob; - fbInfo->pr = LZERO; + if (fbInfo->twoDataFiles) { /*todo, fix use of this. */ + fbInfo->up_ot = MakeObservation(&fbInfo->miscStack, fbInfo->hset->swidth, fbInfo->up_info.tgtPK, fbInfo->hsKind == DISCRETEHS, eSep); + } + fbInfo->firstTime = FALSE; + } + } + + /* cz277 - cuda fblat */ + /* Step back through file. */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + SetBetaPlusCUDA(); + } +#endif + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + SetBetaPlus(); + } + + { + HArc *a; + ArcTrans *at; + LogFloat lmprob; + fbInfo->pr = LZERO; - /* Calculate beta [actually betaPlus, like a reversed alpha] */ - for(q=1;q<=fbInfo->Q;q++){ - Acoustic *ac = fbInfo->aInfo->ac+q; - ac->locc = LZERO; - if(ac->aclike == LZERO) HError(1, "Zero acoustic likelihood! (May be due to different model topology than used to create lattice)"); - } + /* Calculate beta [actually betaPlus, like a reversed alpha] */ + for (q = 1; q <= fbInfo->Q; q++) { + Acoustic *ac = fbInfo->aInfo->ac + q; + ac->locc = LZERO; + if (ac->aclike == LZERO) { + /* from mjfg, cz277 - 141022 */ + HError(-8425, "Zero acoustic likelihood! (May be due to different model topology than used to create lattice)"); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + } - for(a=fbInfo->aInfo->end;a;a=a->prec){ /*Calculate betaPlus .*/ - Acoustic *ac = a->ac; - LogDouble betaPlus; - if(!a->follTrans) betaPlus = 0; - else{ - betaPlus=LZERO; - for(at=a->follTrans;at;at=at->start_foll){ - lmprob = translm(at->lmlike); - betaPlus = LAdd(betaPlus, at->end->betaPlus + lmprob); + for (a = fbInfo->aInfo->end; a; a = a->prec) { /*Calculate betaPlus .*/ + Acoustic *ac = a->ac; + LogDouble betaPlus; + if (!a->follTrans) { + betaPlus = 0; } - } - betaPlus += ac->aclike * latProbScale; - if(isnan(betaPlus)) HError(1, "betaPlus isnan..."); - a->betaPlus = betaPlus; - if(!a->precTrans) fbInfo->pr = LAdd(fbInfo->pr, a->betaPlus); - } - - /*Now calculate alpha... The occupancy of an arc is its exp((alpha+betaPlus-outprob)-fbInfo->pr) */ - for(a=fbInfo->aInfo->start;a;a=a->foll){ - Acoustic *ac = a->ac; - LogDouble alpha, occ; - if(!a->precTrans) alpha = 0; - else{ - alpha=LZERO; - for(at=a->precTrans;at;at=at->end_foll){ - lmprob = translm(at->lmlike); - alpha = LAdd(alpha, at->start->alpha + lmprob); + else { + betaPlus = LZERO; + for (at = a->follTrans; at; at = at->start_foll) { + lmprob = translm(at->lmlike); + betaPlus = LAdd(betaPlus, at->end->betaPlus + lmprob); + } } - } - alpha += ac->aclike * latProbScale; - a->alpha = alpha; - occ = a->alpha + a->betaPlus - ac->aclike*latProbScale- fbInfo->pr; - - /*occ should be log of sth in the region 0.0 ... 1.0 */ - if(occ > 0.0001) HError(1, "occ > 1.0001 (%f)", occ); + betaPlus += ac->aclike * latProbScale; + if (isnan(betaPlus)) { + HError(-8424, "betaPlus isnan..."); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + a->betaPlus = betaPlus; + if (!a->precTrans) { + fbInfo->pr = LAdd(fbInfo->pr, a->betaPlus); + } + } + + /*Now calculate alpha... The occupancy of an arc is its exp((alpha+betaPlus-outprob)-fbInfo->pr) */ + for (a = fbInfo->aInfo->start; a; a = a->foll) { + Acoustic *ac = a->ac; + LogDouble alpha, occ; + if (!a->precTrans) { + alpha = 0; + } + else { + alpha = LZERO; + for (at = a->precTrans; at; at = at->end_foll) { + lmprob = translm(at->lmlike); + alpha = LAdd(alpha, at->start->alpha + lmprob); + } + } + alpha += ac->aclike * latProbScale; + a->alpha = alpha; + occ = a->alpha + a->betaPlus - ac->aclike * latProbScale - fbInfo->pr; - /* alpha_startprob[id] = LAdd(alpha_startprob[id], -gamma_startprob[id] + occ); */ - ac->locc = LAdd(ac->locc, occ); - } + /*occ should be log of sth in the region 0.0 ... 1.0 */ + if (occ > 0.0001) { + HError(-8424, "occ > 1.0001 (%f)", occ); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } - /* calculate & check overall probability of file */ - { - double pr = LZERO; - for(a=fbInfo->aInfo->start;a;a=a->foll){ - if(!a->follTrans) /* an ending arc. */ - pr = LAdd(pr, a->alpha); - } - if(fabs(pr-fbInfo->pr)>1.0e-6) HError(1, "Error in file pr..."); - } - - - if(MPE){ - int nTrans1=0,nTrans2=0; /*debug*/ - HArc *a; ArcTrans *at; double norm; - /*We are going to set the "alphaError" and "betaPlusError" fields for each of the arcs."*/ + /* alpha_startprob[id] = LAdd(alpha_startprob[id], -gamma_startprob[id] + occ); */ + ac->locc = LAdd(ac->locc, occ); + } + + /* calculate & check overall probability of file */ + { + double pr = LZERO; + for (a = fbInfo->aInfo->start; a; a = a->foll) { + if (!a->follTrans) {/* an ending arc. */ + pr = LAdd(pr, a->alpha); + } + } + if (fabs(pr - fbInfo->pr) > 1.0e-6) { + HError(-8424, "Error in file pr %e vs %e", pr, fbInfo->pr); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + } + if (MPE) { + int nTrans1=0, nTrans2=0; /*debug*/ + HArc *a; + ArcTrans *at; + double norm; + /*We are going to set the "alphaError" and "betaPlusError" fields for each of the arcs."*/ - if(!MPECorrLat) HError(-1, "No num lattice provided for MPE! "); - fbInfo->MPEFileLength = MPE_GetFileLen(MPECorrLat); + if (!MPECorrLat) { + HError(-8421, "No num lattice provided for MPE! "); + } + fbInfo->MPEFileLength = MPE_GetFileLen(MPECorrLat); #ifdef SUPPORT_EXACT_CORRECTNESS - if(ExactCorrectness){ - DoExactCorrectness(fbInfo, MPECorrLat); - } else { + if (ExactCorrectness) { + DoExactCorrectness(fbInfo, MPECorrLat); + } else { #endif - /* Inexact version of MPE/MWE. */ - if(CalcAsError) SetCorrectnessAsError(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ - else SetCorrectness(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ - - /*First set alphaError*/ - for(a=fbInfo->aInfo->start;a;a=a->foll){ - double alphaError; - if(!StartOfWord(a)) a->mpe->alphaError=a->precTrans->start->mpe->alphaError + a->mpe->correctness; - else{ /*start of word. Sum previous alphas.*/ - if(!a->precTrans){ alphaError = 0.0; } /*start of sentence*/ - else{ - norm = LZERO; alphaError = 0.0; - for(at=a->precTrans;at;at=at->end_foll){ - nTrans1++; - norm = LAdd(norm, at->start->alpha + translm(at->lmlike)); - } - for(at=a->precTrans;at;at=at->end_foll){ - alphaError += (at->start->alpha+translm(at->lmlike)-norm > MINEARG ? exp(at->start->alpha+translm(at->lmlike)-norm):0.0)*(at->start->mpe->alphaError); - } - } - alphaError += a->mpe->correctness; /*-1 .. 1*/ - a->mpe->alphaError = alphaError; - } - } - - /*now set betaPlusError (like betaError but includes present phone's contribution). */ - for(a=fbInfo->aInfo->end;a;a=a->prec){ - double betaPlusError; + + /* Inexact version of MPE/MWE. */ + if (CalcAsError) { + SetCorrectnessAsError(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ + } + else { + SetCorrectness(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ + } + /*First set alphaError*/ + for (a = fbInfo->aInfo->start; a; a = a->foll) { + double alphaError; + if (!StartOfWord(a)) { + a->mpe->alphaError = a->precTrans->start->mpe->alphaError + a->mpe->correctness; + } + else { /*start of word. Sum previous alphas.*/ + if (!a->precTrans) { + alphaError = 0.0; + } /*start of sentence*/ + else { + norm = LZERO; + alphaError = 0.0; + for (at = a->precTrans; at; at = at->end_foll) { + nTrans1++; + norm = LAdd(norm, at->start->alpha + translm(at->lmlike)); + } + for (at = a->precTrans; at; at = at->end_foll) { + alphaError += (at->start->alpha+translm(at->lmlike) - norm > MINEARG ? exp(at->start->alpha + translm(at->lmlike) - norm): 0.0) * (at->start->mpe->alphaError); + } + } + alphaError += a->mpe->correctness; /*-1 .. 1*/ + a->mpe->alphaError = alphaError; + } + } + /*now set betaPlusError (like betaError but includes present phone's contribution). */ + for (a = fbInfo->aInfo->end; a; a = a->prec) { + double betaPlusError; - /* current phone's contribution to correctness:*/ - betaPlusError = a->mpe->correctness; /*if Word MEE this will only be nonzero in the start-of-word case. */ - if(EndOfWord(a)){ /* --> multiple transitions from end of arc. */ - if(!a->follTrans){ betaPlusError += 0.0; } /*end of sentence*/ - else{ - norm = LZERO; - for(at=a->follTrans;at;at=at->start_foll){ /* Get normalising factor = sum following gamma...*/ - nTrans2++; - norm = LAdd(norm, at->end->betaPlus + translm(at->lmlike)); - } - for(at=a->follTrans;at;at=at->start_foll){ - if(at->end->betaPlus+translm(at->lmlike) -norm > MINEARG) - betaPlusError += exp(at->end->betaPlus + translm(at->lmlike) - norm)*(at->end->mpe->betaPlusError); - } - } - } else betaPlusError += a->follTrans->end->mpe->betaPlusError; - a->mpe->betaPlusError = betaPlusError; - } - - if(nTrans1!=nTrans2) HError(-1, "NTrans1!=NTrans2"); /*maybe should be +1 error */ + /* current phone's contribution to correctness:*/ + betaPlusError = a->mpe->correctness; /*if Word MEE this will only be nonzero in the start-of-word case. */ + if (EndOfWord(a)){ /* --> multiple transitions from end of arc. */ + if (!a->follTrans) { + betaPlusError += 0.0; + } /*end of sentence*/ + else { + norm = LZERO; + for (at = a->follTrans; at; at = at->start_foll) { /* Get normalising factor = sum following gamma...*/ + nTrans2++; + norm = LAdd(norm, at->end->betaPlus + translm(at->lmlike)); + } + for (at = a->follTrans; at; at = at->start_foll) { + if (at->end->betaPlus + translm(at->lmlike) - norm > MINEARG) { + betaPlusError += exp(at->end->betaPlus + translm(at->lmlike) - norm) * (at->end->mpe->betaPlusError); + } + } + } + } + else { + betaPlusError += a->follTrans->end->mpe->betaPlusError; + } + a->mpe->betaPlusError = betaPlusError; + } + if (nTrans1 != nTrans2) { + HError(-8993, "NTrans1!=NTrans2"); /*maybe should be +1 error */ + } + + /*Find the average correctness for the whole file, and do some checking...*/ + { + double avgErrBetaPlus = 0, avgErrAlpha = 0, normBetaPlus = 0, normAlpha = 0; + for (a = fbInfo->aInfo->start; a; a = a->foll) { + if (!a->precTrans) { /*start of file*/ + if (a->betaPlus-fbInfo->pr > MINEARG) { + avgErrBetaPlus += exp(a->betaPlus - fbInfo->pr) * a->mpe->betaPlusError; + normBetaPlus += exp(a->betaPlus-fbInfo->pr); + } + } + if (!a->follTrans) { /*end of file*/ + if (a->alpha - fbInfo->pr > MINEARG) { + avgErrAlpha += exp(a->alpha-fbInfo->pr) * a->mpe->alphaError; + normAlpha += exp(a->alpha - fbInfo->pr); + } + } + /* printf("Error for %s = %f/%f/%f ", a->phone->name, a->mpe->alphaError, a->mpe->betaPlusError, a->mpe->alphaError+a->mpe->betaPlusError); */ + } + + if (fabs(1 - normBetaPlus) > 0.1 || fabs(1 - normAlpha) > 0.1) { /*Sanity check*/ + HError(-8423, "normAlpha/normBetaPlus wrong!"); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + if (fabs(avgErrBetaPlus - avgErrAlpha) > 0.0001) { /*Sanity check*/ + HError(-8423, "avgErrBetaPlus and avgErrAlpha disagree (%f,%f)!", avgErrBetaPlus, avgErrAlpha); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + fbInfo->AvgCorr = avgErrBetaPlus; /* set average correctness of file. */ + } + + { + /* Calculate the scales gamma_q^MPE = (AvgErr(node) - AvgErr(file)) for each arc. */ + /* Since the calculation is pooled for identical arcs in pools q=1..Q, this is actually + a weighted average of gamma_q^MPE over all the identically timed arcs, weighted by occupation probability gamma_q. */ + + for (q = 1; q <= fbInfo->Q; q++) { + fbInfo->aInfo->ac[q].mpe_occscale = 0; + } + for (a = fbInfo->aInfo->start; a; a = a->foll) { + Acoustic *ac = a->ac; + float occ = a->alpha + a->betaPlus - ac->aclike*latProbScale - fbInfo->pr; /* Occupancy of this cluster of identical arcs which is due to a. */ + float total_occ = ac->locc; /* total occupancy of this group of arcs */ + if (occ-total_occ > MINEARG) { + /* cz277 - ANN */ + /*ac->mpe_occscale += exp(occ-total_occ) * (a->mpe->alphaError+a->mpe->betaPlusError-fbInfo->AvgCorr - a->mpe->correctness);*/ + ac->mpe_occscale += exp(occ - total_occ) * (a->mpe->alphaError + a->mpe->betaPlusError - fbInfo->AvgCorr - a->mpe->correctness); + /* MEEScale is an average error for words including that arc, minus the global average error. */ + /* - a->mpe->correctness has to be subtracted because alpha and betaPlus both contain it.*/ + } + } + } - /*Find the average correctness for the whole file, and do some checking...*/ - { - double avgErrBetaPlus=0, avgErrAlpha=0, normBetaPlus=0, normAlpha=0; - for(a=fbInfo->aInfo->start;a;a=a->foll){ - if(!a->precTrans){ /*start of file*/ - if(a->betaPlus-fbInfo->pr > MINEARG){ - avgErrBetaPlus += exp(a->betaPlus-fbInfo->pr) * a->mpe->betaPlusError; - normBetaPlus += exp(a->betaPlus-fbInfo->pr); - } - } - if(!a->follTrans){ /*end of file*/ - if(a->alpha-fbInfo->pr > MINEARG){ - avgErrAlpha += exp(a->alpha-fbInfo->pr) * a->mpe->alphaError; - normAlpha += exp(a->alpha-fbInfo->pr); - } - } - /* printf("Error for %s = %f/%f/%f ", a->phone->name, a->mpe->alphaError, a->mpe->betaPlusError, a->mpe->alphaError+a->mpe->betaPlusError); */ - } +#ifdef SUPPORT_EXACT_CORRECTNESS + } /* endif (!ExactCorrectness) */ +#endif - if(fabs(1-normBetaPlus)>0.1 || fabs(1-normAlpha)>0.1) /*Sanity check*/ - HError(1, "normAlpha/normBetaPlus wrong!"); - if(fabs(avgErrBetaPlus - avgErrAlpha) > 0.0001) /*Sanity check*/ - HError(-1, "avgErrBetaPlus and avgErrAlpha disagree (%f,%f)!", avgErrBetaPlus, avgErrAlpha); - fbInfo->AvgCorr = avgErrBetaPlus; /* set average correctness of file. */ - } - - { - /* Calculate the scales gamma_q^MPE = (AvgErr(node) - AvgErr(file)) for each arc. */ - /* Since the calculation is pooled for identical arcs in pools q=1..Q, this is actually - a weighted average of gamma_q^MPE over all the identically timed arcs, weighted by occupation - probability gamma_q. */ - - for(q=1;q<=fbInfo->Q;q++) fbInfo->aInfo->ac[q].mpe_occscale = 0; - - for(a=fbInfo->aInfo->start;a;a=a->foll){ - Acoustic *ac = a->ac; - float occ = a->alpha + a->betaPlus - ac->aclike*latProbScale - fbInfo->pr; /* Occupancy of this cluster of identical arcs which is due to a. */ - float total_occ = ac->locc; /* total occupancy of this group of arcs */ - if(occ-total_occ > MINEARG){ - ac->mpe_occscale += exp(occ-total_occ) * (a->mpe->alphaError+a->mpe->betaPlusError-fbInfo->AvgCorr - a->mpe->correctness); - /* MEEScale is an average error for words including that arc, minus the global average error. */ - /* - a->mpe->correctness has to be subtracted because alpha and betaPlus both contain it.*/ - } - } - } - } /* endif (!ExactCorrectness) */ - - { + { #ifdef DEBUG_MEE - printf("\nMEEScale = "); - for(i=1;i<=fbInfo->Q;i++) printf("%f ", fbInfo->aInfo->ac[i].mpe_occscale); - - printf("\nMEEScale*fbscale = "); - for(i=1;i<=fbInfo->Q;i++) { - Acoustic *ac = fbInfo->aInfo->ac+i; - printf("%f ", ac->mpe_occscale * exp (ac->locc)); - } - printf("\n"); + printf("\nMEEScale = "); + for (i = 1; i <= fbInfo->Q; i++) { + printf("%f ", fbInfo->aInfo->ac[i].mpe_occscale); + } + printf("\nMEEScale*fbscale = "); + for(i = 1; i <= fbInfo->Q; i++) { + Acoustic *ac = fbInfo->aInfo->ac + i; + printf("%f ", ac->mpe_occscale * exp(ac->locc)); + } + printf("\n"); #endif - } - - if(CalcAsError) fbInfo->AvgCorr += fbInfo->MPEFileLength; - if(trace&T_TOP) printf("FLen=%d, AvCor=%f\n", fbInfo->MPEFileLength, fbInfo->AvgCorr); /*normal case.*/ + } - } /*endif ( MPE ) */ - } - if(trace&T_TOP) printf("T=%d, pr/fr=%f\n", fbInfo->T, fbInfo->pr/fbInfo->T); + if (CalcAsError) { + fbInfo->AvgCorr += fbInfo->MPEFileLength; + } + if (trace&T_TOP) { + printf("\t\tFLen=%d, AvCor=%f\n", fbInfo->MPEFileLength, fbInfo->AvgCorr); /*normal case.*/ + } + } /*endif ( MPE ) */ + } + if (trace&T_TOP) { + printf("\t\tT=%d, pr/fr=%f\n", fbInfo->T, fbInfo->pr/fbInfo->T); + } + return TRUE; } @@ -1780,13 +2124,13 @@ void FBLatSecondPass(FBLatInfo *_fbInfo, int num_index, int den_index){ fbInfo = _fbInfo; fbInfo->num_index = num_index; fbInfo->den_index = den_index; - - if(fbInfo->pr == 0) HError(1, "FBLatSecondPass: 1st pass not done!!"); + if(fbInfo->pr == 0) HError(8493, "FBLatSecondPass: 1st pass not done!!"); StepForward(); - FBLatClearUp(fbInfo); StartTime += fbInfo->T; /*relates to caching of likelihoods */ + /* cz277 - ANN */ + fbInfo->latPr[num_index] = fbInfo->pr; } @@ -1800,12 +2144,16 @@ void InitFBLat(void) int iter,i; double f; Boolean b; + char buf[MAXSTRLEN]; Register(hfblat_version,hfblat_vc_id); + /* setup the local memory management - defaults sensible? */ + CreateHeap(&infoStack,"InfoStore", MSTAK, 1, 1.0, 50000, 500000); + for(iter=0;iter<=1;iter++){ if(iter) nParm = GetConfig("HFBLAT", TRUE, cParm, MAXGLOBS); - else nParm = GetConfig("HFWDBKWDBLAT", TRUE, cParm, MAXGLOBS); /* Backward compatibility */ + else nParm = GetConfig("HFWDBKWDLAT", TRUE, cParm, MAXGLOBS); /* Backward compatibility */ if (nParm>0){ if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; @@ -1831,6 +2179,14 @@ void InitFBLat(void) this false. */ if (GetConfFlt(cParm,nParm,"INSCORRECTNESS",&f)) InsCorrectness=-fabs(f); /* to make sure negative.*/ /* this config also used in HFBExactMPE.c */ + + if (GetConfBool(cParm,nParm,"MATCHMPETONE",&b)) matchMPETone = b; + if (GetConfStr (cParm,nParm,"MATCHMPEMASK",buf)) + matchMPEMask = CopyString(&infoStack,buf); + /* cz277 - cuda fblat */ +#ifdef CUDA + if (GetConfBool(cParm, nParm, "USECUDA4FBLAT", &b)) FBLatCUDA = b; +#endif } } SET_totalProbScale; @@ -1850,6 +2206,7 @@ void InitialiseFBInfo(FBLatInfo *fbInfo, /* Stacks for global structures requiring memory allocation */ CreateHeap(&fbInfo->arcStack, "fbLatArcStore", MSTAK, 1, 1.0, 1000000, 20000000); CreateHeap(&fbInfo->tempStack, "fbLatTempStore", MSTAK, 1, 0.5, 1000, 10000); + CreateHeap(&fbInfo->al_dataStack, "fbLatDataStore", MSTAK, 1, 0.5, 1000, 10000); CreateHeap(&fbInfo->miscStack, "fbLatMiscStore", MSTAK, 1, 0.5, 1000, 10000); if (fbInfo->twoDataFiles) @@ -1876,22 +2233,68 @@ void InitialiseFBInfo(FBLatInfo *fbInfo, nPDFs[s] = 0; SavedMixesSize[s]=0; SavedMixes[s]=0; } } + + /* cz277 - ANN */ + for (s = 1; s <= SMAX; ++s) { + fbInfo->llhMat[s] = NULL; + fbInfo->occMat[s] = NULL; + } + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->hset->annSet != NULL && fbInfo->S == 1) { + fbInfo->aInfo->FBLatCUDA = FBLatCUDA; + } + else { + fbInfo->aInfo->FBLatCUDA = FALSE; + } +#endif + } -void FBLatClearUp(FBLatInfo *fbInfo){ - ResetHeap(&fbInfo->arcStack); - fbInfo->aInfo->mem = &fbInfo->arcStack; - fbInfo->aInfo->nLats = 0; /* important. */ - CloseBuffer(fbInfo->al_pbuf); - ResetHeap(&fbInfo->up_dataStack); - if (fbInfo->twoDataFiles){ - CloseBuffer(fbInfo->up_pbuf); - ResetHeap(&fbInfo->up_dataStack); - } - ResetHeap(&fbInfo->tempStack); - fbInfo->InUse=FALSE; +void FBLatClearUp(FBLatInfo *fbInfo) { + int s; + + /* cz277 - cuda fblat */ +#ifdef CUDA + int q; + + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + DevDispose(fbInfo->aInfo->qLoDev, sizeof(int) * (fbInfo->aInfo->T + 1)); + DevDispose(fbInfo->aInfo->qHiDev, sizeof(int) * (fbInfo->aInfo->T + 1)); + for (q = 1; q <= fbInfo->Q; ++q) { + ClearAcousticDev(&fbInfo->aInfo->acDev[q]); + } + DevDispose(fbInfo->aInfo->acDev, sizeof(AcousticDev) * (fbInfo->aInfo->Q + 1)); + } +#endif + + ResetHeap(&fbInfo->arcStack); + fbInfo->aInfo->mem = &fbInfo->arcStack; + fbInfo->aInfo->nLats = 0; /* important. */ + /* cz277 - ANN */ + if (fbInfo->al_pbuf != NULL) { + CloseBuffer(fbInfo->al_pbuf); + /* from mjfg - cz277 141022 */ + ResetHeap(&fbInfo->al_dataStack); + } + /* cz277 - ANN */ + if (fbInfo->up_pbuf != NULL) { + ResetHeap(&fbInfo->up_dataStack); + if (fbInfo->twoDataFiles) { + CloseBuffer(fbInfo->up_pbuf); + ResetHeap(&fbInfo->up_dataStack); + } + } + for (s = 1; s <= fbInfo->S; ++s) { + if (fbInfo->occMat[s] != NULL) { + SetNMatrix(0.0, fbInfo->occMat[s], fbInfo->T); + } + } + + ResetHeap(&fbInfo->tempStack); + fbInfo->InUse = FALSE; } @@ -1902,6 +2305,11 @@ void SetDoingFourthAcc(Boolean DO, int indx){ add_index = indx; } +/* cz277 - ANN */ +float GetProbScale(void) { + return probScale; +} + /* --------------------------------- End HFBLat.c -------------------------------------- */ diff --git a/HTKLib/HFBLat.h b/HTKLib/HFBLat.h old mode 100644 new mode 100755 index 075baff..fabe684 --- a/HTKLib/HFBLat.h +++ b/HTKLib/HFBLat.h @@ -3,32 +3,32 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFBLat.h Lattice Forward Backward routines */ +/* File: HFBLat.h Lattice Forward Backward routines */ /* ----------------------------------------------------------- */ -/* !HVER!HNET: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HFBLat: 3.5.0 [CUED 12/10/15] */ /* This module provides facilities to apply a HMM set to @@ -89,6 +89,18 @@ typedef struct { AdaptXForm *inXForm;/* current input transform (if any) */ AdaptXForm *paXForm;/* current parent transform (if any) */ /* ... */ + + /* cz277 - ANN */ + NMatrix *llhMat[SMAX]; + NMatrix *occMat[SMAX]; + + LogDouble latPr[2]; + float FSmoothH; + /* cz277 - frame rejection */ + IntVec refVec[SMAX]; /* the hard target index or the target that has the biggest num occ */ + DVector occVec[SMAX]; /* num occ when proc num lattice, den occ when proc den lattice */ + Boolean findRef; /* compute the state with the maximum num likelihood or not */ + Boolean rejFrame; /* do frame rejection or not */ } FBLatInfo; void InitFBLat(void); @@ -108,7 +120,7 @@ void FBLatSetAccScale(FBLatInfo *fbInfo, float AccScale); /*prepare to scale acc -void FBLatFirstPass(FBLatInfo *fbInfo, +Boolean FBLatFirstPass(FBLatInfo *fbInfo, FileFormat dff, char *datafn, char *datafn2 /*for single-pass retraining*/, Lattice *MPECorrLat /* Only used in MPE, equals correct lattice.*/ ); @@ -126,9 +138,8 @@ void GetTimes(LArc *larc, int i, int *start, int *end); /*gets times as ints. /* EXPORT-> SetDoingFourthAcc: Indicate whether it is currently storing MMI statistics */ void SetDoingFourthAcc(Boolean DO, int indx); -/* ------------------------- End of HFBLat.h --------------------------- */ - - - +/* cz277 - ANN */ +float GetProbScale(void); +/* ------------------------- End of HFBLat.h --------------------------- */ diff --git a/HTKLib/HGraf.c b/HTKLib/HGraf.c old mode 100644 new mode 100755 index f12ab84..ab455c8 --- a/HTKLib/HGraf.c +++ b/HTKLib/HGraf.c @@ -3,23 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HGraf.X.c: HGraf for X-Windows */ +/* File: HGraf.X.c HGraf for X-Windows */ /* ----------------------------------------------------------- */ -char *hgraf_version = "!HVER!HGraf(X): 3.4.1 [CUED 12/03/09]"; +char *hgraf_version = "!HVER!HGraf(X): 3.5.0 [CUED 12/10/15]"; char *hgraf_vc_id = "$Id: HGraf.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; /* @@ -176,11 +189,10 @@ static void InstallFonts(void) static void DecodeKeyPress(XKeyEvent *xkev, HEventRec *hev) { char buf[20]; - int n; KeySym key; XComposeStatus compose; - n = XLookupString(xkev,buf,20,&key,&compose); + XLookupString(xkev,buf,20,&key,&compose); hev->c = buf[0]; switch (key) { case XK_Shift_L: @@ -218,7 +230,7 @@ HEventRec HGetEvent(Boolean anyEvent, void (*action)(void)) { XEvent xev; HEventRec hev; - Boolean found,dummy; + Boolean found; XFlush(theDisp); found = FALSE; do { @@ -269,7 +281,7 @@ HEventRec HGetEvent(Boolean anyEvent, void (*action)(void)) XFlush(theDisp); /* execute a round-robin command to make sure that */ /* client doesnt get too far ahead of the server */ - dummy = HMousePos(&hev.x,&hev.y); + HMousePos(&hev.x,&hev.y); } } while (!found); return hev; diff --git a/HTKLib/HGraf.h b/HTKLib/HGraf.h old mode 100644 new mode 100755 index e34e51a..85ff0a6 --- a/HTKLib/HGraf.h +++ b/HTKLib/HGraf.h @@ -3,24 +3,37 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HGraf.h: Minimal Graphics Interface */ +/* File: HGraf.h Minimal Graphics Interface */ /* ----------------------------------------------------------- */ -/* Win32 port: Peter Silsbee */ +/* Win32 port: Peter Silsbee */ -/* !HVER!HGraf: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HGraf: 3.5.0 [CUED 12/10/15] */ /* This module provides a minimal graphics facility. It provides a diff --git a/HTKLib/HGraf.null.c b/HTKLib/HGraf.null.c old mode 100644 new mode 100755 index 353bd34..4c57715 --- a/HTKLib/HGraf.null.c +++ b/HTKLib/HGraf.null.c @@ -3,23 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HGraf.null.c: HGraf (null implementation) */ +/* File: HGraf.null.c HGraf (null implementation) */ /* ----------------------------------------------------------- */ -char *hgraf_version = "!HVER!HGraf(null): 3.4.1 [CUED 12/03/09]"; +char *hgraf_version = "!HVER!HGraf(null): 3.5.0 [CUED 12/10/15]"; char *hgraf_vc_id = "$Id: HGraf.null.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" diff --git a/HTKLib/HGraf_WIN32.c b/HTKLib/HGraf_WIN32.c deleted file mode 100644 index 2ab79c4..0000000 --- a/HTKLib/HGraf_WIN32.c +++ /dev/null @@ -1,1199 +0,0 @@ -/* ----------------------------------------------------------- */ -/* */ -/* ___ */ -/* |_| | |_/ SPEECH */ -/* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ -/* */ -/* */ -/* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ -/* */ -/* Use of this software is governed by a License Agreement */ -/* ** See the file License for the Conditions of Use ** */ -/* ** This banner notice must not be removed ** */ -/* */ -/* ----------------------------------------------------------- */ -/* File: HGraf.win32.c: HGraf for Windows NT */ -/* ----------------------------------------------------------- */ -/* Win32 port Peter Silsbee */ - -char *hgraf_version = "!HVER!HGraf(NT): 3.4.1 [CUED 12/03/09]"; -char *hgraf_vc_id = "$Id: HGraf_WIN32.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; - -/* define CAPTURE_ALT to allow application to respond to Alt-key presses. */ -/* "Normal" windows application behavior is to allow the system to handle it. */ -#define CAPTURE_ALT - -#include "HShell.h" -#include "HMem.h" -#include "HMath.h" -#include "HGraf.h" - -#include -#include -#include -#include - -#define DEF_FONTSIZE 12 /* default font size */ -#define MAX_POINT 64 /* max number of points for polygons */ - -static MemHeap btnHeap; /* heap for HButton structures */ - -/* -------------------- Global Windows variables: ------------------------*/ - -static HWND theWindow = NULL; /* A handle to the graphics window */ -static HDC memDC = NULL; /* A handle to the memory device context */ -static HDC DCSaved; /* to store memDC when saving Metafile */ -static HBITMAP theBitmap; /* Internal representation of window contents */ - -/* -------------------- Objects that draw ----------------------- */ - -static HBRUSH theBrush = NULL; /* Used to fill solid areas */ -static HPEN thePen = NULL; /* Used to draw lines */ -static HPEN thinPen = NULL; /* Always has width 1, needed for outlining filled shapes */ -static HFONT theFont = NULL; /* Current font for text output */ - -/* ------------ stuff that application keeps track of ------------*/ - -static Boolean winCreated = FALSE; /* prevent duplicate windows */ -static Boolean WritingToMeta = FALSE; /* TRUE if spooling to a metafile */ -static unsigned char colours[MAX_COLOURS][3]; /* r,g,b */ -static unsigned char greys[MAX_GREYS]; -static int dispDEEP,dispWIDE,dispHIGH; -static RECT ClientRect; -static POINT winPoints[MAX_POINT]; - -static int LineWidth = 1; -static COLORREF CurrentColour = RGB(0,0,0); -static POINT MousePos; /* updated when a WM_MOUSEMOVE occurs */ - /* Win32 does not support direct querying of the mouse position */ -static char *FONTNAME = "Helvetica"; - -#ifdef CAPTURE_ALT -enum _AltState {ALT_UP,ALT_DOWN}; /* keep track of Alt key */ -typedef enum _AltState AltState; -static AltState AltKeyState = ALT_UP; -#endif - -#ifdef WIN32 -LRESULT CALLBACK HGWinFunc(HWND WindowHandle, unsigned int msg, - WPARAM wParam, LPARAM lParam); -/* Handle messages from Windows */ - -KeyType HGetKeyType(char c); -/* Utility routine to help decode key presses */ -#endif - - -/* --------------------------- Initialisation ---------------------- */ - -static ConfParam *cParm[MAXGLOBS]; /* config parameters */ -static int nParm = 0; -static int trace = 0; /* Just for consistency */ - -/* EXPORT->InitGraf: initialise memory and configuration parameters */ - -void InitGraf(void) -{ - int i; - - Register(hgraf_version,hgraf_vc_id); - nParm = GetConfig("HGRAF", TRUE, cParm, MAXGLOBS); - if (nParm>0){ - if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; - } -} - -/* EXPORT->HGetEvent: return next relevant event in event queue */ -HEventRec HGetEvent(Boolean anyEvent, void (*action)(void)) -{ - HEventRec r={0,0,0,0,0}; - static KeyType SavedKeyType; - MSG msg; - Boolean hasEvent = FALSE; - HWND WindowHandle = (anyEvent) ? NULL : theWindow; - - do { - if (action==NULL) { - GetMessage(&msg,WindowHandle,0,0); - hasEvent=TRUE; - } else { - hasEvent=PeekMessage(&msg,WindowHandle,0,0,PM_REMOVE); - } - if (hasEvent) { - TranslateMessage(&msg); - switch (msg.message) { - case WM_LBUTTONDOWN: - r.event = HMOUSEDOWN; - r.x = MousePos.x = LOWORD(msg.lParam); - r.y = MousePos.y = HIWORD(msg.lParam); - SetCapture(theWindow); - break; - case WM_LBUTTONUP: - r.event = HMOUSEUP; - r.x = MousePos.x = LOWORD(msg.lParam); - r.y = MousePos.y = HIWORD(msg.lParam); - ReleaseCapture(); - break; - case WM_MOUSEMOVE: - r.event = HMOUSEMOVE; - r.x = MousePos.x = LOWORD(msg.lParam); - r.y = MousePos.y = HIWORD(msg.lParam); - break; -#ifdef CAPTURE_ALT /* alt key events are normally intended for the system */ - case WM_SYSKEYDOWN: - r.c = (unsigned char) msg.wParam; - if (r.c == VK_MENU) { - r.ktype = COMMANDKEY; - r.event = HKEYPRESS; - r.x = MousePos.x; - r.y = MousePos.y; - AltKeyState = ALT_DOWN; - break; - } /* else fall through to regular keydown */ -#endif - case WM_KEYDOWN: - r.event = HKEYPRESS; - r.x = MousePos.x; - r.y = MousePos.y; - r.c = (unsigned char) msg.wParam; - SavedKeyType = r.ktype = HGetKeyType(r.c); - if ((r.c != VK_DELETE) && - (r.ktype != CONTROLKEY) && - (r.ktype != COMMANDKEY) && - (r.ktype != SHIFTKEY)) - hasEvent = FALSE; /* other keys will be processed by WM_CHAR */ - /* message which should arrive shortly */ - break; -#ifdef CAPTURE_ALT - case WM_SYSCHAR: -#endif - case WM_CHAR: - r.event = HKEYPRESS; - r.x = MousePos.x; - r.y = MousePos.y; - r.c = (unsigned char) msg.wParam; - r.ktype = SavedKeyType; //HGetKeyType(r.c); - break; -#ifdef CAPTURE_ALT - case WM_SYSKEYUP: - r.c = (unsigned char) msg.wParam; - if (r.c == VK_MENU) { - r.ktype = COMMANDKEY; - r.event = HKEYRELEASE; - r.x = MousePos.x; - r.y = MousePos.y; - AltKeyState = ALT_UP; - break; - } /* else fall through to regular keydown */ -#endif - case WM_KEYUP: - r.event = HKEYRELEASE; - r.x = MousePos.x; - r.y = MousePos.y; - r.c = (unsigned char) msg.wParam; - r.ktype = HGetKeyType(r.c); - break; - case WM_PAINT: - DispatchMessage(&msg); /* force Win32 to remove message from */ - /* queue even though application is dispatching this message. */ - /* Applications should actually be able to ignore HREDRAW events. */ - /* Fall through to next messages */ - case WM_SIZING: - case WM_MOVING: - case WM_EXITSIZEMOVE: - r.event = HREDRAW; - break; - default: - hasEvent = FALSE; - DispatchMessage(&msg); /* Win32 should handle other messages */ - } - } - else if (action != NULL) { - (*action)(); - } - } while (!hasEvent); - return r; -} - -/* EXPORT->HEventsPending: Return number of events pending */ -/* This doesn't seem to be supported in Win32. It is possible */ -/* to see if the queue is empty, but there is no way to see if */ -/* there is just one event or if there are many. This function */ -/* should probably return a Boolean value. Currently it returns 1 */ -/* if there are one or more events pending, and 0 if there are none. */ -int HEventsPending(void) -{ - MSG msg; - - if (PeekMessage(&msg,theWindow,0,0,PM_NOREMOVE)) - return 1; - return 0; -} - -/* EXPORT->HMousePos: return mouse pos in x, y, returns TRUE if the pointer - is on the window */ -/* Win32: We only get mouse position information when (a) there is an event */ -/* when the mouse is positioned over the window, or (b) when we are capturing */ -/* the mouse. We only capture the mouse when the mouse button is depressed. */ -/* Thus, the mouse position determined from this function may not be up to */ -/* date. This shouldn't be a problem since the "focus" is not determined by */ -/* mouse position in Win32. That is, keyboard events that take place when the */ -/* mouse is outside the window still really do belong to our window, if the */ -/* event has been directed to our application. */ - -Boolean HMousePos(int *x, int *y) -{ - *x = MousePos.x; - *y = MousePos.y; - return (Boolean) IsInRect(*x,*y,ClientRect.left,ClientRect.top, - ClientRect.right,ClientRect.bottom); -} - -/* EXPORT: IsInRect: return TRUE iff (x,y) is in the rectangle (x0,y0,x1,y1) */ -Boolean IsInRect(int x, int y, int x0, int y0, int x1, int y1) -{ - return (x >= x0 && x<=x1 && y >= y0 && y <= y1); -} - -/* ------------------------- Colour Handling ------------------------------ */ - -#define GSTP 4 - -static void InstallColours(void) -{ - int pixVal=0; - int c; - int step; - LOGPALETTE *pal; - HPALETTE hpal,OldPal; - HDC dc; - /* WHITE */ - colours[0][0] = 255; colours[0][1] = 255; colours[0][2] = 255; - /* YELLOW */ - colours[1][0] = 255; colours[1][1] = 255; colours[1][2] = 0; - /* ORANGE */ - colours[2][0] = 255; colours[2][1] = 128; colours[2][2] = 0; - /* RED */ - colours[3][0] = 255; colours[3][1] = 0; colours[3][2] = 0; - /* MAUVE */ - colours[4][0] = 196; colours[4][1] = 100; colours[4][2] = 255; - /* PURPLE */ - colours[5][0] = 128; colours[5][1] = 0; colours[5][2] = 128; - /* DARK_BLUE */ - colours[6][0] = 0; colours[6][1] = 0; colours[6][2] = 196; - /* LIGHT_BLUE (CYAN) */ - colours[7][0] = 0; colours[7][1] = 255; colours[7][2] = 255; - /* DARK_GREEN */ - colours[8][0] = 0; colours[8][1] = 128; colours[8][2] = 0; - /* LIGHT_GREEN */ - colours[9][0] = 0; colours[9][1] = 255; colours[9][2] = 0; - /* DARK_BROWN */ - colours[10][0] = 128;colours[10][1] = 64; colours[10][2] = 64; - /* LIGHT_BROWN */ - colours[11][0] = 196;colours[11][1] = 140;colours[11][2] = 140; - /* LIGHT_GREY */ - colours[12][0] = 196;colours[12][1] = 196;colours[12][2] = 196; - /* GREY */ - colours[13][0] = 128;colours[13][1] = 128;colours[13][2] = 128; - /* DARK_GREY */ - colours[14][0] = 64; colours[14][1] = 64; colours[14][2] = 64; - /* BLACK */ - colours[15][0] = 0; colours[15][1] = 0; colours[15][2] = 0; - - step = 256/MAX_GREYS; - for (c = 0; c < MAX_GREYS; c++, pixVal+= step){ - greys[c] = pixVal; - } - - /* if display is 8 bits or less, create a palette containing - the best match to our desired colors. If it is 16 bits or - greater, matching will be no problem. */ - if (dispDEEP <= 8){ - pal = (LOGPALETTE *) - New(&gcheap,2*sizeof(WORD) + (MAX_GREYS + MAX_COLOURS)*sizeof(PALETTEENTRY)); - pal->palVersion = 0x300; - pal->palNumEntries = MAX_GREYS + MAX_COLOURS; - - /* most important colors should be first in list. Black, White, - the rest of the colors, then the greys. */ - - pal->palPalEntry[0].peRed = pal->palPalEntry[0].peGreen = - pal->palPalEntry[0].peBlue = 0; - pal->palPalEntry[0].peFlags = 0; - pal->palPalEntry[1].peRed = pal->palPalEntry[1].peGreen = - pal->palPalEntry[1].peBlue = 255; - pal->palPalEntry[1].peFlags = 0; - for (c=2;cpalPalEntry[c].peRed = colours[c-1][0]; - pal->palPalEntry[c].peGreen = colours[c-1][1]; - pal->palPalEntry[c].peBlue = colours[c-1][2]; - pal->palPalEntry[c].peFlags = 0; - } - - for (c=0;cpalPalEntry[MAX_COLOURS+c].peRed = greys[c]; - pal->palPalEntry[MAX_COLOURS+c].peGreen = greys[c]; - pal->palPalEntry[MAX_COLOURS+c].peBlue = greys[c]; - pal->palPalEntry[MAX_COLOURS+c].peFlags = 0; - } - hpal = CreatePalette(pal); - - OldPal = SelectPalette(memDC,hpal,FALSE); - RealizePalette(memDC); - SelectPalette(memDC,OldPal,FALSE); - - dc = GetDC(theWindow); - OldPal = SelectPalette(dc,hpal,FALSE); - RealizePalette(dc); - SelectPalette(dc,OldPal,FALSE); - ReleaseDC(theWindow,dc); - DeleteObject(hpal); - } /* if (dispDEEP <= 8) */ -} - -/* EXPORT-> HSetColour: Set current colour to c */ -void HSetColour(HColour c) -{ - CurrentColour = RGB(colours[c][0],colours[c][1],colours[c][2]); - - if (theBrush) DeleteObject(theBrush); - theBrush = CreateSolidBrush(CurrentColour); - - if (thePen) DeleteObject(thePen); - thePen = CreatePen(PS_SOLID,LineWidth,CurrentColour); - - if (thinPen) DeleteObject(thinPen); - thinPen = CreatePen(PS_SOLID,1,CurrentColour); -} - -/* EXPORT-> HSetGrey: Set current colour to grey level g */ -void HSetGrey(int g) -{ - CurrentColour = RGB(greys[g],greys[g],greys[g]); - - if (theBrush) DeleteObject(theBrush); - theBrush = CreateSolidBrush(CurrentColour); - - if (thePen) DeleteObject(thePen); - thePen = CreatePen(PS_SOLID,LineWidth,CurrentColour); - - if (thinPen) DeleteObject(thinPen); - thinPen = CreatePen(PS_SOLID,1,CurrentColour); -} - -/* CheckCorners: make sure (x0,y0) is north-west of (x1,y1) */ -static void CheckCorners(int *x0, int *y0, int *x1, int *y1) -{ - int a,b,c,d; - - if (*x0<*x1) {a=*x0; c=*x1;} else {a=*x1; c=*x0;} - if (*y0<*y1) {b=*y0; d=*y1;} else {b=*y1; d=*y0;} - *x0=a; *y0=b; *x1=c; *y1=d; -} - - -/* EXPORT-> HDrawLines: Draw multiple lines */ -void HDrawLines(HPoint *points, int n) -{ - int i; - HDC dc; - HGDIOBJ oldObject; - - if (n>MAX_POINT) - HError(6815, "HDrawLines: can only specify up to %d points",MAX_POINT); - for(i=0; i HDrawRectangle: draw a rectangle */ -void HDrawRectangle(int x0, int y0, int x1, int y1) -{ - POINT points[5]; - HGDIOBJ oldObject = SelectObject(memDC,thePen); - HDC dc = GetDC(theWindow); - - CheckCorners(&x0,&y0,&x1,&y1); - points[0].x = x0; points[0].y = y0; - points[1].x = x0; points[1].y = y1; - points[2].x = x1; points[2].y = y1; - points[3].x = x1; points[3].y = y0; - points[4].x = x0; points[4].y = y0; - - Polyline(memDC, points, 5); - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,thePen); - Polyline(dc, points, 5); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HFillRectangle: fill a rectangle */ -void HFillRectangle(int x0, int y0, int x1, int y1) -{ - HDC dc = GetDC(theWindow); - HGDIOBJ oldBrush = SelectObject(memDC,theBrush); - HGDIOBJ oldPen = SelectObject(memDC,thinPen); - - CheckCorners(&x0,&y0,&x1,&y1); - - Rectangle(memDC,x0,y0,x1,y1); - - SelectObject(memDC,oldBrush); - SelectObject(memDC,oldPen); - - oldBrush = SelectObject(dc,theBrush); - oldPen = SelectObject(dc,thinPen); - Rectangle(dc,x0,y0,x1,y1); - SelectObject(dc,oldBrush); - SelectObject(dc,oldPen); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HDrawLine: Draw one line */ -void HDrawLine(int x0, int y0, int x1, int y1) -{ - HDC dc = GetDC(theWindow); - HGDIOBJ oldObject = SelectObject(memDC,thePen); - - MoveToEx(memDC,x0,y0,NULL); - LineTo(memDC,x1,y1); - - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,thePen); - MoveToEx(dc,x0,y0,NULL); - LineTo(dc,x1,y1); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HFillPolygon: fill a convex polygon */ -void HFillPolygon(HPoint *points, int n) -{ - int i; - HDC dc; - HGDIOBJ oldPen; - HGDIOBJ oldBrush; - - if (n>MAX_POINT) - HError(6815, "HFillPolygon: can only specify up to %d points",MAX_POINT); - for(i=0; i HDrawArc: Draw arc from stAngle thru arcAngle degrees */ -void HDrawArc(int x0, int y0, int x1, int y1, int stAngle, int arcAngle) -{ - int Center_x = (x0+x1)/2; - int Center_y = (y0+y1)/2; - int StartArc_x, StartArc_y; - int EndArc_x, EndArc_y; - int radius; /* major axis */ - double startAngle, endAngle,convrt = PI/180; /* degrees to radians */ - HGDIOBJ oldObject = SelectObject(memDC,thePen); - HDC dc = GetDC(theWindow); - - CheckCorners(&x0,&y0,&x1,&y1); - - startAngle = stAngle *convrt; - endAngle=(arcAngle+stAngle)*convrt; - - radius = (((x1-x0) > (y1-y0)) ? x1-x0 : y1-y0)/2; - StartArc_x = Center_x + (int) (radius * cos((double) startAngle)); - StartArc_y = Center_y - (int) (radius * sin((double) startAngle)); - EndArc_x = Center_x + (int) (radius * cos((double) endAngle)); - EndArc_y = Center_y - (int) (radius * sin((double) endAngle)); - - Arc(memDC,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,thePen); - Arc(dc,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HFillArc: Draw filled arc from stAngle thru arcAngle degrees */ -void HFillArc(int x0,int y0,int x1,int y1,int stAngle,int arcAngle) -{ - int radius; - int Center_x = (x0+x1)/2; - int Center_y = (y0+y1)/2; - int StartArc_x,StartArc_y; - int EndArc_x,EndArc_y; - HGDIOBJ oldBrush = SelectObject(memDC,theBrush); - HGDIOBJ oldPen = SelectObject(memDC,thinPen); - HDC dc = GetDC(theWindow); - double startAngle, endAngle,convrt = PI/180; /* degrees to radians */ - - CheckCorners(&x0,&y0,&x1,&y1); - - /* calculate point locations */ - - startAngle = stAngle*convrt; - endAngle = (stAngle+arcAngle)*convrt; - - radius = (((x1-x0) > (y1-y0)) ? x1-x0 : y1-y0)/2; - StartArc_x = Center_x + (int) (radius * cos((double) startAngle)); - StartArc_y = Center_y - (int) (radius * sin((double) startAngle)); - EndArc_x = Center_x + (int) (radius * cos((double) endAngle)); - EndArc_y = Center_y - (int) (radius * sin((double) endAngle)); - - Pie(memDC,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - - SelectObject(memDC,oldBrush); - SelectObject(memDC,oldPen); - - oldBrush = SelectObject(dc,theBrush); - oldPen = SelectObject(dc,thinPen); - Pie(dc,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - SelectObject(dc,oldBrush); - SelectObject(dc,oldPen); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HPrintf: works as printf on the graphics window at (x,y) */ -void HPrintf(int x, int y, char *format, ...) -{ - va_list arg; - char s[256]; - HGDIOBJ oldObject = SelectObject(memDC,theFont); - HDC dc = GetDC(theWindow); - - SetTextColor(memDC,CurrentColour); - va_start(arg, format); - vsprintf(s, format, arg); - - TextOut(memDC,x,y,s,strlen(s)); - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,theFont); - TextOut(dc,x,y,s,strlen(s)); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> copy rectangular area of the drawable */ -void HCopyArea(int srcx, int srcy, int width, int height, int destx, int desty) -{ - HDC dc = GetDC(theWindow); - BitBlt(memDC,destx,desty,width,height,memDC,srcx,srcy,SRCCOPY); - BitBlt(dc,destx,desty,width,height,memDC,srcx,srcy,SRCCOPY); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HPlotVector: plot vector v in given rectangle */ -void HPlotVector(int x0, int y0, int x1, int y1, Vector v, int st, int en, float ymax, float ymin) -{ - float yScale, yOffset, xInc, x; - int xOld, yOld, ix, iy, i; - - if (st >= en || st < 1 || en > VectorSize(v)) - HError(6815, "HPlotVector: Plot indices %d -> %d out of range", st, en); - x = (x1 - x0 - 1); xInc = x/(en - st); - yScale = (y1 - y0)/(ymin - ymax); - yOffset = y0 - ymax*yScale; - x = x0; xOld = x; yOld = v[st]*yScale + yOffset; - for (i = st+1; i <= en; i++){ - x += xInc; ix = x; - iy = v[i]*yScale + yOffset; - HDrawLine(xOld,yOld,ix,iy); - xOld = ix; yOld = iy; - } -} - -/* ----------------------------- Global Settings ------------------------------- */ - -/* EXPORT-> HSetFontSize: Set font size in points, 0 selects the default font */ -void HSetFontSize(int size) -{ - int FontSize = (size > 0) ? size : DEF_FONTSIZE; - - if (theFont) DeleteObject(theFont); - theFont = CreateFont(FontSize, - 0,0,0,FW_NORMAL, - 0,0,0,ANSI_CHARSET, - OUT_DEFAULT_PRECIS, - CLIP_DEFAULT_PRECIS, - DEFAULT_QUALITY, - DEFAULT_PITCH | FF_SWISS, - FONTNAME); -} - -/* EXPORT-> HSetLineWidth: set the line width */ -void HSetLineWidth(int w) -{ - LineWidth = w; - - if (thePen) DeleteObject(thePen); - thePen = CreatePen(PS_SOLID,LineWidth,CurrentColour); -} - -/* EXPORT-> HSetXMode: Set current transfer mode */ -void HSetXMode(XferMode m) -{ - HDC dc = GetDC(theWindow); - switch(m) { - case GCOPY: - SetROP2(memDC,R2_COPYPEN); - SetROP2(dc,R2_COPYPEN); - break; - case GOR: - SetROP2(memDC,R2_MERGEPEN); - SetROP2(dc,R2_MERGEPEN); - break; - case GXOR: - SetROP2(memDC,R2_XORPEN); - SetROP2(dc,R2_XORPEN); - break; - case GINVERT: - SetROP2(memDC,R2_NOT); - SetROP2(dc,R2_NOT); - break; - default: /* GCOPY */ - SetROP2(memDC,R2_COPYPEN); - SetROP2(dc,R2_COPYPEN); - break; - } - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> CentreX: return position at which the the h-center of str will be at x */ -int CentreX(int x, char *str) -{ - SIZE size; - - GetTextExtentPoint32(memDC,str,strlen(str),&size); - return (x-size.cx/2); -} - -/* EXPORT-> CentreY: return position at which the the v-center of str will be at y */ -int CentreY(int y, char *str) -{ - HDC dc; - HGDIOBJ obj; - TEXTMETRIC tm; - int pos; - - dc = GetDC(theWindow); - obj = SelectObject(dc,theFont); - GetTextMetrics(dc,&tm); - pos = (y - ((tm.tmAscent + tm.tmDescent)/2) + tm.tmAscent); - SelectObject(dc,obj); - return pos; -} - -/* EXPORT HTextWidth: return the width of s in pixels */ -int HTextWidth(char *str) -{ - SIZE size; - - GetTextExtentPoint32(memDC,str,strlen(str),&size); - return (size.cx); -} - -/* EXPORT HTextHeight: return the height of s in pixels */ -int HTextHeight(char *str) -{ - SIZE size; - - GetTextExtentPoint32(memDC,str,strlen(str),&size); - return (size.cy); -} - -/* --------------------------- Misc/Button Routines -----------------------------*/ - -/* EXPORT->HDrawImage: draw grey scale image stored in p */ -void HDrawImage(unsigned char *p, int x, int y, int width, int height) -{ - HDC tdc = GetDC(theWindow); - HDC dc = CreateCompatibleDC(memDC); - HBITMAP bm = CreateCompatibleBitmap(tdc,width,height); - HGDIOBJ OldObject; - - char *data = New(&gcheap,sizeof(BITMAPINFOHEADER) + - sizeof(RGBQUAD)*MAX_GREYS); - BITMAPINFOHEADER *BitmapHeader = (BITMAPINFOHEADER *) data; - RGBQUAD *ColorTable = (RGBQUAD *) (data + sizeof(BITMAPINFOHEADER)); - BITMAPINFO *Info = (BITMAPINFO *) data; - - int i,j; - - /* if the length of the scan line is not a */ - /* multiple of four, the bitmap must be reshaped. */ - /* SetDIBits() expects scan lines to start on word boundaries. */ - - int ScanLineLen = 4*(1+(width-1)/4); - unsigned char *reshaped = NULL; - - BitmapHeader->biSize = sizeof(BITMAPINFOHEADER); - BitmapHeader->biWidth = width; - BitmapHeader->biHeight = -height; - BitmapHeader->biPlanes = 1; - BitmapHeader->biBitCount = 8; - BitmapHeader->biCompression = 0; - BitmapHeader->biSizeImage = 0; - BitmapHeader->biXPelsPerMeter = 0; - BitmapHeader->biYPelsPerMeter = 0; - BitmapHeader->biClrUsed = MAX_GREYS; - BitmapHeader->biClrImportant = MAX_GREYS; - for (i=0;iHFlush: flush any pending draw operations */ -void HFlush(void) -{ -} - -/* EXPORT-> HSpoolGraf: start saving an image of window in fname */ -/* must be balanced by a call to HEndSpoolGraf() */ -void HSpoolGraf(char *fname) -{ - int wmm,hmm; /* width and height in millimeters */ - int wpx,hpx; /* width and height in pixels */ - char *description = "Created by HGraf"; - RECT r; - HDC dc = GetDC(theWindow); - int er; - - wmm = GetDeviceCaps(dc, HORZSIZE); - hmm = GetDeviceCaps(dc, VERTSIZE); - wpx = GetDeviceCaps(dc, HORZRES); - hpx = GetDeviceCaps(dc, VERTRES); - - r.left = (ClientRect.left * wmm * 100)/wpx; - r.top = (ClientRect.top * hmm * 100)/hpx; - r.right = (ClientRect.right * wmm * 100)/wpx; - r.bottom = (ClientRect.bottom * hmm * 100)/hpx; - - DCSaved = memDC; - memDC = CreateEnhMetaFile(dc,fname,&r,description); - er = GetLastError(); - ReleaseDC(theWindow,dc); - WritingToMeta = TRUE; -} - -/* EXPORT-> HEndSpoolGraf: close file opened in HSpoolGraf() */ -/* It is recommended to redraw the window after this call. */ -void HEndSpoolGraf() -{ - WritingToMeta = FALSE; - CloseEnhMetaFile(memDC); - memDC = DCSaved; -} - - -/* EXPORT->HDumpGraf: dump a BMP image of current display into fname */ -void HDumpGraf(char *fname) -{ - BITMAPFILEHEADER FileHeader; - BITMAPINFOHEADER BitmapHeader; - BITMAPINFO *Info; - int ColorTableSize; - int ImageSize; - FILE *fp; - char *img; - HDC dc = GetDC(theWindow); - HBITMAP temp = CreateCompatibleBitmap(memDC,1,1); - - SelectObject(memDC,temp); - - /* retrieve information about the bitmap */ - BitmapHeader.biSize = sizeof(BITMAPINFOHEADER); - BitmapHeader.biBitCount = 0; - GetDIBits(memDC,theBitmap,0,0,NULL,&BitmapHeader,BI_RGB); - - switch (BitmapHeader.biCompression) { - case BI_RGB: - if (BitmapHeader.biBitCount > 8) { - ColorTableSize = 0; - } - else { - ColorTableSize = BitmapHeader.biClrUsed*sizeof(RGBQUAD); - } - break; - case BI_RLE8: - case BI_RLE4: - ColorTableSize = BitmapHeader.biClrUsed*sizeof(RGBQUAD); - break; - case BI_BITFIELDS: - ColorTableSize = 3*sizeof(DWORD); - } - - Info = (BITMAPINFO *) New(&gcheap,sizeof(BITMAPINFOHEADER) + ColorTableSize); - memcpy(Info,&BitmapHeader,sizeof(BITMAPINFOHEADER)); - - ImageSize = BitmapHeader.biSizeImage; - img = New(&gcheap,ImageSize); - - GetDIBits(memDC,theBitmap,0,ClientRect.bottom,img,Info,BI_RGB); - - FileHeader.bfType = 0x4d42; /* 'BM' */ - FileHeader.bfSize = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + - ImageSize + ColorTableSize; - FileHeader.bfReserved1 = FileHeader.bfReserved2 = 0; - FileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + ColorTableSize; - - fp = fopen(fname,"wb"); - fwrite(&FileHeader,1,sizeof(BITMAPFILEHEADER),fp); - fwrite(Info,1,sizeof(BITMAPINFOHEADER) + ColorTableSize,fp); - fwrite(img,1,ImageSize,fp); - fclose(fp); - - SelectObject(memDC,theBitmap); - DeleteObject(temp); - Dispose(&gcheap,Info); - Dispose(&gcheap,img); -} - -#define BTN_WAIT 200 /* 200 milliseconds minimum button press */ -#define BTN_LINE_WIDTH 1 /* the line width for button drawing */ - -/* EXPORT->CreateHButton: create a button object with the specified parameters */ -HButton *CreateHButton(HButton *btnlst, ButtonId btnid, int x, int y, int w, - int h, char *str, HColour fg, HColour bg, void (*action)(void)) -{ - HButton *btn, *btnptr; - - btn = New(&btnHeap, sizeof(HButton)); - /* initialise the fields of the structure */ - btn->id = btnid; - btn->x = x; btn->y = y; btn->w = w; btn->h = h; - btn->str = str; - btn->fg = fg; btn->bg = bg; - btn->lit = FALSE; btn->active = TRUE; btn->toggle = FALSE; - btn->next = NULL; - /* append it to the end of the list if the list already exists */ - if (btnlst!=NULL){ - btnptr = btnlst; - while (btnptr->next != NULL) btnptr = btnptr->next; - btnptr->next = btn; - } - btn->action = action; - /* return ptr to the newly created button */ - return btn; -} - -/* EXPORT->RedrawHButton: readraw a single button object */ -void RedrawHButton(HButton *btn) -{ - int pad = 2; - int x, y, w, h, r, s, pos; - HPoint poly[9], shad[4]; - char sbuf[256], nullchar = '\0'; - - x = btn->x; y=btn->y; w=btn->w; h=btn->h; r=3; s=1; - - /* set up the polygon */ - poly[0].x = x; poly[0].y = y+r; - poly[1].x = x; poly[1].y = y+h-r; - poly[2].x = x+r; poly[2].y = y+h; - poly[3].x = x+w-r; poly[3].y = y+h; - poly[4].x = x+w; poly[4].y = y+h-r; - poly[5].x = x+w; poly[5].y = y+r; - poly[6].x = x+w-r; poly[6].y = y; - poly[7].x = x+r; poly[7].y = y; - poly[8].x = x; poly[8].y = y+r; - /* set up the extra lines for the shadow */ - shad[0].x = x+r+s; shad[0].y = y+h+s; - shad[1].x = x+w-r+s; shad[1].y = y+h+s; - shad[2].x = x+w+s; shad[2].y = y+h-r+s; - shad[3].x = x+w+s; shad[3].y = y+r+s; - - if (btn->lit) - HSetColour(btn->fg); - else - HSetColour(btn->bg); - HFillPolygon(poly, 9); - HSetColour(btn->fg); - HDrawLines(poly, 9); - HDrawLines(shad, 4); - if (btn->active) - if (btn->lit) - HSetColour(btn->bg); - else - HSetColour(btn->fg); - else - HSetGrey(30); - strcpy(sbuf, btn->str); - pos = strlen(sbuf); - while(HTextWidth(sbuf) > (w - 2*pad)) - sbuf[--pos]=nullchar; - HPrintf(CentreX(x+w/2, sbuf), CentreY(y+h/2, sbuf), "%s", sbuf); -} - -/* EXPORT->RedrawHButtonList: redraw the whole list of buttons */ -void RedrawHButtonList(HButton *btnlst) -{ - HButton *btnptr; - - HSetLineWidth(BTN_LINE_WIDTH); - for (btnptr=btnlst; btnptr!=NULL; btnptr=btnptr->next) - RedrawHButton(btnptr); - -} - -/* EXPORT->FindButton: find button given name */ -HButton *FindButton(HButton *btnlst, ButtonId key) -{ - HButton *btnptr; - - for (btnptr=btnlst; btnptr!=NULL; btnptr=btnptr->next) - if (btnptr->id==key) - return btnptr; - return NULL; -} - -/* EXPORT->SetActive: set active field in button list */ -void SetActive(HButton *btnlst, Boolean active) -{ - HButton *btnptr; - - for (btnptr=btnlst; btnptr!=NULL; btnptr=btnptr->next) - btnptr->active = active; -} - -/* EXPORT->CheckButtonList: find within which button the point(x,y) is */ -HButton *CheckButtonList(HButton *btnlst, int x, int y) -{ - HButton *btn; - - for (btn=btnlst; btn!=NULL; btn=btn->next) - if (IsInRect(x, y, btn->x, btn->y, btn->x + btn->w, btn->y + btn->h) && btn->active) - return btn; - return NULL; - -} - -/* EXPORT->SetButtonLit: show button press */ -void SetButtonLit(HButton *btn, Boolean lit) -{ - if (btn->lit != lit){ - btn->lit = lit; - RedrawHButton(btn); - } -} - -/* EXPORT->TrackButtons: tracks the buttons until the mouse button is released */ -ButtonId TrackButtons(HButton *btnlist, HEventRec hev) -{ - HButton *pressed, *released; - Boolean done; - - pressed = CheckButtonList(btnlist, hev.x, hev.y); - if (pressed != NULL){ - SetButtonLit(pressed, TRUE); - done = FALSE; -#ifdef USE_TIMER - HFlush(); Timer(BTN_WAIT); -#endif - do { - hev = HGetEvent(TRUE, pressed->action); - done = (hev.event==HMOUSEUP); - } while (!done); - released = CheckButtonList(btnlist, hev.x, hev.y); - SetButtonLit(pressed, FALSE); - if ( pressed == released) - return pressed->id; - } - return 0; -} - -static void InitGlobals(void) -{ - dispWIDE = GetSystemMetrics(SM_CXSCREEN); - dispHIGH = GetSystemMetrics(SM_CYSCREEN); - dispDEEP = GetDeviceCaps(memDC,BITSPIXEL); -} - - -/* EXPORT-> MakeXGraf: Create and open window, initialization */ -void MakeXGraf(char *wname, int x, int y, int w, int h, int bw) - /* WIN32: bw is ignored. */ -{ - WNDCLASS WindowClass; - char sbuf[256], *hgraf = "HGraf"; - HDC dc; - - if (winCreated) - HError(6870, "MakeXGraf: Attempt to recreate the graphics window"); - - WindowClass.hInstance = GetModuleHandle(NULL); - WindowClass.lpszClassName = hgraf; - WindowClass.lpfnWndProc = HGWinFunc; - WindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; - WindowClass.hIcon = NULL; - WindowClass.hCursor = LoadCursor(NULL,IDC_ARROW); - WindowClass.lpszMenuName = NULL; - WindowClass.cbClsExtra = 0; - WindowClass.cbWndExtra = 0; - WindowClass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); - - RegisterClass(&WindowClass); - - strcpy(sbuf, hgraf); strcat(sbuf, ": "); strcat(sbuf, wname); - - theWindow = - CreateWindow(hgraf, sbuf, WS_OVERLAPPEDWINDOW | WS_VISIBLE, - x,y, w,h, HWND_DESKTOP, NULL, - WindowClass.hInstance, NULL); - - /* adjust window size so that the client rectangle is the size requested */ - /* by the caller of MakeXGraf() --- Win32 interprets w and h as the dimensions */ - /* of the overall window. */ - GetClientRect(theWindow,&ClientRect); - MoveWindow(theWindow,x,y,w+w-ClientRect.right,h+h-ClientRect.bottom,TRUE); - GetClientRect(theWindow,&ClientRect); - - /* Obtain and initialize device contexts */ - dc = GetDC(theWindow); - memDC = CreateCompatibleDC(dc); - SetArcDirection(memDC,AD_COUNTERCLOCKWISE); - SetArcDirection(dc,AD_COUNTERCLOCKWISE); - SetPolyFillMode(memDC,WINDING); - SetPolyFillMode(memDC,WINDING); - SetTextAlign(memDC,TA_BASELINE | TA_LEFT); - SetTextAlign(dc,TA_BASELINE | TA_LEFT); - SetBkMode(memDC,TRANSPARENT); - SetBkMode(dc,TRANSPARENT); - theBitmap = CreateCompatibleBitmap(dc,w,h); - SelectObject(memDC,theBitmap); - ReleaseDC(theWindow,dc); - CreateHeap(&btnHeap, "Button heap", MHEAP, sizeof(HButton), 1.0, 100, 100); - - InitGlobals(); - InstallColours(); - - winCreated = TRUE; - HSetColour(WHITE); - HFillRectangle(0,0,ClientRect.right,ClientRect.bottom); -} - -/* EXPORT->TermHGraf: Terminate Graphics (also called via at_exit) */ -void TermHGraf() -{ - if (theBrush) DeleteObject(theBrush); - if (thePen) DeleteObject(thePen); - if (thinPen) DeleteObject(thinPen); - if (theFont) DeleteObject(theFont); - if (theBitmap) DeleteObject(theBitmap); - - DeleteHeap(&btnHeap); - DestroyWindow(theWindow); -} - -/********** Win32 specific functions */ - -/* Called by the window manager */ -LRESULT CALLBACK HGWinFunc(HWND WindowHandle, unsigned int msg, WPARAM wParam, LPARAM lParam) -{ - HDC dc; - PAINTSTRUCT ps; - - switch (msg) { - case WM_SIZING: /* for some reason we have to repaint when the window moves */ - case WM_MOVING: - InvalidateRect(theWindow,&ClientRect,FALSE); - return TRUE; - case WM_EXITSIZEMOVE: - InvalidateRect(theWindow,&ClientRect,FALSE); - return 0; - case WM_PAINT: - dc = BeginPaint(theWindow,&ps); - BitBlt(dc,0,0,ClientRect.right,ClientRect.bottom,memDC,0,0,SRCCOPY); - EndPaint(theWindow,&ps); - return 0; - default: - return DefWindowProc(WindowHandle, msg, wParam, lParam); - } -} - -KeyType HGetKeyType(char c) -{ - switch ((int) c) { - case VK_ESCAPE: - return ESCKEY; - case VK_DELETE: - case VK_BACK: - return DELKEY; - case VK_RETURN: - return ENTERKEY; - case VK_CONTROL: - return CONTROLKEY; - case VK_MENU: - return COMMANDKEY; - case VK_SHIFT: - return SHIFTKEY; - default: - return NORMALKEY; - } -} - - -/* ------------------------ End of HGraf.win32.c ------------------------- */ diff --git a/HTKLib/HLM.c b/HTKLib/HLM.c old mode 100644 new mode 100755 index ed93046..7b721ae --- a/HTKLib/HLM.c +++ b/HTKLib/HLM.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLM.c language model handling */ +/* File: HLM.c language model handling */ /* ----------------------------------------------------------- */ -char *hlm_version = "!HVER!HLM: 3.4.1 [CUED 12/03/09]"; +char *hlm_version = "!HVER!HLM: 3.5.0 [CUED 12/10/15]"; char *hlm_vc_id = "$Id: HLM.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" @@ -232,12 +235,11 @@ static int WriteNGrams(FILE *file,NGramLM *nglm,int n,float scale) SEntry *se; LogFloat prob; lmId ndx[NSIZE+1]; - int c,i,j,k,N,g=1,hash,neCnt,total; + int c,i,j,k,g=1,hash,neCnt,total; if (trace&T_TIO) printf("\nn%1d ",n),fflush(stdout); fprintf(file,"\n\\%d-grams:\n",n); - N=VectorSize(nglm->unigrams); neTab=(NEntry **) New(&gstack,sizeof(NEntry*)*nglm->counts[0]); @@ -376,7 +378,7 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) lmId ndx[NSIZE+1]; NEntry *ne,*le=NULL; int i, g, idx, total; - unsigned char size, flags=0; + unsigned char flags=0; cse = (SEntry *) New(nglm->heap,count*sizeof(SEntry)); for (i=1;i<=NSIZE;i++) ndx[i]=0; @@ -389,7 +391,7 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) PROGRESS(g); if (bin) { - size = GetCh (&source); + GetCh (&source); flags = GetCh (&source); } @@ -401,7 +403,7 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) if (wdid->aux != NULL) HError(8150,"ReadNGrams: Duplicate word (%s) in 1-gram list", wdid->name); - wdid->aux = (Ptr)g; + wdid->aux = (Ptr)(unsigned long int)g; nglm->wdlist[g] = wdid; nglm->unigrams[g] = prob; ndx[0]=g; @@ -411,20 +413,20 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) if (flags & BIN_ARPA_INT_LMID) { unsigned int ui; if (!ReadInt (&source, (int *) &ui, 1, bin)) - HError (9999, "ReadNGrams: failed reading int lm word id"); + HError (8113, "ReadNGrams: failed reading int lm word id"); idx = ui; } else { unsigned short us; if (!ReadShort (&source, (short *) &us, 1, bin)) - HError (9999, "ReadNGrams: failed reading short lm word id at"); + HError (8113, "ReadNGrams: failed reading short lm word id at"); idx = us; } } else { ReadLMWord(wd); wdid = GetLabId(wd, FALSE); - idx = (wdid==NULL?0:(int)wdid->aux); + idx = (wdid==NULL?0:(unsigned long int)wdid->aux); } if (idx<1 || idx>nglm->vocSize) HError(8150,"ReadNGrams: Unseen word (%s) in %dGram",wd,n); @@ -517,7 +519,7 @@ static void ReadBoNGram(LModel *lm,char *fn) ngBin[j] = TRUE; break; default: - HError (9999, "ReadARPALM: unknown ngram format type '%c'", ngFmtCh); + HError (8191, "ReadARPALM: unknown ngram format type '%c'", ngFmtCh); } counts[j]=k; } @@ -670,9 +672,9 @@ static void ReadMatBigram(LModel *lm,char *fn) if (p>P) HError(8150,"ReadMatBigram: More rows than columns in bigram %s",fn); id=GetLabId(buf,TRUE); - if ((int)id->aux != 0) + if ((unsigned long int)id->aux != 0) HError(8150,"ReadMatBigram: Duplicated name %s in bigram %s",buf,fn); - id->aux = (Ptr) p; + id->aux = (Ptr)(unsigned long int)p; matbi->wdlist[p] = id; SkipWhiteSpace(&source); if (ReadRow(matbi->bigMat[p])!=P) @@ -764,12 +766,12 @@ float GetLMProb(LModel *lm, LabId prid[NSIZE], LabId wdid) switch (lm->type) { case boNGram: - word = (int)wdid->aux; + word = (int)(unsigned long int)wdid->aux; if (word==0 || word>lm->data.ngram->vocSize) return(LZERO); for (s=-1,i=0;iaux, cpid[i]=prid[i], s=i; + ndx[i]=(int)(unsigned long int)prid[i]->aux, cpid[i]=prid[i], s=i; else ndx[i]=0, cpid[i]=NULL; @@ -800,8 +802,8 @@ float GetLMProb(LModel *lm, LabId prid[NSIZE], LabId wdid) return(bowt+GetLMProb(lm,cpid,wdid)); /* else recurse */ break; case matBigram: - p=(int) prid[0]->aux; - q=(int) wdid->aux; + p=(int)(unsigned long int)prid[0]->aux; + q=(int)(unsigned long int)wdid->aux; return(lm->data.matbi->bigMat[p][q]); default: prob=LZERO; @@ -914,10 +916,10 @@ LogFloat LMTrans (LModel *lm, LMState src, LabId wdid, LMState *dest) assert (lm->type == boNGram); nglm = lm->data.ngram; - word = (int) wdid->aux; + word = (unsigned long int) wdid->aux; if (word==0 || word>lm->data.ngram->vocSize) { - HError (-9999, "word %d not in LM wordlist", word); + HError (-8120, "word %d not in LM wordlist", word); *dest = NULL; return (LZERO); } diff --git a/HTKLib/HLM.h b/HTKLib/HLM.h old mode 100644 new mode 100755 index 29457c1..99c94b5 --- a/HTKLib/HLM.h +++ b/HTKLib/HLM.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLM.h language model handling */ +/* File: HLM.h language model handling */ /* ----------------------------------------------------------- */ -/* !HVER!HLM: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HLM: 3.5.0 [CUED 12/10/15] */ #ifndef _HLM_H_ #define _HLM_H_ @@ -43,9 +46,12 @@ extern "C" { typedef enum { boNGram=1, matBigram, hlmModel } LMType; -#define MAX_LMID 65534 /* Max number of words */ -typedef unsigned short lmId; /* Type used by lm to id words 1..MAX_LMID */ -typedef unsigned short lmCnt; /* Type used by lm to count wds 0..MAX_LMID */ +/* #define MAX_LMID 65534 /\* Max number of words *\/ */ +#define MAX_LMID 2147483647 /* Max number of words */ +/* typedef unsigned short lmId; /\* Type used by lm to id words 1..MAX_LMID *\/ */ +/* typedef unsigned short lmCnt; /\* Type used by lm to count wds 0..MAX_LMID *\/ */ +typedef unsigned int lmId; /* Type used by lm to id words 1..MAX_LMID */ +typedef unsigned int lmCnt; /* Type used by lm to count wds 0..MAX_LMID */ #define NSIZE 4 /* Max length of ngram 2==bigram etc */ diff --git a/HTKLib/HLabel.c b/HTKLib/HLabel.c old mode 100644 new mode 100755 index 7299d66..36b73d3 --- a/HTKLib/HLabel.c +++ b/HTKLib/HLabel.c @@ -3,24 +3,37 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLabel.c: Speech Label File Input */ +/* File: HLabel.c Speech label file input */ /* ----------------------------------------------------------- */ -char *hlabel_version = "!HVER!HLabel: 3.4.1 [CUED 12/03/09]"; -char *hlabel_vc_id = "$Id: HLabel.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; +char *hlabel_version = "!HVER!HLabel: 3.5.0 [CUED 12/10/15]"; +char *hlabel_vc_id = "$Id: HLabel.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -197,9 +210,11 @@ LabId GetLabId(char *name, Boolean insert) int h; NameCell *p; + if(!name) HError(6570,"GetLabId: no label given"); ++numAccesses; ++numTests; if ((trace&T_HASH) && numAccesses%100 == 0) PrintNameTabStats(); + h = Hash(name); p = hashtab[h]; if (p==NULL) { /* special case - this slot empty */ if (insert) @@ -1017,6 +1032,22 @@ static void LoadSCRIBELabels(MemHeap *x, Transcription *t, Source *src) /* ----------------- TriPhone Stripping ------------------- */ +/* EXPORT->FTriStrip: Remove contexts of form A- and +B from s */ +void FTriStrip(char *s) +{ + char buf[100],*p; + + if ((p = strchr(s,'-')) == NULL) p = s; else ++p; + strcpy(buf,p); + if ((p = strrchr(buf,'+')) != NULL) + *p = '\0'; + if ((p = strrchr(buf,'^')) != NULL) + *p = '\0'; + else if ((p = strrchr(buf,';')) != NULL) + *p = '\0'; + strcpy(s,buf); +} + /* EXPORT->TriStrip: Remove contexts of form A- and +B from s */ void TriStrip(char *s) { @@ -1029,6 +1060,26 @@ void TriStrip(char *s) strcpy(s,buf); } +/* cz277 - ANN */ +/* phone name in str, state index in stateIdx */ +char *ExtractState(char *src, char *dst, int *stateIdx) { + char *ptr; + + strcpy(dst, src); + *stateIdx = 0; + if ((ptr = strchr(dst, ']')) == NULL) { + return dst; + } + *ptr = '\0'; + if ((ptr = strchr(dst, '[')) == NULL) { + return NULL; + } + *ptr = '\0'; + *stateIdx = atoi(++ptr); + + return dst; +} + /* EXPORT->LTriStrip: enable triphone stripping */ void LTriStrip(Boolean enab) { diff --git a/HTKLib/HLabel.h b/HTKLib/HLabel.h old mode 100644 new mode 100755 index 563ace6..d63fcb1 --- a/HTKLib/HLabel.h +++ b/HTKLib/HLabel.h @@ -3,24 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLabel.h: Speech Label File Input */ +/* File: HLabel.h Speech Label File Input */ /* ----------------------------------------------------------- */ -/* !HVER!HLabel: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HLabel: 3.5.0 [CUED 12/10/15] */ /* This module allows an internal data structure representing a @@ -291,6 +303,14 @@ void TriStrip(char *s); Remove contexts of form A- and +B from s */ +/* cz277 - ANN */ +char *ExtractState(char *src, char *dst, int *stateIdx); + +void FTriStrip(char *s); +/* + Remove contexts of form A- and +B from s and also items after : and ^ +*/ + void LTriStrip(Boolean enab); /* When enab is set, all triphone labels with the form A-B+C diff --git a/HTKLib/HLat.c b/HTKLib/HLat.c old mode 100644 new mode 100755 index b2b3857..f8fdff2 --- a/HTKLib/HLat.c +++ b/HTKLib/HLat.c @@ -3,38 +3,42 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Gunnar Evermann */ /* */ -/* author: Gunnar Evermann */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* 2001-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLat.c: Lattice Manipulation */ +/* File: HLat.c: Lattice manipulation */ /* ----------------------------------------------------------- */ -/*#### todo: +/* TODO: - implement lattice oracle WER calculation - allow batch processing? */ -char *hlat_version = "!HVER!HLat: 3.4.1 [CUED 12/03/09]"; +char *hlat_version = "!HVER!HLat: 3.5.0 [CUED 12/10/15]"; char *hlat_vc_id = "$Id: HLat.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; @@ -45,6 +49,7 @@ char *hlat_vc_id = "$Id: HLat.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -79,8 +84,9 @@ static Boolean compressMerge = TRUE; /* compressing lattice scores when merging static char *llfExt = "LLF"; /* extension for LLF lattice files */ +#ifndef NO_LAT_LM static MemHeap slaHeap, slnHeap;/* MHEAPs for use in LatExpand() */ - +#endif /* --------------------------- Prototypes ---------------------------- */ @@ -197,7 +203,6 @@ Boolean ScanLLF (LLFInfo *llf, char *fn, char *ext) return FALSE; } - Lattice *GetLattice (char *fn, char *path, char *ext, /* arguments of ReadLattice() below */ MemHeap *heap, Vocab *voc, @@ -565,6 +570,60 @@ LogDouble LatForwBackw (Lattice *lat, LatFBType type) return score; } +/* sxz20 */ +/* LatMakeLogical: replaces physical HMM names by the corresponding logical names + taking context into account */ +void LatMakeLogical (Lattice *lat, MemHeap *heap) +{ + int i,j,J; + LNode *ln; + LArc *la; + LNode **topOrder; + LAlign *align; + LabId labid; + + /* find topological order of nodes */ + topOrder = (LNode **) New (&gcheap, lat->nn * sizeof(LNode *)); + if (!LatTopSort (lat, topOrder)) + HError (527, "LatMakeLogical: lattice has cycles"); + if(topOrder[0]->pred!=NULL) + HError (527, "LatMakeLogical: initial node has incoming arcs"); + for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) { + ln->hook=NULL; + } + + /* forward direction */ + for (i = 0; i < lat->nn; ++i) { + ln = topOrder[i]; + for (la = ln->foll; la; la = la->farc) { + assert (la->start == ln); + J=la->nAlign; + printf("Examine arc %s with %d records\n",la->end->word->wordName->name,J); + for(j=0; jlAlign[j]); + assert(align); + labid=align->label; + if(strcmp(labid->name,"sil")!=0&&strcmp(labid->name,"sp")!=0){ + if(j==0){/*first*/ + if(la->start->hook==NULL) + HError(527,"Nothing is attached to the node"); + }else if(j==J){/*terminal*/ + }else{/*something inside*/ + /*if(strcmp(la->lAlign[j].labid->name,"sp")==0)*/ + } + printf("converting %s ",labid->name); + exit(0); + }else{ + la->end->hook = labid; + } + printf("%s ",labid->name); + } + printf("\n"); + } + } + Dispose (&gcheap, topOrder); +} + /* EXPORT->LatFindBest find the N-best paths (i.e. lowest sum of LArcTotLike()s) and generate @@ -687,13 +746,12 @@ Transcription *LatFindBest (MemHeap *heap, Lattice *lat, int N) */ void LatSetScores (Lattice *lat) { - LogDouble best; LNode *ln; int i; LatAttachInfo (&gcheap, sizeof (FBinfo), lat); - best = LatForwBackw (lat, LATFB_MAX); + LatForwBackw (lat, LATFB_MAX); for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) { ln->score = LNodeFw (ln) + LNodeBw (ln); @@ -904,7 +962,7 @@ void CalcStats (Lattice *lat) ln = topOrder[i]; /* count words */ - ln->word->aux = (Ptr) (((int)ln->word->aux) + 1); + ln->word->aux = (Ptr) (((unsigned long int)ln->word->aux) + 1); /* count incoming and outgoing arcs */ d = 0; @@ -1789,7 +1847,7 @@ void ApplyNGram2LabLat(Lattice *lat, LModel *lm) fprintf(stdout, "\n"); fprintf(stdout, "\n Vocab entries: "); for (j = 0; j < lat->nn - 2; j++) { - fprintf(stdout, "%s ", lm->data.ngram->wdlist[(int) revlab[j]->aux]->name); + fprintf(stdout, "%s ", lm->data.ngram->wdlist[(unsigned long int) revlab[j]->aux]->name); } fprintf(stdout, "\n\n"); fflush(stdout); diff --git a/HTKLib/HLat.h b/HTKLib/HLat.h old mode 100644 new mode 100755 index 1d7f252..5f14b1f --- a/HTKLib/HLat.h +++ b/HTKLib/HLat.h @@ -3,31 +3,32 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLat.h: Lattice Manipulation */ +/* File: HLat.h: Lattice Manipulation */ /* ----------------------------------------------------------- */ -/* !HVER!HLat: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HLat: 3.5.0 [CUED 12/10/15] */ #ifndef _HLAT_H_ #define _HLAT_H_ @@ -36,6 +37,9 @@ extern "C" { #endif +/* cz277 - ANN */ +/*#include "HLM.h"*/ + /* ------------------------ Initialisation --------------------------- */ void InitLat (void); @@ -95,7 +99,6 @@ Lattice *LatExpand (MemHeap *heap, Lattice *lat, LModel *lm); void ApplyNGram2LabLat(Lattice *lat, LModel *lm); #endif - Lattice *GetLattice (char *fn, char *path, char *ext, /* arguments of ReadLattice() below */ MemHeap *heap, Vocab *voc, @@ -105,8 +108,14 @@ Lattice *MergeLatNodesArcs(Lattice *lat, MemHeap *heap, Boolean mergeFwd); void ApplyWPNet2LabLat(Lattice *lat, Lattice *wdNet); +/* sxz20 not sure this way*/ +void LatMakeLogical (Lattice *lat, MemHeap *heap); + #ifdef __cplusplus } #endif #endif /* _HLAT_H_ */ + +/* ------------------------- End of HLat.h ------------------------- */ + diff --git a/HTKLib/HMap.c b/HTKLib/HMap.c old mode 100644 new mode 100755 index 7aaac4a..2c1ecd3 --- a/HTKLib/HMap.c +++ b/HTKLib/HMap.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMap.c - MAP Model Updates */ +/* File: HMap.c MAP model updates */ /* ----------------------------------------------------------- */ /* @@ -38,7 +41,7 @@ (ie the forward-backward allignments have been performed). */ -char *hmap_version = "!HVER!HMap: 3.4.1 [CUED 12/03/09]"; +char *hmap_version = "!HVER!HMap: 3.5.0 [CUED 12/10/15]"; char *hmap_vc_id = "$Id: HMap.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include /* Standard C Libraries */ @@ -56,6 +59,7 @@ char *hmap_vc_id = "$Id: HMap.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -381,12 +385,10 @@ static void UpdateVars(HMMSet *hset, int px, HLink hmm) static int TotMixInSet(HMMSet *hset) { HMMScanState hss; - HLink hmm; int nmix=0; NewHMMScan(hset,&hss); do { - hmm = hss.hmm; while (GoNextState(&hss,TRUE)) { while (GoNextStream(&hss,TRUE)) { if (hss.isCont) /* PLAINHS or SHAREDHS */ @@ -429,7 +431,7 @@ void MAPUpdateModels(HMMSet *hset, UPDSet uFlags) px=1; do { hmm = hss.hmm; - n = (int)hmm->hook; + n = (int)(unsigned long int)hmm->hook; if (n 0.0 ? fabs(a): -fabs(a)) +#define MAX(a, b) ((a)>(b)? (a): (b)) +#define MIN(a, b) ((a)<(b)? (a): (b)) + /* -------------------- Configuration Parameters --------------------- */ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int numParm = 0; +/* from mjfg - cz277 141022 */ +#define MAXMATRIXSIZE 400 + +/* cz277 - ANN */ +#ifdef MKL +static int nMKLThreads = 1; /* the number of threads used by CPU LAPACK/BLAS kernels (MKL) */ +static char *nMKLThreadEnvVar = ""; +#endif +static NMatrix *tmpNMat = NULL; /* the pointer to the temp matrix */ +static NVector *tmpNVec = NULL; +static int tmpRowNum = 1; /* the row number of the temp matrix*/ +static int tmpColNum = 1; /* the column number of the temp matrix */ /* ------------------ Vector Oriented Routines ----------------------- */ @@ -615,7 +659,7 @@ void LinTranQuaProd(Matrix Prod, Matrix A, Matrix C) Matrix tempMatrix_A_mult_C; if (NumRows(C) != NumCols(C)){ - HError(999,"HMath: LinTranQuaProd: Matrix C is not square!\n"); + HError(5221,"HMath: LinTranQuaProd: Matrix C is not square!\n"); } else { tempMatrix_A_mult_C = CreateMatrix(&gstack,NumRows(A),NumCols(C)); @@ -1155,6 +1199,7 @@ void SVD(DMatrix A, DMatrix U, DMatrix V, DVector d) HError(1, "SVD: The svd matrices and vector must be initialised b4 call"); A_tmp = CreateDMatrix(&gstack, n, n); + CopyDMatrix(A, A_tmp); InitIdentity(U); InitIdentity(V); @@ -1421,12 +1466,16 @@ static void LinSolve(Matrix a, int *perm, float *b) float MatInvert(Matrix c, Matrix invc) { Matrix a; - float col[100]; + float col[MAXMATRIXSIZE]; float det; int sign; - int n,i,j,perm[100]; + int n,i,j,perm[MAXMATRIXSIZE]; n=NumRows(c); + /* from mjfg - cz277 - 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateMatrix(&gstack,n,n); CopyMatrix(c,a); /* Make a copy of c */ LUDecompose(a,perm,&sign); /* Do LU Decomposition */ @@ -1474,12 +1523,16 @@ static void DLinSolve(DMatrix a, int *perm, double *b) double DMatInvert(DMatrix c, DMatrix invc) { DMatrix a; - double col[100]; + double col[MAXMATRIXSIZE]; double det; int sign; - int n,i,j,perm[100]; + int n,i,j,perm[MAXMATRIXSIZE]; n=NumDRows(c); + /* from mjfg - cz277 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateDMatrix(&gstack,n,n); CopyDMatrix(c,a); /* Make a copy of c */ DLUDecompose(a,perm,&sign); /* Do LU Decomposition */ @@ -1503,12 +1556,16 @@ double DMatInvert(DMatrix c, DMatrix invc) double DMatCofact(DMatrix c, int r, DVector cofact) { DMatrix a; - double col[100]; + double col[MAXMATRIXSIZE]; double det; int sign; - int n,i,perm[100]; + int n,i,perm[MAXMATRIXSIZE]; n=NumDRows(c); + /* from mjfg, cz277 - 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateDMatrix(&gstack,n,n); CopyDMatrix(c,a); /* Make a copy of c */ if (! DLUDecompose(a,perm,&sign)) /* Do LU Decomposition */ @@ -1532,12 +1589,16 @@ double MatCofact(Matrix c, int r, Vector cofact) { DMatrix a; DMatrix b; - double col[100]; + double col[MAXMATRIXSIZE]; float det; int sign; - int n,i,perm[100]; + int n,i,perm[MAXMATRIXSIZE]; n=NumRows(c); + /* from mjfg, cz277 - 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateDMatrix(&gstack,n,n); b=CreateDMatrix(&gstack,n,n); Mat2DMat(c,b); @@ -1642,7 +1703,7 @@ float RandomValue(void) return RANDF(); } -/* EXPORT->GaussDeviate: random number with a N(mu,sigma) distribution */ +/* EXPORT->GaussDeviate: random number with a N(mu,sigma^2) distribution */ float GaussDeviate(float mu, float sigma) { double fac,r,v1,v2,x; @@ -1668,12 +1729,29 @@ float GaussDeviate(float mu, float sigma) return x*sigma+mu; } +/* from xl207, cz277 - gau */ +float GaussInv(float p) +{ + HError(999, "Gaussianisation is disabled"); + return 0.0; +} + +/* from xl207, cz277 - gau */ +float CumGauss(float x, float mean, float var) +{ + HError(999, "Gaussianisation is disabled"); + return 0.0; +} + /* --------------------- Initialisation ---------------------- */ /* EXPORT->InitMath: initialise this module */ void InitMath(void) { int i; +#ifdef MKL + ConfParam *cpVal; +#endif Register(hmath_version,hmath_vc_id); RandInit(-1); @@ -1681,7 +1759,3026 @@ void InitMath(void) numParm = GetConfig("HMATH", TRUE, cParm, MAXGLOBS); if (numParm>0){ if (GetConfInt(cParm,numParm,"TRACE",&i)) trace = i; +/* cz277 - ANN */ +#ifdef MKL + if (GetConfAny(cParm, numParm, "NMKLTHREADS", &cpVal)) { + if (cpVal->kind == IntCKind) + nMKLThreads = cpVal->val.i; + else if (cpVal->kind == StrCKind) + nMKLThreadEnvVar = CopyString(&gcheap, cpVal->val.s); + else + HError(5222, "InitMath: Unknown NMKLTHREADS value kind"); + } +#endif + } +} + +/* cz277 - ANN */ +/* --------------------- ANN related math kernels --------------------- */ + +/* cz277 - 151020 */ +#ifdef MKL +void StartMKL() { + char *envVar = NULL; + int maxMKLThreads = 1; + MKLVersion version; + + /* print the MKL version */ + mkl_get_version(&version); + printf("MKL version %d.%d.%d (build %s)\n", version.MajorVersion, version.MinorVersion, version.UpdateVersion, version.Build); + printf("%s\n", version.Platform); + /*printf("Optimised for %s\n", version.Processor);*/ + + /* set and print the thread number */ + maxMKLThreads = mkl_get_max_threads(); + if (nMKLThreads > maxMKLThreads) { + HError(-5223, "StartMKL: Thread number %d set by NMKLTHREADS > maximum thread number %d, reset to %d", nMKLThreads, maxMKLThreads, maxMKLThreads); + nMKLThreads = maxMKLThreads; + } + if (strcmp(nMKLThreadEnvVar, "") != 0) { + envVar = getenv(nMKLThreadEnvVar); + if (envVar == NULL) { + HError(-5223, "StartMKL: Environment variable %s not defined, reset to use 1 thread\n", envVar); + nMKLThreads = 1; + } + else { + nMKLThreads = atoi(envVar); + } + } + if (nMKLThreads > 0) { + mkl_set_dynamic(0); + mkl_set_num_threads(nMKLThreads); + printf("MKL thread number = %d\n", nMKLThreads); + } + else { + mkl_set_dynamic(maxMKLThreads); + printf("MKL dynamic threading control (upto %d threads)\n", maxMKLThreads); + } + printf("\n"); +} +#endif + + +void RegisterTmpNMat(int nrows, int ncols) { + if (nrows > tmpRowNum) + tmpRowNum = nrows; + if (ncols > tmpColNum) + tmpColNum = ncols; +} + +void CreateTmpNMat(MemHeap *heap) { + if (tmpRowNum != 0 && tmpColNum != 0) { + tmpNMat = CreateNMatrix(heap, tmpRowNum, tmpColNum); + tmpNVec = (NVector *) New(heap, sizeof(NVector)); + memset(tmpNVec, 0, sizeof(NVector)); + tmpNVec->vecLen = tmpNMat->rowNum * tmpNMat->colNum; + tmpNVec->vecElems = tmpNMat->matElems; +#ifdef CUDA + tmpNVec->devElems = tmpNMat->devElems; +#endif + } +} + +NMatrix *GetTmpNMat(void) { + return tmpNMat; +} + +NVector *GetTmpNVec(void) { + return tmpNVec; +} + +void FreeTmpNMat(MemHeap *heap) { + if (tmpNMat != NULL) { + FreeNMatrix(heap, tmpNMat); + tmpNMat = NULL; + tmpRowNum = 0; + tmpColNum = 0; + } +} + +static inline void CopyNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + memcpy(dstPtr, srcPtr, segLen * sizeof(NFloat)); +} + +#ifdef MKL +static inline void CopyNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + #ifdef DOUBLEANN + cblas_dcopy(segLen, srcPtr, 1, dstPtr, 1); + #else + cblas_scopy(segLen, srcPtr, 1, dstPtr, 1); + #endif +} +#endif + +void CopyNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff) { + if (trace & T_DIM) { + if (!(srcOff >= 0 && segLen >= 0 && (srcOff + segLen) < srcMat->rowNum * srcMat->colNum)) + HError(5221, "CopyNSegment: Illegal source matrix offset or segment length"); + if (!(dstOff >= 0 && (dstOff + segLen) < dstMat->rowNum * dstMat->colNum)) + HError(5221, "CopyNSegment: Illegal destinate matrix offset"); + } +#ifdef CUDA + CopyNSegmentCUDA(srcMat->devElems + srcOff, segLen, dstMat->devElems + dstOff); +#else + #ifdef MKL + CopyNSegmentMKL(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #else + CopyNSegmentCPU(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #endif +#endif +} + +void CopyNVectorSegment(NVector *srcVec, int srcOff, int segLen, NVector *dstVec, int dstOff) { + if (trace & T_DIM) { + if (!(srcOff >= 0 && segLen >= 0 && (srcOff + segLen) < srcVec->vecLen)) + HError(5221, "CopyNVectorSegment: Illegal source vector offset or segment length"); + if (!(dstOff >= 0 && (dstOff + segLen) < dstVec->vecLen)) + HError(5221, "CopyNVectorSegment: Illegal destinate vector offset"); + } +#ifdef CUDA + CopyNSegmentCUDA(srcVec->devElems + srcOff, segLen, dstVec->devElems + dstOff); +#else + #ifdef MKL + CopyNSegmentMKL(srcVec->vecElems + srcOff, segLen, dstVec->vecElems + dstOff); + #else + CopyNSegmentCPU(srcVec->vecElems + srcOff, segLen, dstVec->vecElems + dstOff); + #endif +#endif +} + +/*typedef struct _SRank { + int idx; + NFloat val; +} SRank; + +static int cmpfuncSRank(const void *a, const void *b) { + return (((SRank *)b)->val - ((SRank *)a)->val); +} + +static void SortOrthVecsCPU(NFloat *U, int nrows, int ncols, NFloat *d, NFloat *V) { + int i, j, k; + NFloat *temp; + SRank *slist; + + temp = (NFloat *) New(&gstack, sizeof(NFloat) * MAX(nrows, ncols) * MAX(nrows, ncols)); + slist = (SRank *) New(&gstack, ncols); + for (i = 0; i < ncols; ++i) { + slist[i].idx = i; + slist[i].val = d[i]; + } + qsort(slist, ncols, sizeof(SRank), cmpfuncSRank); + + CopyNSegmentCPU(U, nrows * ncols, temp); + for (i = 0; i < ncols; ++i) { + j = slist[i].idx; + if (i != j) { + for (k = 0; k < nrows; ++k) { + U[k * ncols + i] = temp[k * ncols + j]; + } + } + } + for (i = 0; i < ncols; ++i) { + d[i] = slist[i].val; + } + CopyNSegmentCPU(V, ncols * ncols, temp); + for (i = 0; i < ncols; ++i) { + j = slist[i].idx; + if (i != j) { + memcpy(&V[i * ncols], &temp[j * ncols], sizeof(NFloat) * ncols); + } + } + + Dispose(&gstack, temp); +} + +static double SVDanyPythag(NFloat a, NFloat b) { + double absa, absb, result; + + absa = fabs(a); + absb = fabs(b); + if (absa > absb) { + result = absa * sqrt(pow(absb / absa, 2) + 1.0); + } + else if (absb > 0.0) { + result = absb * sqrt(pow(absa / absb, 2) + 1.0); + } + else { + result = 0.0; + } + + return result; +} + +static void SVDanyCPU(NFloat *A, int nrows, int ncols, NFloat *U, NFloat *d, NFloat *Vt) { + int flag, i, its, j, jj, k, l, nm; + double anorm, c, f, g, h, s, scale, x, y, z, *rv1; + + if (A != U) { + CopyNSegmentCPU(A, nrows * ncols, U); + } + rv1 = (double *) New(&gstack, sizeof(double) * ncols); + + g = scale = anorm = 0.0; + for(i = 0; i < ncols; ++i) { + l = i + 1; + rv1[i] = scale * g; + g = s = scale = 0.0; + if (i < nrows) { + for(k = i; k < nrows; ++k) + scale += fabs(U[k * ncols + i]); + if (scale) { + for(k = i; k < nrows; ++k) { + U[k * ncols + i] /= scale; + s += U[k * ncols + i] * U[k * ncols + i]; + } + f = U[i * ncols + i]; + g = -SIGN(sqrt(s), f); + h = f * g - s; + U[i * ncols + i] = f - g; + for (j = l; j < ncols; ++j) { + for (s = 0.0, k = i; k < nrows; ++k) + s += U[k * ncols + i] * U[k * ncols + j]; + f = s / h; + for (k = i; k < nrows; ++k) + U[k * ncols + j] += f * U[k * ncols + i]; + } + for (k = i; k < nrows; ++k) + U[k * ncols + i] *= scale; + } + } + d[i] = scale * g; + g = s = scale = 0.0; + if (i < nrows && i != ncols-1) { + for (k = l; k < ncols; ++k) + scale += fabs(U[i * ncols + k]); + if (scale) { + for(k = l; k < ncols; ++k) { + U[i * ncols + k] /= scale; + s += U[i * ncols + k] * U[i * ncols + k]; + } + f = U[i * ncols + l]; + g = -SIGN(sqrt(s), f); + h = f * g - s; + U[i * ncols + l] = f - g; + for (k = l; k < ncols; ++k) + rv1[k] = U[i * ncols + k] / h; + for (j = l; j < nrows; ++j) { + for (s = 0.0, k = l; k < ncols; ++k) + s += U[j * ncols + k] * U[i * ncols + k]; + for (k = l; k < ncols; ++k) + U[j * ncols + k] += s * rv1[k]; + } + for (k = l; k < ncols; ++k) + U[i * ncols + k] *= scale; + } + } + anorm = MAX(anorm, (fabs(d[i]) + fabs(rv1[i]))); + } + + for (i = ncols - 1; i >= 0; --i) { + if(i < ncols - 1) { + if(g) { + for (j = l; j < ncols; ++j) + Vt[j * ncols + i] = (U[i * ncols + j] / U[i * ncols + l]) / g; + for (j = l; j < ncols; ++j) { + for (s = 0.0, k = l; k < ncols; ++k) + s += U[i * ncols + k] * Vt[k * ncols + j]; + for (k = l; k < ncols; ++k) + Vt[k * ncols + j] += s * Vt[k * ncols + i]; + } + } + for (j = l; j < ncols; ++j) + Vt[i * ncols + j] = Vt[j * ncols + i] = 0.0; + } + Vt[i * ncols + i] = 1.0; + g = rv1[i]; + l = i; + } + for (i = MIN(nrows, ncols) - 1; i >= 0; --i) { + l = i + 1; + g = d[i]; + for (j = l; j < ncols; ++j) + U[i * ncols + j] = 0.0; + if (g) { + g = 1.0 / g; + for (j = l; j < ncols; ++j) { + for (s = 0.0, k = l; k < nrows; ++k) + s += U[k * ncols + i] * U[k * ncols + j]; + f = (s / U[i * ncols + i]) * g; + for (k = i; k < nrows; ++k) + U[k * ncols + j] += f * U[k * ncols + i]; + } + for (j = i; j < nrows; ++j) + U[j * ncols + i] *= g; + } + else { + for (j = i; j < nrows; ++j) + U[j * ncols + i] = 0.0; + } + U[i * ncols + i] += 1.0; + } + + for (k = ncols - 1; k >= 0; --k) { + for (its = 0; its < MAXSVDITER; ++its) { + flag = 1; + for (l = k; l >= 0; --l) { + nm = l - 1; + if ((fabs(rv1[l]) + anorm) == anorm) { + flag = 0; + break; + } + if ((fabs(d[nm]) + anorm) == anorm) + break; + } + if (flag) { + c = 0.0; + s = 1.0; + for (i = l;i <= k; ++i) { + f = s * rv1[i]; + rv1[i] = c * rv1[i]; + if ((fabs(f) + anorm) == anorm) + break; + g = d[i]; + h = SVDanyPythag(f, g); + d[i] = h; + h = 1.0 / h; + c = g * h; + s = -f * h; + for (j = 0; j < nrows; ++j) { + y = U[j * ncols + nm]; + z = U[j * ncols + i]; + U[j * ncols + nm] = y * c + z * s; + U[j * ncols + i] = z * c - y * s; + } + } + } + z = d[k]; + if (l == k) { + if (z < 0.0) { + d[k] = -z; + for (j = 0; j < ncols; ++j) + Vt[j * ncols + k] = -Vt[j * ncols + k]; + } + break; + } + if (its == MAXSVDITER) + HError(999, "Fail to converge in %d iterations", MAXSVDITER); + x = d[l]; + nm = k - 1; + y = d[nm]; + g = rv1[nm]; + h = rv1[k]; + f = ((y - z) * (y + z) + (g - h) * (g + h)) / (2.0 * h * y); + g = SVDanyPythag(f, 1.0); + f = ((x - z) * (x + z) + h * ((y / (f + SIGN(g, f))) - h)) / x; + c = s = 1.0; + for (j = l; j <= nm; ++j) { + i = j + 1; + g = rv1[i]; + y = d[i]; + h = s * g; + g = c * g; + z = SVDanyPythag(f, h); + rv1[j] = z; + c = f / z; + s = h / z; + f = x * c + g * s; + g = g * c - x * s; + h = y * s; + y *= c; + for(jj = 0; jj < ncols; ++jj) { + x = Vt[jj * ncols + j]; + z = Vt[jj * ncols + i]; + Vt[jj * ncols + j] = x * c + z * s; + Vt[jj * ncols + i] = z * c - x * s; + } + z = SVDanyPythag(f, h); + d[j] = z; + if (z) { + z = 1.0 / z; + c = f * z; + s = h * z; + } + f = c * g + s * y; + x = c * y - s * g; + for (jj = 0; jj < nrows; ++jj) { + y = U[jj * ncols + j]; + z = U[jj * ncols + i]; + U[jj * ncols + j] = y * c + z * s; + U[jj * ncols + i] = z * c - y * s; + } + } + rv1[l] = 0.0; + rv1[k] = f; + d[k] = x; + } } + + Dispose(&gstack, rv1); + +} + +void NanySVD(NMatrix *A, NMatrix *U, NVector *d, NMatrix *Vt) { + +#ifdef CUDA + SyncNMatrixDev2Host(A); +#endif + if (trace & T_DIM) { + if (!(A->rowNum == U->rowNum)) + HError(9999, "NMatirxSVD: Inconsistent row dimensions of A and U"); + if (!(A->colNum == U->colNum == d->vecLen == Vt->rowNum == Vt->colNum)) + HError(9999, "NMatirxSVD: Inconsistent column dimensions of A, U, d, V"); + + } + SVDanyCPU(A->matElems, A->rowNum, A->colNum, U->matElems, d->vecElems, Vt->matElems); + SortOrthVecsCPU(U->matElems, U->rowNum, U->colNum, d->vecElems, V->matElems); + +}*/ + +#ifdef MKL +void NSVDanyMKL(NFloat *A, int nrows, int ncols, NFloat *U, NFloat *d, NFloat *Vt) { + int ret; + +#ifdef DOUBLEANN + ret = LAPACKE_dgesdd(LAPACK_ROW_MAJOR, 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols); +#else + ret = LAPACKE_sgesdd(LAPACK_ROW_MAJOR, 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols); +#endif + + /*superb = CreateVector(&gstack, MIN(nrows, ncols) - 1); +#ifdef DOUBLEANN + ret = LAPACKE_dgesvd(LAPACK_ROW_MAJOR, 'A', 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols, superb); +#else + ret = LAPACKE_sgesvd(LAPACK_ROW_MAJOR, 'A', 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols, superb); +#endif + Dispose(&gstack, superb);*/ + + if (ret > 0) + HError(5224, "NSVDanyMKL: LAPACK_?gesvd did not converge"); +} +#endif + +void NanySVD(NMatrix *A, NMatrix *U, NVector *d, NMatrix *Vt) { + +#ifdef CUDA + HError(5201, "NanySVD: GPU based SVD decomposition not implemented yet"); +#else + #ifdef MKL + NSVDanyMKL(A->matElems, A->rowNum, A->colNum, U->matElems, d->vecElems, Vt->matElems); + #else + HError(5201, "NanySVD: CPU based SVD decomposition not implemented yet"); + #endif +#endif + +} + +static inline void AddNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + dstPtr[i] += srcPtr[i]; + } +} + +#ifdef MKL +static inline void AddNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + #ifdef DOUBLEANN + vdAdd(segLen, srcPtr, dstPtr, dstPtr); + #else + vsAdd(segLen, srcPtr, dstPtr, dstPtr); + #endif +} +#endif + +void AddNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcOff >= 0 && segLen >= 0 && (srcOff + segLen) < srcMat->rowNum * srcMat->colNum)) + HError(5221, "CopyNSegment: Illegal source matrix offset or segment length"); + if (!(dstOff >= 0 && (dstOff + segLen) < dstMat->rowNum * dstMat->colNum)) + HError(5221, "CopyNSegment: Illegal destinate matrix offset"); + } +#ifdef CUDA + AddNSegmentCUDA(srcMat->devElems + srcOff, segLen, dstMat->devElems + dstOff); +#else + #ifdef MKL + AddNSegmentMKL(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #else + AddNSegmentCPU(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #endif +#endif +} + +void AddNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "AddNMatrix: Matrix row number inconsistent"); + if (!(col > 0 && col <= srcMat->colNum && col <= dstMat->colNum)) + HError(5221, "AddNMatrix: Matrix column number inconsistent"); + } +#ifdef CUDA + AddNSegmentCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + AddNSegmentMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + AddNSegmentCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +void AddNVector(NVector *srcVec, int len, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= srcVec->vecLen && len <= dstVec->vecLen)) + HError(5221, "AddNVector: Vector length inconsistent"); + } +#ifdef CUDA + AddNSegmentCUDA(srcVec->devElems, len, dstVec->devElems); +#else + #ifdef MKL + AddNSegmentMKL(srcVec->vecElems, len, dstVec->vecElems); + #else + AddNSegmentCPU(srcVec->vecElems, len, dstVec->vecElems); + #endif +#endif +} + +/* cz277 - l2 fix */ +static void AddScaledNSegmentCPU(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + dstPtr[i] += scale * srcPtr[i]; + } +} + +/* cz277 - l2 fix */ +#ifdef MKL +static void AddScaledNSegmentMKL(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr) { + +#ifdef DOUBLEANN + cblas_daxpy(segLen, scale, srcPtr, 1, dstPtr, 1); +#else + cblas_saxpy(segLen, scale, srcPtr, 1, dstPtr, 1); +#endif +} +#endif + +/* cz277 - l2 fix */ +void AddScaledNMatrix(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "AddScaledNMatrix: Matrix row number inconsistent"); + if (!(col > 0 && col <= srcMat->colNum && col <= dstMat->colNum)) + HError(5221, "AddScaledNMatrix: Matrix column number inconsistent"); + } +#ifdef CUDA + AddScaledNSegmentCUDA(srcMat->devElems, row * col, scale, dstMat->devElems); +#else + #ifdef MKL + AddScaledNSegmentMKL(srcMat->matElems, row * col, scale, dstMat->matElems); + #else + AddScaledNSegmentCPU(srcMat->matElems, row * col, scale, dstMat->matElems); + #endif +#endif +} + +/* cz277 - l2 fix */ +void AddScaledNVector(NVector *srcVec, int len, NFloat scale, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= srcVec->vecLen && len <= dstVec->vecLen)) + HError(5221, "AddScaledNVector: Vector length inconsistent"); + } +#ifdef CUDA + AddScaledNSegmentCUDA(srcVec->devElems, len, scale, dstVec->devElems); +#else + #ifdef MKL + AddScaledNSegmentMKL(srcVec->vecElems, len, scale, dstVec->vecElems); + #else + AddScaledNSegmentCPU(srcVec->vecElems, len, scale, dstVec->vecElems); + #endif +#endif +} + +#ifdef MKL +static inline void ScaleNSegmentMKL(int segLen, NFloat scale, NFloat *valPtr) { + #ifdef DOUBLEANN + cblas_dscal(segLen, scale, valPtr, 1); + #else + cblas_sscal(segLen, scale, valPtr, 1); + #endif +} +#endif + +static inline void ScaleNSegmentCPU(int segLen, NFloat scale, NFloat *valPtr) { + int i; + + for (i = 0; i < segLen; ++i) + valPtr[i] *= scale; +} + +void ScaleNMatrix(NFloat scale, int row, int col, NMatrix *valMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row * col <= valMat->rowNum * valMat->colNum)) + HError(5221, "ScaleNMatrix: Matrix dimensions inconsistent"); + } +#ifdef CUDA + ScaleNSegmentCUDA(row * col, scale, valMat->devElems); +#else + #ifdef MKL + ScaleNSegmentMKL(row * col, scale, valMat->matElems); + #else + ScaleNSegmentCPU(row * col, scale, valMat->matElems); + #endif +#endif + +} + +void ScaleNVector(NFloat scale, int len, NVector *valVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len <= valVec->vecLen)) + HError(5221, "ScaleNVector: Vector lengths inconsistent"); + } +#ifdef CUDA + ScaleNSegmentCUDA(len, scale, valVec->devElems); +#else + #ifdef MKL + ScaleNSegmentMKL(len, scale, valVec->vecElems); + #else + ScaleNSegmentCPU(len, scale, valVec->vecElems); + #endif +#endif +} + +#ifdef MKL +static inline void ScaledSelfAddNSegmentMKL(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + #ifdef DOUBLEANN + cblas_dscal(segLen, scale, lhPtr, 1); + vdAdd(segLen, rhPtr, lhPtr, lhPtr); + #else + cblas_sscal(segLen, scale, lhPtr, 1); + vsAdd(segLen, rhPtr, lhPtr, lhPtr); + #endif +} +#endif + +static inline void ScaledSelfAddNSegmentCPU(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + int i; + + for (i = 0; i < segLen; ++i) + lhPtr[i] = scale * lhPtr[i] + rhPtr[i]; +} + +void ScaledSelfAddNVector(NVector *rhVec, int len, NFloat scale, NVector *lhVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len <= rhVec->vecLen && len <= lhVec->vecLen)) + HError(5221, "ScaledSelfAddNVector: Vector lengths inconsistent"); + } +#ifdef CUDA + ScaledSelfAddNSegmentCUDA(rhVec->devElems, len, scale, lhVec->devElems); +#else + #ifdef MKL + ScaledSelfAddNSegmentMKL(rhVec->vecElems, len, scale, lhVec->vecElems); + #else + ScaledSelfAddNSegmentCPU(rhVec->vecElems, len, scale, lhVec->vecElems); + #endif +#endif +} + +void ScaledSelfAddNMatrix(NMatrix *rhMat, int row, int col, NFloat scale, NMatrix *lhMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= rhMat->rowNum && row <= lhMat->colNum)) + HError(5221, "ScaledSelfAddNMatrix: Matrix row number inconsistent"); + if (!(col > 0 && col == rhMat->colNum && col == lhMat->colNum)) + HError(5221, "ScaledSelfAddNMatrix: Matrix column number inconsistent"); + } + +#ifdef CUDA + ScaledSelfAddNSegmentCUDA(rhMat->devElems, row * col, scale, lhMat->devElems); +#else + #ifdef MKL + ScaledSelfAddNSegmentMKL(rhMat->matElems, row * col, scale, lhMat->matElems); + #else + ScaledSelfAddNSegmentCPU(rhMat->matElems, row * col, scale, lhMat->matElems); + #endif +#endif +} + + +static inline void DupNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int i, off; + + for (i = 0, off = 0; i < times; ++i, off += segLen) { + memcpy(dstPtr + off, srcPtr, segLen * sizeof(NFloat)); + } +} + +#ifdef MKL +static inline void DupNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int i, off; + + for (i = 0, off = 0; i < times; ++i, off += segLen) { + #ifdef DOUBLEANN + cblas_dcopy(segLen, srcPtr, 1, dstPtr + off, 1); + #else + cblas_scopy(segLen, srcPtr, 1, dstPtr + off, 1); + #endif + } +} +#endif + +void DupNVector(NVector *srcVec, NMatrix *dstMat, int times) { + /* safety check */ + if (trace & T_DIM) { + if (!(times > 0)) + HError(5221, "DupNVector: Times should be positive integer"); + if (srcVec->vecLen * times < dstMat->rowNum * dstMat->colNum) + HError(5221, "DupNVector: Too many duplicate times"); + } +#ifdef CUDA + DupNSegmentCUDA(srcVec->devElems, srcVec->vecLen, dstMat->devElems, times); +#else + #ifdef MKL + DupNSegmentMKL(srcVec->vecElems, srcVec->vecLen, dstMat->matElems, times); + #else + DupNSegmentCPU(srcVec->vecElems, srcVec->vecLen, dstMat->matElems, times); + #endif +#endif +} + +static inline void SubNSegmentCPU(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + resPtr[i] = lhPtr[i] - rhPtr[i]; + } +} + +#ifdef MKL +static inline void SubNSegmentMKL(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + #ifdef DOUBLEANN + vdSub(segLen, lhPtr, rhPtr, resPtr); + #else + vsSub(segLen, lhPtr, rhPtr, resPtr); + #endif +} +#endif + +void SubNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= lhMat->rowNum && row <= rhMat->rowNum && row <= resMat->rowNum)) { + HError(5221, "SubNMatrix: Matrix row dimension out of range"); + } + if (!(col == lhMat->colNum && col == rhMat->colNum && col == resMat->colNum)) { + HError(5221, "SubNMatrix: Inconsistent matrix col dimensions"); + } + } +#ifdef CUDA + SubNSegmentCUDA(lhMat->devElems, rhMat->devElems, row * col, resMat->devElems); +#else + #ifdef MKL + SubNSegmentMKL(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #else + SubNSegmentCPU(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #endif +#endif +} + +static inline void MulNSegmentCPU(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + resPtr[i] = lhPtr[i] * rhPtr[i]; + } +} + +#ifdef MKL +static inline void MulNSegmentMKL(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + #ifdef DOUBLEANN + vdMul(segLen, lhPtr, rhPtr, resPtr); + #else + vsMul(segLen, lhPtr, rhPtr, resPtr); + #endif +} +#endif + +void MulNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= lhMat->rowNum && row <= rhMat->rowNum && row <= resMat->rowNum)) { + HError(5221, "MulNMatrix: Matrix row dimension out of range"); + } + if (!(col == lhMat->colNum && col == rhMat->colNum && col == resMat->colNum)) { + HError(5221, "MulNMatrix: Inconsistent matrix col dimensions"); + } + } +#ifdef CUDA + MulNSegmentCUDA(lhMat->devElems, rhMat->devElems, row * col, resMat->devElems); +#else + #ifdef MKL + MulNSegmentMKL(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #else + MulNSegmentCPU(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #endif +#endif +} + +void MulNVector(NVector *lhVec, NVector *rhVec, int len, NVector *resVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= lhVec->vecLen && len <= rhVec->vecLen && len <= resVec->vecLen)) + HError(5221, "MulNVector: Vector lengths inconsistent"); + } +#ifdef CUDA + MulNSegmentCUDA(lhVec->devElems, rhVec->devElems, len, resVec->devElems); +#else + #ifdef MKL + MulNSegmentMKL(lhVec->vecElems, rhVec->vecElems, len, resVec->vecElems); + #else + MulNSegmentCPU(lhVec->vecElems, rhVec->vecElems, len, resVec->vecElems); + #endif +#endif +} + +/* cz277 - laf */ +static inline void ApplyAffineActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + dstPtr[i * col + j] = scalePtr[j] * srcPtr[i * col + j] + shiftPtr[j]; + } + } +} + +/* cz277 - laf */ +#ifdef MKL +static inline void ApplyAffineActMKL(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int i; + NFloat *curSrc, *curDst; + + for (i = 0, curSrc = srcPtr, curDst = dstPtr; i < row; ++i, curSrc += col, curDst += col) { +#ifdef DOUBLEANN + vdMul(col, curSrc, scalePtr, curDst); + vdAdd(col, curSrc, shiftPtr, curDst); +#else + vsMul(col, curSrc, scalePtr, curDst); + vsAdd(col, curSrc, shiftPtr, curDst); +#endif + } +} +#endif + +/* cz277 - laf */ +void ApplyAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col && scaleVec->vecLen == col && shiftVec->vecLen == col)) + HError(5221, "ApplyAffineAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyAffineAct: Input row number out of range"); + } +#ifdef CUDA + ApplyAffineActCUDA(srcMat->devElems, row, col, scaleVec->devElems, shiftVec->devElems, dstMat->devElems); +#else + #ifdef MKL + ApplyAffineActMKL(srcMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, dstMat->matElems); + #else + ApplyAffineActCPU(srcMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, dstMat->matElems); + #endif +#endif + +} + +/* cz277 - pact */ +static inline void ApplyDAffineActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int i; + + for (i = 0; i < row; ++i) { + memcpy(&dstPtr[i * col], scalePtr, col * sizeof(NFloat)); + } +} + +/* cz277 - pact */ +void ApplyDAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col && scaleVec->vecLen == col && shiftVec->vecLen == col)) + HError(5221, "ApplyDAffineAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDAffineAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDAffineActCUDA(srcMat->devElems, row, col, scaleVec->devElems, shiftVec->devElems, dstMat->devElems); +#else + ApplyDAffineActCPU(srcMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, dstMat->matElems); +#endif + +} + +/* cz277 - pact */ +static inline void ApplyTrAffineActCPU(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr) { + int i, j; + + if (accFlag == FALSE) { + memset(dScalePtr, 0, col * sizeof(NFloat)); + memset(dShiftPtr, 0, col * sizeof(NFloat)); + } + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + dScalePtr[j] += errPtr[i * col + j] * actPtr[i * col + j]; + dShiftPtr[j] += errPtr[i * col + j]; + } + } +} + +/* cz277 - pact */ +void ApplyTrAffineAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *scaleVec, NVector *shiftVec, Boolean accFlag, NVector *dScaleVec, NVector *dShiftVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && actMat->colNum == col && scaleVec->vecLen == col && shiftVec->vecLen == col && dScaleVec->vecLen == col && dShiftVec->vecLen == col)) + HError(5221, "ApplyDTrAffineAct: Input column number incompatible"); + } +#ifdef CUDA + ApplyTrAffineActCUDA(errMat->devElems, actMat->devElems, row, col, scaleVec->devElems, shiftVec->devElems, accFlag, dScaleVec->devElems, dShiftVec->devElems); +#else + ApplyTrAffineActCPU(errMat->matElems, actMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, accFlag, dScaleVec->vecElems, dShiftVec->vecElems); +#endif +} + +/* cz277 - laf */ +static inline void AccMeanNSegmentCPU(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + meanPtr[j] += valPtr[i * col + j] / tSamp; + } + } +} + +/* cz277 - laf */ +void AccMeanNVector(NMatrix *valMat, int row, int col, NFloat tSamp, NVector *meanVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(valMat->colNum == col && meanVec->vecLen == col)) + HError(5221, "ApplyInitMeanAMVNAct: Input column number incompatible"); + /*if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyDAMVNAct: Input row number out of range");*/ + } +#ifdef CUDA + AccMeanNSegmentCUDA(valMat->devElems, row, col, tSamp, meanVec->devElems); +#else + AccMeanNSegmentCPU(valMat->matElems, row, col, tSamp, meanVec->vecElems); +#endif +} + +/* cz277 - laf */ +static inline void AccVarianceNSegmentCPU(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + varPtr[j] += pow(valPtr[i * col + j] - meanPtr[j], 2.0) / tSamp; + } + } +} + +/* cz277 - laf */ +void AccVarianceNVector(NMatrix *srcMat, int row, int col, NFloat tSamp, NVector *meanVec, NVector *varVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && meanVec->vecLen == col && varVec->vecLen == col)) + HError(5221, "AccVarianceNVector: Input column number incompatible"); + /*if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyDAMVNAct: Input row number out of range");*/ + } +#ifdef CUDA + AccVarianceNSegmentCUDA(srcMat->devElems, row, col, tSamp, meanVec->devElems, varVec->devElems); +#else + AccVarianceNSegmentCPU(srcMat->matElems, row, col, tSamp, meanVec->vecElems, varVec->vecElems); +#endif +} + +void ApplyHermiteAct(NMatrix *srcMat, int row, int col, NVector *parmVec, NMatrix*dstMat) { + HError(5201, "Unimplemented method!"); +} + +static inline void ApplyReLUActCPU(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int i; + + /* len = row * col; */ + for (i = 0; i < len; ++i) { + if (srcPtr != dstPtr && srcPtr[i] > 0) + dstPtr[i] = srcPtr[i]; + if (srcPtr[i] < 0) + dstPtr[i] = srcPtr[i] * scale; + } +} + +void ApplyReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyReLUActCUDA(srcMat->devElems, row * col, scale, dstMat->devElems); +#else + ApplyReLUActCPU(srcMat->matElems, row * col, scale, dstMat->matElems); +#endif +} + +static inline void ApplyDReLUActCPU(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (srcPtr[i] > 0) + dstPtr[i] = 1.0; + else + dstPtr[i] = scale; + } +} + +void ApplyDReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDReLUActCUDA(srcMat->devElems, row * col, scale, dstMat->devElems); +#else + ApplyDReLUActCPU(srcMat->matElems, row * col, scale, dstMat->matElems); +#endif +} + +void ApplyLHUCSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal, lhucVal; + + for (i = 0; i < col; ++i) { + floatVal = -1.0 * rolePtr[i]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + for (j = 0; j < row; ++j) { + pos = j * col + i; + floatVal = -1.0 * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = lhucVal * 1.0 / (1.0 + exp(floatVal)); + } + } +} + +void ApplyLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && roleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyLHUCSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyLHUCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyLHUCSigmoidActCUDA(srcMat->devElems, row, col, roleVec->devElems, dstMat->devElems); +#else + ApplyLHUCSigmoidActCPU(srcMat->matElems, row, col, roleVec->vecElems, dstMat->matElems); +#endif +} + +void ApplyDLHUCSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal, lhucVal; + + for (i = 0; i < col; ++i) { + floatVal = -1.0 * rolePtr[i]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + for (j = 0; j < row; ++j) { + pos = j * col + i; + floatVal = srcPtr[pos] / lhucVal; + dstPtr[pos] = srcPtr[pos] * (1 - floatVal); + } + } +} + +void ApplyDLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && roleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDLHUCSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDLHUCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDLHUCSigmoidActCUDA(srcMat->devElems, row, col, roleVec->devElems, dstMat->devElems); +#else + ApplyDLHUCSigmoidActCPU(srcMat->matElems, row, col, roleVec->vecElems, dstMat->matElems); +#endif +} + +void ApplyTrLHUCSigmoidActCPU(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr) { + int i, j, pos; + NFloat floatVal; + + if (accFlag == FALSE) + memset(dRolePtr, 0, col * sizeof(NFloat)); + for (i = 0; i < col; ++i) { + floatVal = -1.0 * rolePtr[i]; + CHKNFLTEXPE(floatVal) + /*lhucVal = 2.0 / (1.0 + exp(floatVal)); * 0.5 */ + floatVal = 0.5 * 2.0 / (1.0 + exp(floatVal)); + for (j = 0; j < row; ++j) { + pos = j * col + i; + dRolePtr[i] += errPtr[pos] * actPtr[pos] * (1.0 - floatVal); + } + } +} + +void ApplyTrLHUCSigmoidAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *roleVec, Boolean accFlag, NVector *dRoleVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && actMat->colNum == col && roleVec->vecLen == col && dRoleVec->vecLen == col)) + HError(5221, "ApplyTrLHUCSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= errMat->rowNum && row <= actMat->rowNum)) + HError(5221, "ApplyTrLHUCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrLHUCSigmoidActCUDA(errMat->devElems, actMat->devElems, row, col, roleVec->devElems, accFlag, dRoleVec->devElems); +#else + ApplyTrLHUCSigmoidActCPU(errMat->matElems, actMat->matElems, row, col, roleVec->vecElems, accFlag, dRoleVec->vecElems); +#endif +} + +static inline void ApplyDLinearActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + dstPtr[i] = 1.0; + } +} + +void ApplyDLinearAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDLinearLAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDLinearAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDLinearActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + ApplyDLinearActCPU(srcMat->matElems, row * col, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyPSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + /* len = row * col; */ + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + floatVal = (-1.0) * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[j] / (1.0 + exp(floatVal)); + } + } +} + +/* cz277 - pact */ +void ApplyPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyPSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyPSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyPSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, dstMat->devElems); +#else + ApplyPSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyDPSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (etaPtr[j] != 0.0) + dstPtr[pos] = srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[j]); + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyDPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDPSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDPSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDPSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, dstMat->devElems); +#else + ApplyDPSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyTrPSigmoidActCPU(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr) { + int i, j, pos; + + if (accFlag == FALSE) + memset(dEtaPtr, 0, col * sizeof(NFloat)); + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + if (etaPtr[j] != 0.0) + dEtaPtr[j] += errPtr[pos] * srcPtr[pos] / etaPtr[j]; + } + } +} + +/* cz277 - pact */ +void ApplyTrPSigmoidAct(NMatrix *errMat, NMatrix *srcMat, NVector *etaVec, int row, int col, Boolean accFlag, NVector *dEtaVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && srcMat->colNum == col && etaVec->vecLen == col && dEtaVec->vecLen == col)) + HError(5221, "ApplyTrPSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyTrPSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrPSigmoidActCUDA(errMat->devElems, srcMat->devElems, etaVec->devElems, row, col, accFlag, dEtaVec->devElems); +#else + ApplyTrPSigmoidActCPU(errMat->matElems, srcMat->matElems, etaVec->vecElems, row, col, accFlag, dEtaVec->vecElems); +#endif +} + + +/* cz277 - pact */ +static inline void ApplyParmSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + floatVal = (-1.0) * gammaPtr[j] * srcPtr[pos] + thetaPtr[j]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[j] / (1.0 + exp(floatVal)); + } + } +} + +/* cz277 - pact */ +void ApplyParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && gammaVec->vecLen == col && thetaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyParmSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyParmCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyParmSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, gammaVec->devElems, thetaVec->devElems, dstMat->devElems); +#else + ApplyParmSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, gammaVec->vecElems, thetaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyDParmSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (etaPtr[j] != 0.0) + dstPtr[pos] = gammaPtr[j] * srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[j]); + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyDParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && gammaVec->vecLen == col && thetaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDParmSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDParmSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDParmSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, gammaVec->devElems, thetaVec->devElems, dstMat->devElems); +#else + ApplyDParmSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, gammaVec->vecElems, thetaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyTrParmSigmoidActCPU(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr) { + int i, j, pos; + NFloat floatVal, expVal, fracVal; + + if (accFlag == FALSE) { + memset(dEtaPtr, 0, col * sizeof(NFloat)); + memset(dGammaPtr, 0, col * sizeof(NFloat)); + memset(dThetaPtr, 0, col * sizeof(NFloat)); + } + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + floatVal = (-1.0) * gammaPtr[j] * inpPtr[pos] + thetaPtr[j]; + CHKNFLTEXPE(floatVal) + expVal = exp(floatVal); + fracVal = 1.0 / (1.0 + expVal); + dEtaPtr[j] += errPtr[pos] * fracVal; + if (etaPtr[j] != 0.0) { + dGammaPtr[j] += errPtr[pos] * inpPtr[pos] * etaPtr[j] * fracVal * (1.0 - fracVal); + dThetaPtr[j] -= errPtr[pos] * etaPtr[j] * fracVal * (1.0 - fracVal); + } + } + } +} + +/* cz277 - pact */ +void ApplyTrParmSigmoidAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, Boolean accFlag, NVector *dEtaVec, NVector *dGammaVec, NVector *dThetaVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && inpMat->colNum == col && etaVec->vecLen == col && gammaVec->vecLen == col && thetaVec->vecLen == col && dEtaVec->vecLen == col && dGammaVec->vecLen == col && dThetaVec->vecLen == col)) + HError(5221, "ApplyTrParmSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= inpMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyTrParmSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrParmSigmoidActCUDA(errMat->devElems, inpMat->devElems, row, col, etaVec->devElems, gammaVec->devElems, thetaVec->devElems, accFlag, dEtaVec->devElems, dGammaVec->devElems, dThetaVec->devElems); +#else + ApplyTrParmSigmoidActCPU(errMat->matElems, inpMat->matElems, row, col, etaVec->vecElems, gammaVec->vecElems, thetaVec->vecElems, accFlag, dEtaVec->vecElems, dGammaVec->vecElems, dThetaVec->vecElems); +#endif +} + +/* cz277 - laf */ +/*static inline void ApplyPABCSoftReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *alphaPtr, NFloat *betaPtr, NFloat *gammaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + floatVal = betaPtr[j] * srcPtr[pos] + gammaPtr[j]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = alphaPtr[j] * log(1.0 + exp(floatVal)); + } + } +}*/ + +/* cz277 - laf */ +/*void ApplyPABCSoftReLUAct(NMatrix *srcMat, int row, int col, NVector *alphaVec, NVector *betaVec, NVector *gammaVec, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->colNum == col && alphaVec->vecLen == col && betaVec->vecLen == col && gammaVec->vecLen == col && dstMat->colNum == col)) + HError(9999, "ApplyPABCSoftReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyPABCSoftReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyPABCSoftReLUActCUDA(srcMat->devElems, row, col, alphaVec->devElems, betaVec->devElems, gammaVec->devElems, dstMat->devElems); +#else + ApplyPABCSoftReLUActCPU(srcMat->matElems, row, col, alphaVec->vecElems, betaVec->vecElems, gammaVec->vecElems, dstMat->matElems); +#endif +}*/ + +/* cz277 - laf */ +/*static inline void ApplyDPABCSoftReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *alphaPtr, NFloat *betaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (alphaPtr[j] == 0.0) + dstPtr[pos] = 0.0; + else { + floatVal = -1.0 / alphaPtr[j] * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = alphaPtr[j] * betaPtr[j] * (1 - exp(floatVal)); + } + + } + } +}*/ + +/* cz277 - laf */ +/*void ApplyDPABCSoftReLUAct(NMatrix *srcMat, int row, int col, NVector *alphaVec, NVector *betaVec, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->colNum == col && alphaVec->vecLen == col && betaVec->vecLen == col && dstMat->colNum == col)) + HError(9999, "ApplyDPABSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyDPABSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDPABCSoftReLUActCUDA(srcMat->devElems, row, col, alphaVec->devElems, betaVec->devElems, dstMat->devElems); +#else + ApplyDPABCSoftReLUActCPU(srcMat->matElems, row, col, alphaVec->vecElems, betaVec->vecElems, dstMat->matElems); +#endif +}*/ + + +/* cz277 - laf */ +static inline void ApplyParmReLUActCPU(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int i, j, pos; + + /* len = row * col; */ + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (inpPtr[pos] > 0) + dstPtr[pos] = posPtr[j] * inpPtr[pos]; + else + dstPtr[pos] = negPtr[j] * inpPtr[pos]; + } + } +} + +/* cz277 - laf */ +void ApplyParmReLUAct(NMatrix *srcMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && posVec->vecLen == col && negVec->vecLen && dstMat->colNum == col)) + HError(5221, "ApplyParmReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyParmReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyParmReLUActCUDA(srcMat->devElems, row, col, posVec->devElems, negVec->devElems, dstMat->devElems); +#else + ApplyParmReLUActCPU(srcMat->matElems, row, col, posVec->vecElems, negVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - laf */ +static inline void ApplyDParmReLUActCPU(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int i, j, pos; + + /* len = row * col; */ + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (inpPtr[pos] > 0) + dstPtr[pos] = posPtr[j]; + else + dstPtr[pos] = negPtr[j]; + } + } +} + +/* cz277 - laf */ +void ApplyDParmReLUAct(NMatrix *inpMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(inpMat->colNum == col && posVec->vecLen == col && negVec->vecLen && dstMat->colNum == col)) + HError(5221, "ApplyDParmReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= inpMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDParmReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDParmReLUActCUDA(inpMat->devElems, row, col, posVec->devElems, negVec->devElems, dstMat->devElems); +#else + ApplyDParmReLUActCPU(inpMat->matElems, row, col, posVec->vecElems, negVec->vecElems, dstMat->matElems); +#endif +} + +static inline void ApplyTrParmReLUActCPU(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr) { + int i, j, pos; + + if (accFlag == FALSE) { + memset(dPosPtr, 0, col * sizeof(NFloat)); + memset(dNegPtr, 0, col * sizeof(NFloat)); + } + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + if (inpPtr[pos] > 0.0) + dPosPtr[j] += errPtr[pos] * inpPtr[pos]; + else + dNegPtr[j] += errPtr[pos] * inpPtr[pos]; + } + } +} + +/* cz277 - pact */ +void ApplyTrParmReLUAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, Boolean accFlag, NVector *dPosVec, NVector *dNegVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && inpMat->colNum == col && dPosVec->vecLen == col && dNegVec->vecLen == col)) + HError(5221, "ApplyTrParmReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= inpMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyTrParmReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrParmReLUActCUDA(errMat->devElems, inpMat->devElems, row, col, accFlag, dPosVec->devElems, dNegVec->devElems); +#else + ApplyTrParmReLUActCPU(errMat->matElems, inpMat->matElems, row, col, accFlag, dPosVec->vecElems, dNegVec->vecElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyPReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (srcPtr[pos] > 0) + dstPtr[pos] = scalePtr[j] * srcPtr[pos]; + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && scaleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyPReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyPReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyPReLUActCUDA(srcMat->devElems, row, col, scaleVec->devElems, dstMat->devElems); +#else + ApplyPReLUActCPU(srcMat->matElems, row, col, scaleVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyDPReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (scalePtr[j] != 0.0 && srcPtr[pos] / scalePtr[j] > 0.0) + dstPtr[pos] = scalePtr[j]; + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyDPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && scaleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDPReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyPDReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDPReLUActCUDA(srcMat->devElems, row, col, scaleVec->devElems, dstMat->devElems); +#else + ApplyDPReLUActCPU(srcMat->matElems, row, col, scaleVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyTrPReLUActCPU(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr) { + int i, j, pos; + NFloat act; + + if (accFlag == FALSE) + memset(dScalePtr, 0, col * sizeof(NFloat)); + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + if (scalePtr[j] != 0.0) { + act = srcPtr[pos] / scalePtr[j]; + if (act > 0.0) + dScalePtr[j] += errPtr[pos] * act; + } + } + } +} + +/* cz277 - pact */ +void ApplyTrPReLUAct(NMatrix *errMat, NMatrix *srcMat, int row, int col, NVector *scaleVec, Boolean accFlag, NVector *dScaleVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && srcMat->colNum == col && scaleVec->vecLen == col && dScaleVec->vecLen == col)) + HError(5221, "ApplyDPReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyDPReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrPReLUActCUDA(errMat->devElems, srcMat->devElems, row, col, scaleVec->devElems, accFlag, dScaleVec->devElems); +#else + ApplyTrPReLUActCPU(errMat->matElems, srcMat->matElems, row, col, scaleVec->vecElems, accFlag, dScaleVec->vecElems); +#endif +} + +static inline void ApplyDSoftReLActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + NFloat expVal; + + for (i = 0; i < len; ++i) { + expVal = srcPtr[i]; + CHKNFLTEXPE(expVal) + expVal = exp(expVal); + dstPtr[i] = 1.0 - 1.0 / expVal; + } +} + +#ifdef MKL +static inline void ApplyDSoftReLActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (srcPtr != dstPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdExp(len, dstPtr, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, 1.0, -1.0, 1.0, 0.0, dstPtr); + #else + vsExp(len, dstPtr, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, 1.0, -1.0, 1.0, 0.0, dstPtr); + #endif +} +#endif + +void ApplyDSoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDSoftReLAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDSoftReLAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDSoftReLActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyDSoftReLActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyDSoftReLActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySoftReLActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + NFloat expVal; + + for (i = 0; i < len; ++i) { + expVal = srcPtr[i]; + CHKNFLTEXPE(expVal) + expVal = exp(expVal); + dstPtr[i] = log(1.0 + expVal); + } +} + +#ifdef MKL +static inline void ApplySoftReLActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (srcPtr != dstPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + + #ifdef DOUBLEANN + vdExp(len, dstPtr, dstPtr); + vdLog1p(len, dstPtr, dstPtr); + #else + vsExp(len, dstPtr, dstPtr); + vsLog1p(len, dstPtr, dstPtr); + #endif +} +#endif + +void ApplySoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySoftReLAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySoftReLAct: Input row number out of range"); + } +#ifdef CUDA + ApplySoftReLActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplySoftReLActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplySoftReLActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySigmoidActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + float floatVal; + + /* len = row * col */ + for (i = 0; i < len; ++i) { + floatVal = -1.0 * srcPtr[i]; + CHKNFLTEXPE(floatVal) + dstPtr[i] = 1.0 / (1.0 + exp(floatVal)); + /*dstPtr[i] = 1.0 / (1.0 + exp(-1.0 * srcPtr[i]));*/ + } +} + +#ifdef MKL +/*static inline void ApplySigmoidActMKL(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int len; + + len = row * col; + #ifdef DOUBLEANN + vdExp(len, srcPtr, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, 1.0, 0.0, 1.0, 1.0, dstPtr); + #else + vsExp(len, srcPtr, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, 1.0, 0.0, 1.0, 1.0, dstPtr); + #endif +}*/ +static inline void ApplySigmoidActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) { + dstPtr[i] = -1.0 * srcPtr[i]; + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdExp(len, dstPtr, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, 0.0, 1.0, 1.0, 1.0, dstPtr); + #else + vsExp(len, dstPtr, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, 0.0, 1.0, 1.0, 1.0, dstPtr); + #endif +} +#endif + +void ApplySigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplySigmoidActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplySigmoidActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplySigmoidActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplyDSigmoidActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) + dstPtr[i] = (1 - srcPtr[i]) * srcPtr[i]; +} + +#ifdef MKL +static inline void ApplyDSigmoidActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + /*int len; + + len = row * col;*/ + #ifdef DOUBLEANN + vdSqr(len, srcPtr, tmpNMat->matElems); + vdSub(len, srcPtr, tmpNMat->matElems, dstPtr); + #else + vsSqr(len, srcPtr, tmpNMat->matElems); + vsSub(len, srcPtr, tmpNMat->matElems, dstPtr); + #endif +} +#endif + +void ApplyDSigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDSigmoidActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyDSigmoidActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyDSigmoidActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplyTanHActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + float floatVal; + + /* len = row * col */ + for (i = 0; i < len; ++i) { + floatVal = srcPtr[i]; + CHKNFLTEXPE(floatVal) + floatVal = exp(floatVal); + dstPtr[i] = (floatVal - 1.0 / floatVal) / (floatVal + 1.0 / floatVal); + } +} + +#ifdef MKL +static inline void ApplyTanHActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) { + if (dstPtr != srcPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdTanh(len, dstPtr, dstPtr); + #else + vsTanh(len, dstPtr, dstPtr); + #endif +} +#endif + +void ApplyTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyTanHAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyTanHAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTanHActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyTanHActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyTanHActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplyDTanHActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) + dstPtr[i] = 1 - pow(srcPtr[i], 2); +} + +#ifdef MKL +static inline void ApplyDTanHActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + /*int len; + + len = row * col;*/ + #ifdef DOUBLEANN + vdPowx(len, srcPtr, 2, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, -1.0, 1.0, 0.0, 1.0, dstPtr); + #else + vsPowx(len, srcPtr, 2, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, -1.0, 1.0, 0.0, 1.0, dstPtr); + #endif +} +#endif + +void ApplyDTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDTanHAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDTanHAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDTanHActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyDTanHActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyDTanHActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySoftmaxActCPU(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, j, off; + NFloat sumval, maxval; + + for (i = 0, off = 0; i < row; ++i, off += col) { + #ifdef DOUBLEANN + maxval = MINFLTEXPE; + #else + maxval = MINDBLEXPE; + #endif + sumval = 0.0; + + for (j = 0; j < col; ++j) { + dstPtr[off + j] = srcPtr[off + j]; + CHKNFLTEXPE(dstPtr[off + j]) + if (dstPtr[off + j] > maxval) + maxval = dstPtr[off + j]; + } + for (j = 0; j < col; ++j) { + dstPtr[off + j] = exp(dstPtr[off + j] - maxval); + sumval += dstPtr[off + j]; + } + for (j = 0; j < col; ++j) { + dstPtr[off + j] /= sumval; + } + } +} + +#ifdef MKL +static inline void ApplySoftmaxActMKL(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, j, off; + NFloat sumval, maxval; + + for (i = 0, off = 0; i < row; ++i, off += col) { +#ifdef DOUBLEANN + maxval = MINFLTEXPE; +#else + maxval = MINDBLEXPE; +#endif + for (j = 0; j < col; ++j) { + dstPtr[off + j] = srcPtr[off + j]; + CHKNFLTEXPE(dstPtr[off + j]) + if (dstPtr[off + j] > maxval) + maxval = dstPtr[off + j]; + } + for (j = 0; j < col; ++j) { + dstPtr[off + j] -= maxval; + } + #ifdef DOUBLEANN + vdExp(col, &dstPtr[off], &dstPtr[off]); + sumval = cblas_dasum(col, &dstPtr[off], 1); + cblas_dscal(col, 1.0 / sumval, &dstPtr[off], 1); + #else + vsExp(col, &dstPtr[off], &dstPtr[off]); + sumval = cblas_sasum(col, &dstPtr[off], 1); + cblas_sscal(col, 1.0 / sumval, &dstPtr[off], 1); + #endif + } +} +#endif + +void ApplySoftmaxAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySoftmaxAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySoftmaxAct: Input row number out of range"); + } +#ifdef CUDA + ApplyRedSoftmaxActCUDA(srcMat->devElems, row, col, dstMat->devElems); +#else + #ifdef MKL + ApplySoftmaxActMKL(srcMat->matElems, row, col, dstMat->matElems); + #else + ApplySoftmaxActCPU(srcMat->matElems, row, col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySoftSignActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) + dstPtr[i] = srcPtr[i] / (1 + abs(srcPtr[i])); +} + +void ApplySoftSignAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySoftSignAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySoftSignAct: Input row number out of range"); + } +#ifdef CUDA + ApplySoftSignActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + ApplySoftSignActCPU(srcMat->matElems, row * col, dstMat->matElems); +#endif +} + +/* or 1.7159 * tanh(0.666666 * x) */ +/*static inline void ApplyTanHActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + NFloat expVal; + + for (i = 0; i < len; ++i) { + expVal = srcPtr[i]; + CHKNFLTEXPE(expVal) + expVal = exp(expVal); + dstPtr[i] = (expVal - 1 / expVal) / (expVal + 1 / expVal); + } +} + +#ifdef MKL +static inline void ApplyTanHActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (dstPtr != srcPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdTanh(len, dstPtr, dstPtr); + #else + vsTanh(len, dstPtr, dstPtr); + #endif +} +#endif + +void ApplyTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(9999, "ApplyTanHAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyTanHAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTanHActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyTanHActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyTanHActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} +*/ + +static inline void ApplyLogTransCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) { + if (srcPtr[i] <= 0) { /* srcPtr[i] < 0? */ + dstPtr[i] = LZERO; + } + else { + dstPtr[i] = log(srcPtr[i]); + if (dstPtr[i] < LSMALL) { + dstPtr[i] = LSMALL; + } + } + } +} + +/*#ifdef MKL +static inline void ApplyLogTransMKL(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, len; + + len = row * col; + for (i = 0; i < len; ++i) { + if (srcPtr[i] <= 0) { + srcPtr[i] = 1E-20; + } + } + #ifdef DOUBLEANN + vdLn(len, srcPtr, dstPtr); + #else + vsLn(len, srcPtr, dstPtr); + #endif +} +#endif*/ + +void ApplyLogTrans(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyLogTrans: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyLogTrans: Input row number out of range"); + } +#ifdef CUDA + ApplyLogTransCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + ApplyLogTransCPU(srcMat->matElems, row * col, dstMat->matElems); +#endif +} + +static inline void SumNMatrixByColCPU(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr) { + NFloat *res_end_b8p = dstPtr + (col & ~7); + NFloat *res_end_p = dstPtr + col; + NFloat *res_p = dstPtr; + NFloat *in_p = srcPtr; + int i; + + if (accFlag == FALSE) + memset(res_p, 0, col * sizeof(NFloat)); + + while (res_p != res_end_b8p) { + res_p[0] += in_p[0]; + res_p[1] += in_p[1]; + res_p[2] += in_p[2]; + res_p[3] += in_p[3]; + res_p[4] += in_p[4]; + res_p[5] += in_p[5]; + res_p[6] += in_p[6]; + res_p[7] += in_p[7]; + res_p += 8; + in_p += 8; + } + while (res_p != res_end_p) + (*res_p++) += (*in_p++); + + for (i = 1; i != row; ++i) { + res_p = dstPtr; + while (res_p != res_end_b8p) { + res_p[0] += in_p[0]; + res_p[1] += in_p[1]; + res_p[2] += in_p[2]; + res_p[3] += in_p[3]; + res_p[4] += in_p[4]; + res_p[5] += in_p[5]; + res_p[6] += in_p[6]; + res_p[7] += in_p[7]; + res_p += 8; + in_p += 8; + } + while (res_p != res_end_p) + (*res_p++) += (*in_p++); + } +} + +void SumNMatrixByCol(NMatrix *srcMat, int row, int col, Boolean accFlag, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum >= row)) + HError(5221, "SumMatrixByCol: Row number inconsistent"); + if (!(srcMat->colNum == col && dstVec->vecLen == col)) + HError(5221, "SumMatrixByCol: Column number inconsistent"); + } +#ifdef CUDA + RedSumNMatrixByColCUDA(srcMat->devElems, row, col, accFlag, dstVec->devElems); +#else + SumNMatrixByColCPU(srcMat->matElems, row, col, accFlag, dstVec->vecElems); +#endif + +} + +static inline void SquaredNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + dstPtr[i] = pow(srcPtr[i], 2); + } +} + +#ifdef MKL +static inline void SquaredNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + #ifdef DOUBLEANN + vdPowx(segLen, srcPtr, 2, dstPtr); + #else + vsPowx(segLen, srcPtr, 2, dstPtr); + #endif +} +#endif + +void SquaredNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum >= row && dstMat->rowNum >= row)) + HError(5221, "SquaredNMatrix: Incompatible matrix row number"); + if (!(srcMat->colNum >= col && dstMat->colNum >= col)) + HError(5221, "SquaredNMatrix: Incompatible matrix column number"); + } + +#ifdef CUDA + SquaredNSegmentCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + SquaredNSegmentMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + SquaredNSegmentCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +void SquaredNVector(NVector *srcVec, int len, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcVec->vecLen >= len && dstVec->vecLen >= len)) + HError(5221, "SquaredNMatrix: Incompatible vector lengths"); + } + +#ifdef CUDA + SquaredNSegmentCUDA(srcVec->devElems, len, dstVec->devElems); +#else + #ifdef MKL + SquaredNSegmentMKL(srcVec->vecElems, len, dstVec->vecElems); + #else + SquaredNSegmentCPU(srcVec->vecElems, len, dstVec->vecElems); + #endif +#endif +} + +static inline void CompAdaGradNSegmentCPU(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg) { + int i; + + for (i = 0; i < segLen; ++i) { + nlrSeg[i] = eta / sqrt(K + ssgSeg[i]); + } +} + +void CompAdaGradNVector(NFloat eta, int K, NVector *ssgVec, NVector *nlrVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(ssgVec->vecLen == nlrVec->vecLen)) + HError(5221, "CompAdaGradNVector: Vector length inconsistent"); + } +#ifdef CUDA + CompAdaGradNSegmentCUDA(eta, K, nlrVec->vecLen, ssgVec->devElems, nlrVec->devElems); +#else + CompAdaGradNSegmentCPU(eta, K, nlrVec->vecLen, ssgVec->vecElems, nlrVec->vecElems); +#endif +} + +void CompAdaGradNMatrix(NFloat eta, int K, NMatrix *ssgMat, NMatrix *nlrMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(ssgMat->rowNum == nlrMat->rowNum)) + HError(5221, "CompAdaGradNMatrix: Matrix row inconsistent"); + if (!(ssgMat->colNum == nlrMat->colNum)) + HError(5221, "CompAdaGradNMatrix: Matrix column inconsistent"); + } +#ifdef CUDA + CompAdaGradNSegmentCUDA(eta, K, nlrMat->rowNum * nlrMat->colNum, ssgMat->devElems, nlrMat->devElems); +#else + CompAdaGradNSegmentCPU(eta, K, nlrMat->rowNum * nlrMat->colNum, ssgMat->matElems, nlrMat->matElems); +#endif +} + +static inline void FindMaxElementCPU(NFloat *srcPtr, int row, int col, IntVec resVec) { + int maxIdx, i, j; + NFloat maxVal; + + for (i = 0; i < row; ++i) { + maxIdx = 0; + maxVal = srcPtr[i * col + 0]; + for (j = 1; j < col; ++j) { + if (maxVal < srcPtr[i * col + j]) { + maxIdx = j; + maxVal = srcPtr[i * col + j]; + } + } + resVec[i + 1] = maxIdx; + } +} + + +/*#ifdef MKL +static inline void FindMaxElementMKL(NFloat *srcPtr, int row, int col, IntVec resVec) { + int i, maxIdx; + + for (i = 0; i < row; ++i) { +#ifdef DOUBLEANN + maxIdx = cblas_idamax(col, &srcPtr[i * col], 1); +#else + maxIdx = cblas_isamax(col, &srcPtr[i * col], 1); +#endif + resVec[i + 1] = maxIdx; + } +} +#endif*/ + +/* TODO: GPU support */ +void FindMaxElement(NMatrix *srcMat, int row, int col, IntVec resVec) { +#ifdef CUDA + int i; +#endif + + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col)) + HError(5221, "FindMaxElement: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= IntVecSize(resVec))) + HError(5221, "FindMaxElement: Input row number out of range"); + } + +#ifdef CUDA + FindMaxElementCUDA(srcMat->devElems, row, col, tmpNMat->devElems); + SyncNMatrixDev2Host(tmpNMat); + for (i = 0; i < row; ++i) + resVec[i + 1] = (int) tmpNMat->matElems[i]; +#else + FindMaxElementCPU(srcMat->matElems, row, col, resVec); +#endif + +} + +static inline void HNBlasNNgemmCPU(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + int i, j, l; + + /*for (i = 0; i < m; ++i) { + for (l = 0; l < k; ++l) { + C[i * k + l] *= beta; + for (j = 0; j < n; ++j) { + C[i * k + l] += alpha * A[i * n + j] * B[j * k + l]; + } + } + }*/ + for (i = 0; i < n; ++i) { + for (j = 0; j < m; ++j) { + C[i * m + j] *= beta; + for (l = 0; l < k; ++l) { + C[i * m + j] += alpha * A[l * m + j] * B[i * k + l]; + } + } + } +} + +#ifdef MKL +static inline void HNBlasNNgemmMKL(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + #ifdef DOUBLEANN + cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, m, n, k, alpha, A, m, B, k, beta, C, m); + #else + cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, m, n, k, alpha, A, m, B, k, beta, C, m); + #endif +} +#endif + +/* do C[m * k] = a * A[m * n] * B[n * k] + b * C[m * k] */ +void HNBlasNNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C) { + /* safety check */ + if (trace & T_DIM) { + if (!(m > 0 && m <= A->rowNum && m <= C->rowNum)) + HError(5221, "HNBlasNNgemm: First input dimension out of range"); + if (!(n > 0 && n <= A->colNum && n <= B->rowNum)) + HError(5221, "HNBlasNNgemm: Second input dimension out of range"); + if (!(k > 0 && k <= B->colNum && k <= C->colNum)) + HError(5221, "HNBlasNNgemm: Third input dimension out of range"); + } +#ifdef CUDA + HNBlasNNgemmCUDA(m, n, k, alpha, A->devElems, B->devElems, beta, C->devElems); +#else + #ifdef MKL + HNBlasNNgemmMKL(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #else + HNBlasNNgemmCPU(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #endif +#endif +} + +static inline void HNBlasNTgemmCPU(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + int i, j, l; + /*for (i = 0; i < m; ++i) { + for (l = 0; l < k; ++l) { + C[i * k + l] *= beta; + for (j = 0; j < n; ++j) { + C[i * k + l] += alpha * A[i * n + j] * B[l * n + j]; + } + } + }*/ + for (i = 0; i < n; ++i) { + for (j = 0; j < m; ++j) { + C[i * m + j] *= beta; + for (l = 0; l < k; ++l) { + C[i * m + j] += alpha * A[l * m + j] * B[l * n + i]; + } + } + } +} + +#ifdef MKL +static inline void HNBlasNTgemmMKL(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + #ifdef DOUBLEANN + cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans, m, n, k, alpha, A, m, B, n, beta, C, m); + #else + cblas_sgemm(CblasColMajor, CblasNoTrans, CblasTrans, m, n, k, alpha, A, m, B, n, beta, C, m); + #endif +} +#endif + +/* do C[m * k] = a * A[m * n] * B[k * n]^T + b * C[m * k] */ +void HNBlasNTgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C) { + /* safety check */ + if (trace & T_DIM) { + if (!(m > 0 && m <= A->rowNum && m <= C->rowNum)) + HError(5221, "HNBlasNTgemm: First input dimension out of range"); + if (!(n > 0 && n <= A->colNum && n <= B->colNum)) + HError(5221, "HNBlasNTgemm: Second input dimension out of range"); + if (!(k > 0 && k <= B->rowNum && k <= C->colNum)) + HError(5221, "HNBlasNTgemm: Third input dimension out of range"); + } +#ifdef CUDA + HNBlasNTgemmCUDA(m, n, k, alpha, A->devElems, B->devElems, beta, C->devElems); +#else + #ifdef MKL + HNBlasNTgemmMKL(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #else + HNBlasNTgemmCPU(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #endif +#endif + +} + +static inline void HNBlasTNgemmCPU(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + int i, j, l; + + for (i = 0; i < n; ++i) { + for (j = 0; j < m; ++j) { + C[i * m + j] *= beta; + for (l = 0; l < k; ++l) { + C[i * m + j] += alpha * A[j * k + l] * B[i * k + l]; + } + } + } +} + +#ifdef MKL +static inline void HNBlasTNgemmMKL(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + #ifdef DOUBLEANN + cblas_dgemm(CblasColMajor, CblasTrans, CblasNoTrans, m, n, k, alpha, A, k, B, k, beta, C, m); + #else + cblas_sgemm(CblasColMajor, CblasTrans, CblasNoTrans, m, n, k, alpha, A, k, B, k, beta, C, m); + #endif +} +#endif + +/* do C[m * k] = a * A[n * m]^T * B[n * k] + b * C[m * k] */ +void HNBlasTNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C) { + /* safety check */ + if (trace & T_DIM) { + if (!(m > 0 && m <= A->colNum && m <= C->rowNum)) + HError(5221, "HNBlasTNgemm: First input dimension out of range"); + if (!(n > 0 && n <= A->rowNum && n <= B->rowNum)) + HError(5221, "HNBlasTNgemm: Second input dimension out of range"); + if (!(k > 0 && k <= B->colNum && k <= C->colNum)) + HError(5221, "HNBlasTNgemm: Third input dimension out of range"); + } +#ifdef CUDA + HNBlasTNgemmCUDA(m, n, k, alpha, A->devElems, B->devElems, beta, C->devElems); +#else + #ifdef MKL + HNBlasTNgemmMKL(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #else + HNBlasTNgemmCPU(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #endif +#endif + +} + +void SetNSegmentCPU(NFloat val, NFloat *segPtr, int segLen) { + int i; + + for (i = 0; i < segLen; ++i) + segPtr[i] = val; +} + +void SetNVector(NFloat val, NVector *vec) { +#ifdef CUDA + SetNSegmentCUDA(val, vec->devElems, vec->vecLen); +#else + SetNSegmentCPU(val, vec->vecElems, vec->vecLen); +#endif +} + +void SetNMatrix(NFloat val, NMatrix *mat, int nrows) { + int len; + + len = nrows * mat->colNum; +#ifdef CUDA + SetNSegmentCUDA(val, mat->devElems, len); +#else + SetNSegmentCPU(val, mat->matElems, len); +#endif +} + +void SetNMatrixSegment(NFloat val, NMatrix *mat, int off, int len) { + +#ifdef CUDA + SetNSegmentCUDA(val, mat->devElems + off, len); +#else + SetNSegmentCPU(val, mat->matElems + off, len); +#endif +} + +void SetNVectorSegment(NFloat val, NVector *vec, int off, int len) { +#ifdef CUDA + SetNSegmentCUDA(val, vec->devElems + off, len); +#else + SetNSegmentCPU(val, vec->vecElems + off, len); +#endif +} + +static void ClearNSegmentCPU(NFloat *segPtr, int segLen) { + memset(segPtr, 0, segLen * sizeof(NFloat)); +} + +void ClearNVector(NVector *vec) { + +#ifdef CUDA + ClearNSegmentCUDA(vec->devElems, vec->vecLen); +#else + ClearNSegmentCPU(vec->vecElems, vec->vecLen); +#endif +} + +void ClearNMatrix(NMatrix *mat, int nrows) { + int len; + + len = nrows * mat->colNum; +#ifdef CUDA + ClearNSegmentCUDA(mat->devElems, len); +#else + ClearNSegmentCPU(mat->matElems, len); +#endif +} + +void ClearNMatrixSegment(NMatrix *mat, int off, int len) { + +#ifdef CUDA + ClearNSegmentCUDA(mat->devElems + off, len); +#else + ClearNSegmentCPU(mat->matElems + off, len); +#endif +} + +void ClearNVectorSegment(NVector *vec, int off, int len) { + +#ifdef CUDA + ClearNSegmentCUDA(vec->devElems + off, len); +#else + ClearNSegmentCPU(vec->vecElems + off, len); +#endif +} + +/*void ClearNVector(NVector *vec) { + + ClearNSegmentCPU(vec->vecElems, vec->vecLen); +#ifdef CUDA + SyncHost2Dev(vec->vecElems, vec->devElems, vec->vecLen * sizeof(NFloat)); +#endif +} + +void ClearNMatrix(NMatrix *mat, int nrows) { + int len; + + len = nrows * mat->colNum; + ClearNSegmentCPU(mat->matElems, len); +#ifdef CUDA + SyncHost2Dev(mat->matElems, mat->devElems, len * sizeof(NFloat)); +#endif +} + +void ClearNMatrixSegment(NMatrix *mat, int off, int len) { + + ClearNSegmentCPU(mat->matElems + off, len); +#ifdef CUDA + SyncHost2Dev(mat->matElems + off, mat->devElems + off, len * sizeof(NFloat)); +#endif +} + +void ClearNVectorSegment(NVector *vec, int off, int len) { + + ClearNSegmentCPU(vec->vecElems + off, len); +#ifdef CUDA + SyncHost2Dev(vec->vecElems + off, vec->devElems + off, len * sizeof(NFloat)); +#endif +}*/ + +/*void SetNVector(NFloat val, NVector *vec) { + +#ifdef CUDA + SyncNVectorDev2Host(vec); +#endif + SetNSegmentCPU(val, vec->vecElems, vec->vecLen); +#ifdef CUDA + SyncNVectorHost2Dev(vec); +#endif +} + +void SetNMatrix(NFloat val, NMatrix *mat, int nrows) { + +#ifdef CUDA + SyncNMatrixDev2Host(mat); +#endif + SetNSegmentCPU(val, mat->matElems, nrows * mat->colNum); +#ifdef CUDA + SyncNMatrixHost2Dev(mat); +#endif +} + +void SetNMatrixSegment(NFloat val, NMatrix *mat, int off, int len) { + +#ifdef CUDA + SyncNMatrixDev2Host(mat); +#endif + SetNSegmentCPU(val, mat->matElems + off, len); +#ifdef CUDA + SyncNMatrixHost2Dev(mat); +#endif +} + +void SetNVectorSegment(NFloat val, NVector *vec, int off, int len) { + +#ifdef CUDA + SyncNVectorDev2Host(vec); +#endif + SetNSegmentCPU(val, vec->vecElems + off, len); +#ifdef CUDA + SyncNVectorHost2Dev(vec); +#endif +}*/ + +/* cz277 - laf */ +void RandNSegmentGaussian(NFloat mu, NFloat sigma, int segLen, NFloat *segPtr) { + int i; + + if (sigma <= 0.0) + HError(5225, "RandNSegmentGauss: Standard deviation need to be positive"); + for (i = 0; i < segLen; ++i) { + segPtr[i] = GaussDeviate(mu, sigma); + } +} + +void RandNSegmentUniform(NFloat lower, NFloat upper, int segLen, NFloat *segPtr) { + int i; + NFloat range; + + range = upper - lower; + if (range < 0) + HError(5225, "RandNSegment: Random range should be positive"); + for (i = 0; i < segLen; ++i) { + segPtr[i] = RandomValue(); + if (range > 0) { /* range == 0 means no operation here */ + segPtr[i] *= range; + segPtr[i] += lower; + } + } +} + +/* cz277 - 0 mask */ +void RandMaskNSegment(NFloat prob, NFloat mask, int segLen, NFloat *segPtr) { + int i; + + if (prob < 0 || prob > 1) + HError(5225, "RandMaskNSegment: Mask probability shoudl be in [0, 1]"); + for (i = 0; i < segLen; ++i) { + if (RandomValue() < prob) + segPtr[i] = mask; + } +} + +static inline void CalXENTCriterionMKL(NFloat *refSeg, NFloat *hypSeg, int segLen) { + HError(5201, "CalXENTCriterionMKL: Unimplemented method"); +} + +static inline void CalXENTCriterionCPU(NFloat *refSeg, NFloat *hypSeg, int segLen) { + int i; + NFloat tn, yn, sum; + + sum = 0.0; + for (i = 0; i < segLen; ++i) { + tn = refSeg[i]; + yn = hypSeg[i]; + if (tn == 0.0) + sum += 0.0; + else if (yn == 0.0) + sum += tn * LZERO; + else + sum += (-1.0) * tn * log(yn / tn); + } + tmpNMat->matElems[0] = sum; +} + +NFloat CalXENTCriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum) { + int segLen; + + /* safety check */ + if (trace & T_DIM) { + if (!(refMat->colNum == hypMat->colNum)) + HError(5221, "CalXENTCriterion: Column number should be consistent"); + if (!(refMat->rowNum >= rowNum && hypMat->rowNum >= rowNum)) + HError(5221, "CalXENTCriterion: Row number out of range"); + } + segLen = rowNum * refMat->colNum; +#ifdef CUDA + CalXENTCriterionCUDA(refMat->devElems, hypMat->devElems, segLen, tmpNMat->devElems); + SyncNMatrixDev2Host(tmpNMat); +#else + /*#ifdef MKL + CalXENTCriterionMKL(refMat->matElems, hypMat->matElems, segLen); + #else + CalXENTCriterionCPU(refMat->matElems, hypMat->matElems, segLen); + #endif*/ + CalXENTCriterionCPU(refMat->matElems, hypMat->matElems, segLen); +#endif + return tmpNMat->matElems[0]; +} + +static inline void CalMMSECriterionMKL(NFloat *refSeg, NFloat *hypSeg, int segLen) { + HError(5201, "CalXENTCriterionMKL: Unimplemented method"); +} + +static inline void CalMMSECriterionCPU(NFloat *refSeg, NFloat *hypSeg, int segLen) { + int i; + + tmpNMat->matElems[0] = 0.0; + for (i = 0; i < segLen; ++i) + tmpNMat->matElems[0] += pow(hypSeg[i] - refSeg[i], 2.0); +} + +NFloat CalMMSECriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum) { + int segLen; + + /* safety check */ + if (trace & T_DIM) { + if (!(refMat->colNum == hypMat->colNum)) + HError(5221, "CalMMSECriterion: Column number should be consistent"); + if (!(refMat->rowNum >= rowNum && hypMat->rowNum >= rowNum)) + HError(5221, "CalMMSECriterion: Row number out of range"); + } + segLen = rowNum * refMat->colNum; +#ifdef CUDA + CalMMSECriterionCUDA(refMat->devElems, hypMat->devElems, segLen, tmpNMat->devElems); + SyncNMatrixDev2Host(tmpNMat); +#else + /*#ifdef MKL + CalMMSECriterionMKL(refMat->matElems, hypMat->matElems, segLen); + #else + CalMMSECriterionCPU(refMat->matElems, hypMat->matElems, segLen); + #endif*/ + CalMMSECriterionCPU(refMat->matElems, hypMat->matElems, segLen); +#endif + return tmpNMat->matElems[0] / refMat->colNum; +} + +static inline void AddNSegmentTargetPenCPU(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + dstSeg[i * col + j] = srcSeg[i * col + j] + penSeg[j]; + } + } +} + +#ifdef MKL +static inline void AddNSegmentTargetPenMKL(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg) { + int i; + + for (i = 0; i < row; ++i) { +#ifdef DOUBLEANN + vdAdd(col, srcSeg + i * col, penSeg, dstSeg + i * col); +#else + vsAdd(col, srcSeg + i * col, penSeg, dstSeg + i * col); +#endif + } +} +#endif + +void AddNVectorTargetPen(NMatrix *srcMat, NVector *penVec, int nrows, NMatrix *dstMat) { + + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == penVec->vecLen && dstMat->colNum == penVec->vecLen)) + HError(5221, "AddNVectorTargetPen: Column number should equal to the vector length"); + if (!(nrows <= srcMat->rowNum && nrows <= dstMat->rowNum)) + HError(5221, "AddNVectorTargetPen: Row number out of range"); + } +#ifdef CUDA + AddNSegmentTargetPenCUDA(srcMat->devElems, penVec->devElems, nrows, penVec->vecLen, dstMat->devElems); +#else + #ifdef MKL + AddNSegmentTargetPenMKL(srcMat->matElems, penVec->vecElems, nrows, penVec->vecLen, dstMat->matElems); + #else + AddNSegmentTargetPenCPU(srcMat->matElems, penVec->vecElems, nrows, penVec->vecLen, dstMat->matElems); + #endif +#endif +} + +static inline void ShiftNSegmentValsCPU(NFloat *srcSeg, int segLen, NFloat shiftVal, NFloat *dstSeg) { + int i; + + for (i = 0; i < segLen; ++i) { + dstSeg[i] = srcSeg[i] + shiftVal; + } +} + +/* cz277 - semi */ +/* */ +void ShiftNMatrixVals(NMatrix *srcMat, int row, int col, NFloat shiftVal, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum >= row && dstMat->rowNum >= row)) + HError(5221, "ShiftNMatrixVals: Incompatible matrix row number"); + if (!(srcMat->colNum >= col && dstMat->colNum >= col)) + HError(5221, "ShiftNMatrixVals: Incompatible matrix column number"); + } +#ifdef CUDA + ShiftNSegmentValsCUDA(srcMat->devElems, row * col, shiftVal, dstMat->devElems); +#else + ShiftNSegmentValsCPU(srcMat->matElems, row * col, shiftVal, dstMat->matElems); +#endif +} + +/* cz277 - semi */ +/* */ +void ShiftNVectorVals(NVector *srcVec, int len, NFloat shiftVal, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcVec->vecLen >= len && dstVec->vecLen >= len)) + HError(5221, "ShiftNVectorVals: Incompatible vector lengths"); + } +#ifdef CUDA + ShiftNSegmentValsCUDA(srcVec->devElems, len, shiftVal, dstVec->devElems); +#else + ShiftNSegmentValsCPU(srcVec->vecElems, len, shiftVal, dstVec->vecElems); +#endif +} + +static void CopyPartialNSegmentCPU(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + int i; + + for (i = 0; i < minRow; ++i) { + memcpy(dstPtr + i * dstCol, srcPtr + i * srcCol, sizeof(NFloat) * minCol); + } +} + +void CopyPartialNSegment(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + /* safety check */ + if (trace & T_DIM) { + if (!(minCol > srcCol || minCol > dstCol)) + HError(5221, "CopyPartialNSegment: minCol should be smaller than srcCol and dstCol"); + } + +#ifdef CUDA + CopyPartialNSegmentCUDA(minRow, minCol, srcPtr, srcCol, dstPtr, dstCol); +#else + CopyPartialNSegmentCPU(minRow, minCol, srcPtr, srcCol, dstPtr, dstCol); +#endif +} + +/* cz277 - gradlim */ +static void ClipNSegmentValsCPU(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg) { + int i; + + for (i = 0; i < len; ++i) { + if (srcSeg[i] > upperLim) + dstSeg[i] = upperLim; + else if (srcSeg[i] < lowerLim) + dstSeg[i] = lowerLim; + else if (srcSeg != dstSeg) + dstSeg[i] = srcSeg[i]; + } +} + +/* cz277 - gradlim */ +void ClipNMatrixVals(NMatrix* srcMat, int row, int col, NFloat upperLim, NFloat lowerLim, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(col > 0 && col <= srcMat->colNum && col <= dstMat->colNum)) + HError(5221, "ClipNMatrixVals: Input matrix column number out of range"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ClipNMatrixVals: Input matrix row number out of range"); + if (!(upperLim >= lowerLim)) + HError(5225, "ClipNMatrixVals: Invalid input value limits"); + } +#ifdef CUDA + ClipNSegmentValsCUDA(srcMat->devElems, row * col, upperLim, lowerLim, dstMat->devElems); +#else + ClipNSegmentValsCPU(srcMat->matElems, row * col, upperLim, lowerLim, dstMat->matElems); +#endif + +} + +/* cz277 - gradlim */ +void ClipNVectorVals(NVector* srcVec, int len, NFloat upperLim, NFloat lowerLim, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= srcVec->vecLen && len <= dstVec->vecLen)) + HError(5221, "ClipNVectorVals: Input vector length out of range"); + if (!(upperLim >= lowerLim)) + HError(5225, "ClipNVectorVals: Invalid input value limits"); + } +#ifdef CUDA + ClipNSegmentValsCUDA(srcVec->devElems, len, upperLim, lowerLim, dstVec->devElems); +#else + ClipNSegmentValsCPU(srcVec->vecElems, len, upperLim, lowerLim, dstVec->vecElems); +#endif + +} + +/* cz277 - max norm */ +static void CalNMatrixL2NormByRowCPU(NFloat *matPtr, int row, int col, NFloat *normPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + normPtr[i] = 0.0; + for (j = 0; j < col; ++j) + normPtr[i] += pow(matPtr[i * col + j], 2.0); + normPtr[i] = sqrt(normPtr[i]); + } +} + +/* cz277 - max norm */ +void CalNMatrixL2NormByRow(NMatrix *srcMat, NVector *normVec) { + + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum <= normVec->vecLen)) + HError(5221, "CalNMatrixL2NormByRow: Norm vector dimension too small"); + } +#ifdef CUDA + CalNMatrixL2NormByRowCUDA(srcMat->devElems, srcMat->rowNum, srcMat->colNum, normVec->devElems); +#else + CalNMatrixL2NormByRowCPU(srcMat->matElems, srcMat->rowNum, srcMat->colNum, normVec->vecElems); +#endif +} + +void CalNVectorL2Norm(NVector *srcVec, NFloat *normVal) { + +#ifdef CUDA + NVector *tmpNVec = GetTmpNVec(); + CalNMatrixL2NormByRowCUDA(srcVec->devElems, 1, srcVec->vecLen, tmpNVec->devElems); + SyncNVectorDev2Host(tmpNVec); + normVal[0] = tmpNVec->vecElems[0]; +#else + CalNMatrixL2NormByRowCPU(srcVec->vecElems, 1, srcVec->vecLen, normVal); +#endif +} + +static void DivideNMatrixByRowCPU(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr) { + int i, j; + + for (i = 0; i < row; ++i) + for (j = 0; j < col; ++j) + dstPtr[i * col + j] = srcPtr[i * col + j] / normPtr[i]; +} + +void DivideNMatrixByRow(NMatrix *srcMat, NVector *normVec, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->rowNum <= normVec->vecLen)) + HError(5221, "DivideNMatrixByRow: Norm vector dimension too small"); + if (!(srcMat->rowNum == dstMat->rowNum && srcMat->colNum >= dstMat->colNum)) + HError(5221, "DivideNMatrixByRow: Inconsistent matrix dimensions"); + } +#ifdef CUDA + DivideNMatrixByRowCUDA(srcMat->devElems, srcMat->rowNum, srcMat->colNum, normVec->devElems, dstMat->devElems); +#else + DivideNMatrixByRowCPU(srcMat->matElems, srcMat->rowNum, srcMat->colNum, normVec->vecElems, dstMat->matElems); +#endif + +} + +/* cz277 - xform */ +int ClipInt(int min, int max, int val) { + if (val < min) + return min; + else if (val > max) + return max; + else + return val; } /* ------------------------- End of HMath.c ------------------------- */ diff --git a/HTKLib/HMath.h b/HTKLib/HMath.h old mode 100644 new mode 100755 index 9daea9c..d9facf0 --- a/HTKLib/HMath.h +++ b/HTKLib/HMath.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMath.h: Math Support */ +/* File: HMath.h Math Support */ /* ----------------------------------------------------------- */ -/* !HVER!HMath: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HMath: 3.5.0 [CUED 12/10/15] */ #ifndef _HMATH_H_ #define _HMATH_H_ @@ -43,6 +59,30 @@ extern "C" { #define LSMALL (-0.5E10) /* log values < LSMALL are set to LZERO */ #define MINEARG (-708.3) /* lowest exp() arg = log(MINLARG) */ #define MINLARG 2.45E-308 /* lowest log() arg = exp(MINEARG) */ +/* cz277 - ANN */ +/*#define MAXFLTEXPE (88.722839052)*/ /* FLT_MAX, 3.402823466e+38 */ +/*#define MINFLTEXPE (-87.3365447504)*/ /* FLT_MIN, 1.175494351e–38 */ +/*#define MAXDBLEXPE (709.78271289338399678)*/ /* DBL_MAX, 1.7976931348623158e+308 */ +/*#define MINDBLEXPE (-708.39641853226410622)*/ /* DBL_MIN, 2.2250738585072014e–308 */ +#define MAXFLTEXPE (87.3365447504) +#define MINFLTEXPE (-87.3365447504) +#define MAXDBLEXPE (708.39641853226410622) +#define MINDBLEXPE (-708.39641853226410622) + +#define RELUNEGSCALE 0.01 +/*#define RELUNEGSCALE 0.0*/ +#define PLRELUNEGSCALE 0.25 /* cz277 - laf */ + +#ifdef DOUBLEANN +#define CHKNFLTEXPE(x) if((x)MAXDBLEXPE) (x)=MAXDBLEXPE; +#else +#define CHKNFLTEXPE(x) if((x)MAXFLTEXPE) (x)=MAXFLTEXPE; +#endif + +/* cz277 - 1004 */ +/*#define MAX(a, b) (a > b? a: b) +#define MIN(a, b) (a < b? a: b)*/ + /* NOTE: On some machines it may be necessary to reduce the values of MINEARG and MINLARG @@ -247,6 +287,124 @@ float GaussDeviate(float mu, float sigma); Return a random number with a N(mu,sigma) distribution */ +/* from xl207, cz277 - gau */ +float GaussInv(float p); +float CumGauss(float x, float mean, float var); + +/* cz277 - ANN */ +/* --------------------- ANN related math kernels --------------------- */ + +/* cz277 - 151020 */ +#ifdef MKL +void StartMKL(void); +#endif + +void RegisterTmpNMat(int nrows, int ncols); +void CreateTmpNMat(MemHeap *heap); +NMatrix *GetTmpNMat(void); +NVector *GetTmpNVec(void); +void FreeTmpNMat(MemHeap *heap); + +void CopyNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff); +void CopyNVectorSegment(NVector *srcVec, int srcOff, int segLen, NVector *dstVec, int dstOff); +void AddNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff); +void AddNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void AddNVector(NVector *srcVec, int len, NVector *dstVec); +void DupNVector(NVector *srcVec, NMatrix *dstMat, int times); +void SubNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat); +void MulNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat); +void MulNVector(NVector *lhVec, NVector *rhVec, int len, NVector *resVec); +void ScaleNMatrix(NFloat scale, int row, int col, NMatrix *valMat); +void ScaleNVector(NFloat scale, int len, NVector *valVec); +void ScaledSelfAddNVector(NVector *rhVec, int len, NFloat scale, NVector *lhVec); +void ScaledSelfAddNMatrix(NMatrix *rhMat, int row, int col, NFloat scale, NMatrix *lhMat); +/*void SumNMatrixByCol(NMatrix *srcMat, int row, int col, NFloat alpha, NFloat beta, NVector *dstVec);*/ +void SumNMatrixByCol(NMatrix *srcMat, int row, int col, Boolean accFlag, NVector *dstVec); +void SquaredNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void SquaredNVector(NVector *srcVec, int len, NVector *dstVec); +void CompAdaGradNVector(NFloat eta, int K, NVector *ssgVec, NVector *nlrVec); +void CompAdaGradNMatrix(NFloat eta, int K, NMatrix *ssgMat, NMatrix *nlrMat); +/* cz277 - laf */ +void ApplyAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat); +void ApplyDAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat); +void ApplyTrAffineAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *scaleVec, NVector *shiftVec, Boolean accFlag, NVector *dScaleVec, NVector *dShiftVec); +void AccMeanNVector(NMatrix *valMat, int row, int col, NFloat tSamp, NVector *meanVec); +void AccVarianceNVector(NMatrix *srcMat, int row, int col, NFloat tSamp, NVector *meanVec, NVector *varVec); +void ApplyLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat); +void ApplyDLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat); +void ApplyTrLHUCSigmoidAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *roleVec, Boolean accFlag, NVector *dRoleVec); +void ApplyPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat); +void ApplyDPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat); +void ApplyTrPReLUAct(NMatrix *errMat, NMatrix *srcMat, int row, int col, NVector *scaleVec, Boolean accFlag, NVector *dScaleVec); +void ApplyParmReLUAct(NMatrix *srcMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat); +void ApplyDParmReLUAct(NMatrix *inpMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat); +void ApplyTrParmReLUAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, Boolean accFlag, NVector *dPosVec, NVector *dNegVec); +void ApplyPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat); +void ApplyDPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat); +void ApplyTrPSigmoidAct(NMatrix *errMat, NMatrix *srcMat, NVector *etaVec, int row, int col, Boolean accFlag, NVector *dEtaVec); +void ApplyParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat); +void ApplyDParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat); +void ApplyTrParmSigmoidAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, Boolean accFlag, NVector *dEtaVec, NVector *dGammaVec, NVector *dThetaVec); + + +void ApplyHermiteAct(NMatrix *srcMat, int row, int col, NVector *parmVec, NMatrix*dstMat); +void ApplyReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat); +void ApplyDReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat); +void ApplyDLinearAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDSigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySoftmaxAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDSoftmaxAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDSoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySoftSignAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyLogTrans(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void FindMaxElement(NMatrix *srcMat, int row, int col, IntVec resVec); +void HNBlasNNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C); +void HNBlasNTgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C); +void HNBlasTNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C); +/*void SetNSegment(NFloat val, NFloat *segPtr, int segLen);*/ +void RandNSegmentGaussian(NFloat mu, NFloat sigma, int segLen, NFloat *segPtr); /* cz277 - laf */ +void RandNSegmentUniform(NFloat lower, NFloat upper, int segLen, NFloat *segPtr); +/* cz277 - 0 mask */ +void RandMaskNSegment(NFloat prob, NFloat mask, int segLen, NFloat *segPtr); + +NFloat CalXENTCriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum); +NFloat CalMMSECriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum); +void AddNVectorTargetPen(NMatrix *srcMat, NVector *penVec, int nrows, NMatrix *dstMat); +/* cz277 - semi */ +void ShiftNMatrixVals(NMatrix *srcMat, int row, int col, NFloat shiftVal, NMatrix *dstMat); +void ShiftNVectorVals(NVector *srcVec, int len, NFloat shiftVal, NVector *dstVec); + +void SetNSegmentCPU(NFloat val, NFloat *segPtr, int segLen); +void SetNVector(NFloat val, NVector *vec); +void SetNMatrix(NFloat val, NMatrix *mat, int nrows); +void SetNMatrixSegment(NFloat val, NMatrix *mat, int off, int len); +void SetNVectorSegment(NFloat val, NVector *vec, int off, int len); +void ClearNVector(NVector *vec); +void ClearNMatrix(NMatrix *mat, int nrows); +void ClearNMatrixSegment(NMatrix *mat, int off, int len); +void ClearNVectorSegment(NVector *vec, int off, int len); +void CopyPartialNSegment(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol); +void NanySVD(NMatrix *A, NMatrix *U, NVector *d, NMatrix *Vt); +/* cz277 - l2 fix */ +void AddScaledNMatrix(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat); +void AddScaledNVector(NVector *srcVec, int len, NFloat scale, NVector *dstVec); + +/* cz277 - gradlim */ +void ClipNMatrixVals(NMatrix* srcMat, int row, int col, NFloat upperLim, NFloat lowerLim, NMatrix *dstMat); +void ClipNVectorVals(NVector* srcVec, int len, NFloat upperLim, NFloat lowerLim, NVector *dstVec); + +/* cz277 - max norm */ +void CalNMatrixL2NormByRow(NMatrix *srcMat, NVector *normVec); +void CalNVectorL2Norm(NVector *srcVec, NFloat *normVal); +void DivideNMatrixByRow(NMatrix *srcMat, NVector *normVec, NMatrix *dstMat); + +/* cz277 - xform */ +int ClipInt(int min, int max, int val); + #ifdef __cplusplus } #endif @@ -254,3 +412,4 @@ float GaussDeviate(float mu, float sigma); #endif /* _HMATH_H_ */ /* ------------------------- End of HMath.h -------------------------- */ + diff --git a/HTKLib/HMem.c b/HTKLib/HMem.c old mode 100644 new mode 100755 index ac70525..e7e5d2b --- a/HTKLib/HMem.c +++ b/HTKLib/HMem.c @@ -3,32 +3,59 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMem.c: Memory Management Module */ +/* File: HMem.c Memory management module */ /* ----------------------------------------------------------- */ -char *hmem_version = "!HVER!HMem: 3.4.1 [CUED 12/03/09]"; -char *hmem_vc_id = "$Id: HMem.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hmem_version = "!HVER!HMem: 3.5.0 [CUED 12/10/15]"; +char *hmem_vc_id = "$Id: HMem.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" +/* cz277 - ANN */ +#include "config.h" +#include "HMath.h" int debug_level = 0; /* For esps linking */ +/* cz277 - ANN */ +#ifdef MKL +static int MKL_alignment = 64; +#endif + /* --------------------------- Trace Flags ------------------------ */ +#define MAX(a, b) ((a)>(b)?(a):(b)) +#define MIN(a, b) ((a)<(b)?(a):(b)) + static int trace = 0; #define T_TOP 0001 /* Top Level Trace */ @@ -106,11 +133,11 @@ static BlockP AllocBlock(size_t size, size_t num, HeapType type) int i; if (trace&T_TOP) - printf("HMem: AllocBlock of %u bytes\n",num*size); + printf("HMem: AllocBlock of %lu bytes\n",num*size); if ((p = (BlockP) malloc(sizeof(Block))) == NULL) HError(5105,"AllocBlock: Cannot allocate Block"); if ((p->data = (void *)malloc(size*num)) == NULL) - HError(5105,"AllocBlock: Cannot allocate block data of %u bytes",size*num); + HError(5105,"AllocBlock: Cannot allocate block data of %lu bytes",size*num); switch (type){ case MHEAP: if ((p->used = (ByteP)malloc((num+7)/8)) == NULL) @@ -193,7 +220,7 @@ void InitMem(void) Register(hmem_version, hmem_vc_id); CreateHeap(&gstack, "Global Stack", MSTAK, 1, 0.0, 100000, ULONG_MAX ); /* #### should be max size_t */ - CreateHeap(&gcheap, "Global C Heap", CHEAP, 1, 0.0, 0, 0 ); + CreateHeap(&gcheap, "Global C Heap", CHEAP, 1, 0.0, 100000, ULONG_MAX); numParm = GetConfig("HMEM", TRUE, cParm, MAXGLOBS); if (numParm>0){ if (GetConfInt(cParm,numParm,"TRACE",&i)) trace = i; @@ -212,9 +239,9 @@ void CreateHeap(MemHeap *x, char *name, HeapType type, size_t elemSize, if (numElem>maxElem) HError(5170,"CreateHeap: init num elem > max elem in heap %s",name); if (elemSize <= 0) - HError(5170,"CreateHeap: elem size = %u in heap %s",elemSize,name); + HError(5170,"CreateHeap: elem size = %lu in heap %s",elemSize,name); if (type == MSTAK && elemSize !=1) - HError(5170,"CreateHeap: elem size = %u in MSTAK heap %s",elemSize,name); + HError(5170,"CreateHeap: elem size = %lu in MSTAK heap %s",elemSize,name); x->name = (char *)malloc(strlen(name)+1); strcpy(x->name,name); /* cant use a MemHeap for this!! */ x->type = type; x->growf = growf; @@ -231,7 +258,7 @@ void CreateHeap(MemHeap *x, char *name, HeapType type, size_t elemSize, case MSTAK: c='S'; break; case CHEAP: c='C'; break; } - printf("HMem: Create Heap %s[%c] %u %.1f %u %u\n",name,c, + printf("HMem: Create Heap %s[%c] %lu %.1f %lu %lu\n",name,c, elemSize, growf, numElem, maxElem); } } @@ -319,7 +346,7 @@ void *New(MemHeap *x,size_t size) determined by the curElem, the grow factor growf and the upper limit maxElem. */ if (size != 0 && size != x->elemSize) - HError(5173,"New: MHEAP req for %u size elem from heap %s size %u", + HError(5173,"New: MHEAP req for %lu size elem from heap %s size %lu", size,x->name,x->elemSize); noSpace = x->totUsed == x->totAlloc; @@ -339,7 +366,7 @@ void *New(MemHeap *x,size_t size) } x->totUsed++; if (trace&T_MHP) - printf("HMem: %s[M] %u bytes at %p allocated\n",x->name,size,q); + printf("HMem: %s[M] %lu bytes at %p allocated\n",x->name,size,q); return q; case CHEAP: chdr = MRound(sizeof(size_t)); @@ -350,7 +377,7 @@ void *New(MemHeap *x,size_t size) x->totAlloc += size+chdr; ip = (size_t *)q; *ip = size; if (trace&T_CHP) - printf("HMem: %s[C] %u+%u bytes at %p allocated\n",x->name,chdr,size,q); + printf("HMem: %s[C] %lu+%lu bytes at %p allocated\n",x->name,chdr,size,q); return (Ptr)((ByteP)q+chdr); case MSTAK: /* set required size - must alloc on double boundaries */ @@ -374,7 +401,7 @@ void *New(MemHeap *x,size_t size) } x->totUsed += size; if (trace&T_STK) - printf("HMem: %s[S] %u bytes at %p allocated\n",x->name,size,q); + printf("HMem: %s[S] %lu bytes at %p allocated\n",x->name,size,q); if (x->protectStk) { pp = (Ptr *)((long)q + size - sizeof(Ptr)); /* #### fix this! */ *pp = q; @@ -437,7 +464,7 @@ void Dispose(MemHeap *x, void *p) free(cur->data); free(cur->used); free(cur); } if (trace&T_MHP) - printf("HMem: %s[M] %u bytes at %p de-allocated\n",x->name,size,p); + printf("HMem: %s[M] %lu bytes at %p de-allocated\n",x->name,size,p); return; case MSTAK: /* search for item to dispose */ @@ -480,7 +507,7 @@ void Dispose(MemHeap *x, void *p) cur->firstFree -= size; cur->numFree += size; x->totUsed -= size; if (trace&T_STK) - printf("HMem: %s[S] %u bytes at %p de-allocated\n",x->name,size,p); + printf("HMem: %s[S] %lu bytes at %p de-allocated\n",x->name,size,p); return; case CHEAP: chdr = MRound(sizeof(size_t)); @@ -488,7 +515,7 @@ void Dispose(MemHeap *x, void *p) ip = (size_t *)bp; x->totAlloc -= (*ip + chdr); x->totUsed -= *ip; if (trace&T_CHP) - printf("HMem: %s[C] %u+%u bytes at %p de-allocated\n", + printf("HMem: %s[C] %lu+%lu bytes at %p de-allocated\n", x->name,chdr,*ip,bp); free(bp); return; @@ -508,7 +535,7 @@ void PrintHeapStats(MemHeap *x) case CHEAP: tc = 'C'; break; } for (p=x->heap; p != NULL; p = p->next) ++nBlocks; - printf("nblk=%3d, siz=%6u*%-3u, used=%9u, alloc=%9u : %s[%c]\n", + printf("nblk=%3d, siz=%6lu*%-3lu, used=%9lu, alloc=%9lu : %s[%c]\n", nBlocks, x->curElem, x->elemSize, x->totUsed, x->totAlloc*x->elemSize,x->name,tc) ; fflush(stdout); @@ -669,6 +696,21 @@ void FreeSVector(MemHeap *x, Vector v) Dispose(x,(Ptr *)(v)-2); } +/* cz277 - ANN */ +/* compare different IntVec */ +Boolean CmpIntVec(IntVec lhVec, IntVec rhVec) +{ + int i; + + if (lhVec != rhVec || lhVec == NULL || IntVecSize(lhVec) != IntVecSize(rhVec)) + return FALSE; + for (i = 1; i < lhVec[0]; ++i) + if (lhVec[i] != rhVec[i]) + return FALSE; + + return TRUE; +} + /* EXPORT->MatrixElemSize: size of matrices for creating heaps */ size_t MatrixElemSize(int nrows,int ncols) { @@ -989,4 +1031,552 @@ char *CopyString(MemHeap *x, char *s) return t; } +/* ------------- ANN Vector/Matrix Memory Management -------------- */ + +size_t CVectorElemSize(int nlen) +{ + return nlen * sizeof(float); +} + +size_t CMatrixElemSize(int nrows, int ncols) +{ + return nrows * ncols * sizeof(float); +} + +size_t CDVectorElemSize(int nlen) +{ + return nlen * sizeof(double); +} + +size_t CDMatrixElemSize(int nrows, int ncols) +{ + return nrows * ncols * sizeof(double); +} + +size_t NVectorElemSize(int nlen) +{ + return nlen * sizeof(NFloat); +} + +size_t NMatrixElemSize(int nrows, int ncols) +{ + return nrows * ncols * sizeof(NFloat); +} + +CVector *CreateCVector(MemHeap *x, int nlen) +{ + CVector *v; + v = (CVector *) New(x, sizeof(CVector)); + v->vecLen = nlen; + v->vecElems = (float *) New(x, CVectorElemSize(nlen)); + v->nUse = 0; + return v; +} + +CMatrix *CreateCMatrix(MemHeap *x, int nrows, int ncols) +{ + CMatrix *m; + m = (CMatrix *) New(x, sizeof(CMatrix)); + m->rowNum = nrows; + m->colNum = ncols; + m->matElems = (float *) New(x, CMatrixElemSize(nrows, ncols)); + m->nUse = 0; + return m; +} + +CDVector *CreateCDVector(MemHeap *x, int nlen) +{ + CDVector *v; + v = (CDVector *) New(x, sizeof(CDVector)); + v->vecLen = nlen; + v->vecElems = (double *) New(x, CDVectorElemSize(nlen)); + v->nUse = 0; + return v; +} + +CDMatrix *CreateCDMatrix(MemHeap *x, int nrows, int ncols) +{ + CDMatrix *m; + m = (CDMatrix *) New(x, sizeof(CDMatrix)); + m->rowNum = nrows; + m->colNum = ncols; + m->matElems = (double *) New(x, CDMatrixElemSize(nrows, ncols)); + m->nUse = 0; + return m; +} + +/* cz277 - 150824 */ +NVector *CreateHostNVector(MemHeap *x, int nlen) +{ + NVector *v; + + v = (NVector *) New(x, sizeof(NVector)); + memset(v, 0, sizeof(NVector)); + + v->vecLen = nlen; +#ifdef MKL + v->vecElems = (NFloat *) mkl_malloc(NVectorElemSize(nlen), MKL_alignment); +#else + v->vecElems = (NFloat *) New(x, NVectorElemSize(nlen)); +#endif + /*v->hook = &v->acc;*/ + + return v; +} + +/* cz277 - 150824 */ +NVector *CreateNVector(MemHeap *x, int nlen) +{ + NVector *v; + + v = CreateHostNVector(x, nlen); +#ifdef CUDA + DevNew(&v->devElems, NVectorElemSize(nlen)); +#endif + + return v; +} + +NMatrix *CreateHostNMatrix(MemHeap *x, int nrows, int ncols) +{ + NMatrix *m; + + m = (NMatrix *) New(x, sizeof(NMatrix)); + memset(m, 0, sizeof(NMatrix)); + + m->rowNum = nrows; + m->colNum = ncols; +#ifdef MKL + m->matElems = (NFloat *) mkl_malloc(NMatrixElemSize(nrows, ncols), MKL_alignment); +#else + m->matElems = (NFloat *) New(x, NMatrixElemSize(nrows, ncols)); +#endif + /*m->hook = &m->acc;*/ + + return m; +} + +NMatrix *CreateNMatrix(MemHeap *x, int nrows, int ncols) +{ + NMatrix *m; + + m = CreateHostNMatrix(x, nrows, ncols); +#ifdef CUDA + DevNew(&m->devElems, NMatrixElemSize(nrows, ncols)); +#endif + + return m; +} + +size_t CVectorSize(CVector *v) +{ + return v->vecLen; +} + +size_t NumCRows(CMatrix *m) +{ + return m->rowNum; +} + +size_t NumCCols(CMatrix *m) +{ + return m->colNum; +} + +size_t CDVectorSize(CDVector *v) +{ + return v->vecLen; +} + +size_t NumCDRows(CDMatrix *m) +{ + return m->rowNum; +} + +size_t NumCDCols(CDMatrix *m) +{ + return m->colNum; +} + +size_t NVectorSize(NVector *v) +{ + return v->vecLen; +} + +size_t NumNRows(NMatrix *m) +{ + return m->rowNum; +} + +size_t NumNCols(NMatrix *m) +{ + return m->colNum; +} + +void FreeCVector(MemHeap *x, CVector *v) +{ + if (x->type == CHEAP) { + Dispose(x, v->vecElems); + Dispose(x, v); + } +} + +void FreeCMatrix(MemHeap *x, CMatrix *m) +{ + if (x->type == CHEAP) { + Dispose(x, m->matElems); + Dispose(x, m); + } +} + +void FreeCDVector(MemHeap *x, CDVector *v) +{ + if (x->type == CHEAP) { + Dispose(x, v->vecElems); + Dispose(x, v); + } +} + +void FreeCDMatrix(MemHeap *x, CDMatrix *m) +{ + if (x->type == CHEAP) { + Dispose(x, m->matElems); + Dispose(x, m); + } +} + +void FreeNVector(MemHeap *x, NVector *v) +{ +#ifdef CUDA + if (v->devElems != NULL) + DevDispose(v->devElems, NVectorElemSize(v->vecLen)); + if (x->type == CHEAP) + Dispose(x, v->vecElems); +#else + #ifdef MKL + mkl_free(v->vecElems); + #else + if (x->type == CHEAP) + Dispose(x, v->vecElems); + #endif +#endif + if (x->type == CHEAP) + Dispose(x, v); +} + +void FreeNMatrix(MemHeap *x, NMatrix *m) +{ +#ifdef CUDA + if (m->devElems != NULL) + DevDispose(m->devElems, NMatrixElemSize(m->rowNum, m->colNum)); + if (x->type == CHEAP) + Dispose(x, m->matElems); +#else + #ifdef MKL + mkl_free(m->matElems); + #else + if (x->type == CHEAP) + Dispose(x, m->matElems); + #endif +#endif + if (x->type == CHEAP) + Dispose(x, m); +} + +#ifdef CUDA +void SyncNVectorDev2Host(NVector *v) +{ + if (v->devElems == NULL) + HError(5190, "SyncNVectorDev2Host: Host only NVector cannot be synchronised"); + SyncDev2Host(v->devElems, v->vecElems, NVectorElemSize(v->vecLen)); +} + +void SyncNVectorHost2Dev(NVector *v) +{ + if (v->devElems == NULL) + HError(5190, "SyncNVectorHost2Dev: Host only NVector cannot be synchronised"); + SyncHost2Dev(v->vecElems, v->devElems, NVectorElemSize(v->vecLen)); +} + +void SyncNMatrixDev2Host(NMatrix *m) +{ + if (m->devElems == NULL) + HError(5190, "SyncNMatrixDev2Host: Host only NMatrix cannot be synchronised"); + SyncDev2Host(m->devElems, m->matElems, NMatrixElemSize(m->rowNum, m->colNum)); +} + +void SyncNMatrixHost2Dev(NMatrix *m) +{ + if (m->devElems == NULL) + HError(5190, "SyncNMatrixHost2Dev: Host only NMatrix cannot be synchronised"); + SyncHost2Dev(m->matElems, m->devElems, NMatrixElemSize(m->rowNum, m->colNum)); +} +#endif + +void CopyVector2NVector(Vector v1, NVector *v2) +{ + int i, size; + + size = VectorSize(v1); + if (v2->vecLen != size) + HError(5176, "CopyVector2NVector: Inconsistent vector lengths"); + + for (i = 0; i < size; ++i) + v2->vecElems[i] = v1[i + 1]; +#ifdef CUDA + if (v2->devElems != NULL) + SyncNVectorHost2Dev(v2); +#endif +} + + +void CopyNVector2Vector(NVector *v1, Vector v2) +{ + int i, size; + + size = VectorSize(v2); + if (v1->vecLen != size) + HError(5176, "CopyNVector2Vector: Inconsistent vector lengths"); + +#ifdef CUDA + if (v1->devElems != NULL) + SyncNVectorDev2Host(v1); +#endif + for (i = 0; i < size; ++i) + v2[i + 1] = v1->vecElems[i]; +} + + +void CopyMatrix2NMatrix(Matrix m1, NMatrix *m2) +{ + int i, j, nrows, ncols; + + nrows = NumRows(m1); + ncols = NumCols(m1); + if (nrows != m2->rowNum || ncols != m2->colNum) + HError(5176, "CopyMatrix2NMatrix: Inconsistent matrix dimensions"); + + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2->matElems[i * ncols + j] = m1[i + 1][j + 1]; +#ifdef CUDA + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); +#endif +} + + +void CopyNMatrix2Matrix(NMatrix *m1, Matrix m2) +{ + int i, j, nrows, ncols; + + nrows = NumRows(m2); + ncols = NumCols(m2); + if (nrows != m1->rowNum || ncols != m1->colNum) + HError(5176, "CopyNMatrix2Matrix: Inconsistent matrix dimensions"); + +#ifdef CUDA + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); +#endif + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2[i + 1][j + 1] = m1->matElems[i * ncols + j]; +} + + +void CopyNMatrix2TrMatrix(NMatrix *m1, Matrix m2) { + int i, j, nrows, ncols; + + nrows = NumRows(m2); + ncols = NumCols(m2); + if (nrows != m1->colNum || ncols != m1->rowNum) + HError(5176, "CopyNMatrix2TrMatrix: Inconsistent matrix dimensions"); + +#ifdef CUDA + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); +#endif + for (i = 0; i < ncols; ++i) + for (j = 0; j < nrows; ++j) + m2[j + 1][i + 1] = m1->matElems[i * nrows + j]; +} + + +void CopyMatrix2TrNMatrix(Matrix m1, NMatrix *m2) { + int i, j, nrows, ncols; + + nrows = NumRows(m1); + ncols = NumCols(m1); + if (nrows != m2->colNum || ncols != m2->rowNum) + HError(5176, "CopyMatrix2TrNMatrix: Inconsistent matrix dimensions"); + + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2->matElems[j * nrows + i] = m1[i + 1][j + 1]; +#ifdef CUDA + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); +#endif +} + +/* cz277 - low rank */ +void CopyPartialDMatrix2NMatrix(DMatrix m1, NMatrix *m2) { + int i, j, nrows, ncols; + + nrows = MIN(NumDRows(m1), m2->rowNum); + ncols = MIN(NumDCols(m1), m2->colNum); + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2->matElems[i * m2->colNum + j] = (NFloat) m1[i + 1][j + 1]; +#ifdef CUDA + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); +#endif +} + + +/* cz277 - low rank */ +void CopyDMatrix2NMatrix(DMatrix m1, NMatrix *m2) { + int nrows, ncols; + + nrows = NumDRows(m1); + ncols = NumDCols(m1); + if (nrows != m2->rowNum || ncols != m2->colNum) + HError(5176, "CopyDMatrix2NMatrix: Inconsistent matrix dimensions"); + + CopyPartialDMatrix2NMatrix(m1, m2); +} + + +/* cz277 - low rank */ +void CopyNMatrix2DMatrix(NMatrix *m1, DMatrix m2) { + int i, j, nrows, ncols; + + nrows = NumDRows(m2); + ncols = NumDCols(m2); + if (nrows != m1->rowNum || ncols != m1->colNum) + HError(5176, "CopyNMatrix2DMatrix: Inconsistent matrix dimensions"); +#ifdef CUDA + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); +#endif + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2[i + 1][j + 1] = m1->matElems[i * m1->colNum + j]; +} + + +void CopyPartialNMatrix2NMatrix(NMatrix *m1, NMatrix *m2) +{ + int nrows, ncols; + + nrows = MIN(m1->rowNum, m2->rowNum); + ncols = MIN(m1->colNum, m2->colNum); +#ifdef CUDA + if (m1->devElems != NULL && m2->devElems != NULL) + CopyPartialNSegment(nrows, ncols, m1->devElems, m1->colNum, m2->devElems, m2->colNum); + else { + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); + CopyPartialNSegment(nrows, ncols, m1->matElems, m1->colNum, m2->matElems, m2->colNum); + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); + } +#else + CopyPartialNSegment(nrows, ncols, m1->matElems, m1->colNum, m2->matElems, m2->colNum); +#endif +} + +void CopyNMatrix2NMatrix(NMatrix *m1, NMatrix *m2) { + + if (m1->rowNum != m2->rowNum || m1->colNum != m2->colNum) + HError(5176, "CopyNMatrix2NMatrix: Inconsistent matrix dimensions"); + CopyPartialNMatrix2NMatrix(m1, m2); +} + +void CopyPartialNVector2NVector(NVector *v1, NVector *v2) +{ + int len; + + len = MIN(v1->vecLen, v2->vecLen); +#ifdef CUDA + if (v1->devElems != NULL && v2->devElems != NULL) + CopyPartialNSegment(1, len, v1->devElems, v1->vecLen, v2->devElems, v2->vecLen); + else { + if (v1->devElems != NULL) + SyncNVectorDev2Host(v1); + CopyPartialNSegment(1, len, v1->vecElems, v1->vecLen, v2->vecElems, v2->vecLen); + if (v2->devElems != NULL) + SyncNVectorHost2Dev(v2); + } +#else + CopyPartialNSegment(1, len, v1->vecElems, v1->vecLen, v2->vecElems, v2->vecLen); +#endif +} + +void CopyNVector2NVector(NVector *v1, NVector *v2) { + + if (v1->vecLen != v2->vecLen) + HError(5176, "CopyNVector2NVector: Inconsistent vector lengths"); + CopyPartialNVector2NVector(v1, v2); +} + +void CopyNFloatSeg2FloatSeg(NFloat *fv1, int segLen, float *fv2) { + int i; + + for (i = 0; i < segLen; ++i) + fv2[i] = (float) fv1[i]; +} + + +NMatrix *GenMaskTrNMatrix(MemHeap *x, int mappedTargetNum, IntVec mapVec) { + int i, nrows, ncols; + NMatrix *mat; + + ncols = IntVecSize(mapVec); + nrows = mappedTargetNum; + mat = CreateNMatrix(x, nrows, ncols); + SetNMatrix(0.0, mat, nrows); + for (i = 0; i < ncols; ++i) + mat->matElems[mapVec[i + 1] * ncols + i] = 1.0; + +#ifdef CUDA + if (mat->devElems != NULL) + SyncNMatrixHost2Dev(mat); +#endif + + return mat; +} + +void ShowNVector(NVector *inVec) { + int i; + +#ifdef CUDA + if (inVec->devElems != NULL) + SyncNVectorDev2Host(inVec); +#endif + for (i = 0; i < inVec->vecLen; ++i) + printf(" %d:%e", i, inVec->vecElems[i]); + printf("\n"); +} + +void ShowNMatrix(NMatrix *inMat, int nrows) { + int i, j; + +#ifdef CUDA + if (inMat->devElems != NULL) + SyncNMatrixDev2Host(inMat); +#endif + if (nrows <= 0) + nrows = inMat->rowNum; + + for (i = 0; i < nrows; ++i) { + printf("Line %d = ", i); + for (j = 0; j < inMat->colNum; ++j) + printf(" %d:%e", j, inMat->matElems[i * inMat->colNum + j]); + printf("\n"); + } +} + /* -------------------------- End of HMem.c ---------------------------- */ diff --git a/HTKLib/HMem.h b/HTKLib/HMem.h old mode 100644 new mode 100755 index c97f066..ed74cce --- a/HTKLib/HMem.h +++ b/HTKLib/HMem.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMem.h: Memory Management Module */ +/* File: HMem.h Memory Management Module */ /* ----------------------------------------------------------- */ -/* !HVER!HMem: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HMem: 3.5.0 [CUED 12/10/15] */ /* This module provides a type MemHeap which once initialised @@ -54,6 +70,11 @@ extern "C" { #endif +#include "HShell.h" +#include + +#include "config.h" + /* ----------------- Define Memory Management Functions ---------------- */ typedef enum{MHEAP, MSTAK, CHEAP} HeapType; @@ -192,6 +213,10 @@ int ShortVecSize(ShortVec v); int IntVecSize(IntVec v); int VectorSize(Vector v); int DVectorSize(DVector v); + +/* cz277 - ANN */ +Boolean CmpIntVec(IntVec lhVec, IntVec rhVec); + /* Return the number of components in vector v */ @@ -286,6 +311,124 @@ char *CopyString(MemHeap *x, char *s); Returns a pointer to a copy of string s */ +/* ------------------ ANN Types ----------------- */ + +typedef struct _CVector { + size_t vecLen; + float *vecElems; /* index starts from 0 */ + int nUse; +} CVector; + +typedef struct _CMatrix { + size_t rowNum; + size_t colNum; + float *matElems; /* row is leading; index starts from 0 */ + int nUse; +} CMatrix; + +typedef struct _CDVector { + size_t vecLen; + double *vecElems; /* index starts from 0 */ + int nUse; +} CDVector; + +typedef struct _CDMatrix { + size_t rowNum; + size_t colNum; + double *matElems; /* row is leading; index starts from 0 */ + int nUse; +} CDMatrix; + +/* types used by various kernel functions */ +#ifdef DOUBLEANN +typedef double NFloat; +#else +typedef float NFloat; +#endif + +typedef struct _NVector { + size_t vecLen; + NFloat *vecElems; /* index starts from 0 */ +#ifdef CUDA + NFloat *devElems; /* the elements on the GPU */ +#endif + int nUse; +} NVector; + +typedef struct _NMatrix { + size_t rowNum; + size_t colNum; + NFloat *matElems; /* row is leading; index starts from 0 */ +#ifdef CUDA + NFloat *devElems; /* the elements on the GPU */ +#endif + int nUse; +} NMatrix; + + +/* ------------- ANN Vector/Matrix Memory Management -------------- */ + + +size_t CVectorElemSize(int nlen); +size_t CMatrixElemSize(int nrows, int ncols); +size_t CDVectorElemSize(int nlen); +size_t CDMatrixElemSize(int nrows, int ncols); +size_t NVectorElemSize(int nlen); +size_t NMatrixElemSize(int nrows, int ncols); + +CVector *CreateCVector(MemHeap *x, int nlen); +CMatrix *CreateCMatrix(MemHeap *x, int nrows, int ncols); +CDVector *CreateCDVector(MemHeap *x, int nlen); +CDMatrix *CreateCDMatrix(MemHeap *x, int nrows, int ncols); +NVector *CreateHostNVector(MemHeap *x, int nlen); +NMatrix *CreateHostNMatrix(MemHeap *x, int nrows, int ncols); +NVector *CreateNVector(MemHeap *x, int nlen); +NMatrix *CreateNMatrix(MemHeap *x, int nrows, int ncols); + +size_t CVectorSize(CVector *v); +size_t NumCRows(CMatrix *m); +size_t NumCCols(CMatrix *m); +size_t CDVectorSize(CDVector *v); +size_t NumCDRows(CDMatrix *m); +size_t NumCDCols(CDMatrix *m); +size_t NVectorSize(NVector *v); +size_t NumNRows(NMatrix *m); +size_t NumNCols(NMatrix *m); + +void FreeCVector(MemHeap *x, CVector *v); +void FreeCMatrix(MemHeap *x, CMatrix *m); +void FreeCDVector(MemHeap *x, CDVector *v); +void FreeCDMatrix(MemHeap *x, CDMatrix *m); +void FreeNVector(MemHeap *x, NVector *v); +void FreeNMatrix(MemHeap *x, NMatrix *m); + +#ifdef CUDA +void SyncNVectorDev2Host(NVector *v); +void SyncNVectorHost2Dev(NVector *v); +void SyncNMatrixDev2Host(NMatrix *m); +void SyncNMatrixHost2Dev(NMatrix *m); +#endif + +void CopyVector2NVector(Vector v1, NVector *v2); +void CopyNVector2Vector(NVector *v1, Vector v2); +void CopyMatrix2NMatrix(Matrix m1, NMatrix *m2); +void CopyNMatrix2Matrix(NMatrix *m1, Matrix m2); +void CopyMatrix2TrNMatrix(Matrix m1, NMatrix *m2); +void CopyNMatrix2TrMatrix(NMatrix *m1, Matrix m2); +void CopyPartialNMatrix2NMatrix(NMatrix *m1, NMatrix *m2); +void CopyNMatrix2NMatrix(NMatrix *m1, NMatrix *m2); +void CopyPartialNVector2NVector(NVector *v1, NVector *v2); +void CopyNVector2NVector(NVector *v1, NVector *v2); +void CopyNFloatSeg2FloatSeg(NFloat *fv1, int segLen, float *fv2); +NMatrix *GenMaskTrNMatrix(MemHeap *x, int mappedTargetNum, IntVec mapVec); +void CopyDMatrix2NMatrix(DMatrix m1, NMatrix *m2); +void CopyPartialDMatrix2NMatrix(DMatrix m1, NMatrix *m2); +void CopyNMatrix2DMatrix(NMatrix *m1, DMatrix m2); + +void ShowNVector(NVector *inVec); +void ShowNMatrix(NMatrix *inMat, int nrows); + + #ifdef __cplusplus } #endif diff --git a/HTKLib/HModel.c b/HTKLib/HModel.c old mode 100644 new mode 100755 index 3603075..5c245fe --- a/HTKLib/HModel.c +++ b/HTKLib/HModel.c @@ -3,38 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ -/* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HModel.c HMM Model Definition Data Type */ +/* File: HModel.c HMM model definition data type */ /* ----------------------------------------------------------- */ -char *hmodel_version = "!HVER!HModel: 3.4.1 [CUED 12/03/09]"; -char *hmodel_vc_id = "$Id: HModel.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; +char *hmodel_version = "!HVER!HModel: 3.5.0 [CUED 12/10/15]"; +char *hmodel_vc_id = "$Id: HModel.c,v 1.3 2015/10/12 12:07:24 cz277 Exp $"; +#include #include "HShell.h" #include "HMem.h" #include "HMath.h" @@ -42,11 +43,17 @@ char *hmodel_vc_id = "$Id: HModel.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HTrain.h" #include "HAdapt.h" - +#include "HFB.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HNCache.h" +#include /*gives strncasecmp*/ /* --------------------------- Trace Flags ------------------------- */ static int trace = 0; @@ -111,6 +118,8 @@ static int nGaussPDE2 = 0; #endif void InitSymNames(void); +char *ActFunKind2Str(ActFunKind afkind, char *buf); +char *LayerKind2Str(LayerKind layerKind, char *buf); /* EXPORT->InitModel: initialise memory and configuration parameters */ void InitModel(void) @@ -119,12 +128,13 @@ void InitModel(void) double d; Boolean b; char buf[MAXSTRLEN]; - + Register(hmodel_version,hmodel_vc_id); CreateHeap(&xformStack,"XFormStore",MSTAK, 1, 0.5, 100 , 1000 ); strcpy(orphanMacFile,"newMacros"); InitSymNames(); nParm = GetConfig("HMODEL", TRUE, cParm, MAXGLOBS); + if (nParm>0){ if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; if (GetConfBool(cParm,nParm,"CHKHMMDEFS",&b)) checking = b; @@ -143,6 +153,8 @@ void InitModel(void) else if (strcmp(buf,"SHARED")==0) cfHSKind = SHAREDHS; else if (strcmp(buf,"TIED")==0) cfHSKind = TIEDHS; else if (strcmp(buf,"DISCRETE")==0) cfHSKind = DISCRETEHS; + else if (strcmp(buf, "HYBRID") == 0) cfHSKind = HYBRIDHS; /* cz277 - ANN */ + else if (strcmp(buf, "ANN") == 0) cfHSKind = ANNHS; /* cz277 - ANN */ else HError(7070,"InitModel: Unknown HMM kind %s",buf); forceHSKind = TRUE; @@ -155,6 +167,697 @@ void InitModel(void) } } +/* cz277 - ANN */ +void InitANNSet(HMMSet *hset) { + int i, j; + + /* cz277 - free */ + hset->annSet = (ANNSet *) New(hset->hmem, sizeof(ANNSet)); + /*hset->annSet = (ANNSet *) New(&gcheap, sizeof(ANNSet));*/ + hset->annSet->annNum = 0; + hset->annSet->defsHead = NULL; + hset->annSet->defsTail = NULL; + for (i = 0; i < SMAX; ++i) + hset->annSet->outLayers[i] = NULL; + hset->nInp[0] = hset->swidth[0]; + for (i = 1; i < SMAX; ++i) + hset->nInp[i] = 0; + for (i = 1; i < SMAX; ++i) + for (j = 1; j < MAXINPUSE; ++j) + hset->inpElem[i][j] = NULL; + for (i = 1; i < SMAX; ++i) + hset->stateInfoList[i] = NULL; + hset->annSet->mapStruct = NULL; + for (i = 1; i < SMAX; ++i) + hset->annSet->penVec[i] = NULL; +} + +/* cz277 - ANN */ +static char *GetNextFTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'F', ++hset->FTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - ANN */ +static char *GetNextLTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'L', ++hset->LTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - ANN */ +static char *GetNextNTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'N', ++hset->NTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - 150824 */ +static char *GetNextMTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'M', ++hset->MTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - 150824 */ +static char *GetNextVTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'V', ++hset->VTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - 1007 */ +LabId GetNextANNMacroName(char *invoker, HMMSet *hset, char type) { + LabId id; + char buf[MAXSTRLEN]; + char *(* GetNextMacroName)(HMMSet *, char *) = &GetNextFTypeMacroName; + + switch (type) { + case 'F': GetNextMacroName = &GetNextFTypeMacroName; break; + case 'L': GetNextMacroName = &GetNextLTypeMacroName; break; + case 'N': GetNextMacroName = &GetNextNTypeMacroName; break; + case 'M': GetNextMacroName = &GetNextMTypeMacroName; break; + case 'V': GetNextMacroName = &GetNextVTypeMacroName; break; + default: + HError(7092, "%s: Unknown ANN macro type", invoker); + } + id = GetLabId((*GetNextMacroName)(hset, buf), FALSE); + while (id != NULL) + id = GetLabId((*GetNextMacroName)(hset, buf), FALSE); + + return GetLabId(buf, TRUE); +} + +/* cz277 - 1007 */ +static Boolean GetThisMacroCount(char *macroname, char type, int *count) { + char *charptr, *intptr; + + charptr = macroname; + if (charptr == NULL) + HError(7093, "GetThisMacroCount: Empty macro name received"); + if (strncasecmp(AUTOMACRONAMEPREFIX, charptr, strlen(AUTOMACRONAMEPREFIX)) != 0) + return FALSE; + charptr += strlen(AUTOMACRONAMEPREFIX); + if (charptr[0] == type) { + intptr = ++charptr; + while (*charptr != '\0') { + if (!isdigit(*charptr)) + return FALSE; + ++charptr; + } + *count = atoi(intptr); + return TRUE; + } + else + return FALSE; +} + +/* 1007 */ +static void FreeSharedNMatrix(HMMSet *hset, NMatrix *shareMat) +{ + if (shareMat->nUse > 0) { + --shareMat->nUse; + } + else if (shareMat->nUse == 0) { + FreeNMatrix(hset->hmem, shareMat); + --shareMat->nUse; + } +} + +/* cz277 - 150811 */ +static void FreeSharedNVecBundle(MemHeap *x, NVecBundle *bundle) { + BTLink cur, next; + + --bundle->nUse; + if (bundle->nUse != 0) + return; + + if (bundle->variables != NULL) + FreeNVector(x, bundle->variables); + if (bundle->gradients != NULL) + FreeNVector(x, bundle->gradients); + if (bundle->updates != NULL) + FreeNVector(x, bundle->updates); + if (bundle->neglearnrates != NULL) + FreeNVector(x, bundle->neglearnrates); + if (bundle->sumsquaredgrad != NULL) + FreeNVector(x, bundle->sumsquaredgrad); + /*memset(bundle, 0, sizeof(NMatBundle));*/ + if (x->type == CHEAP) { + if (bundle->kind == SIBK) { + cur = bundle->hook; + while (cur != NULL) { + next = cur->nextTrace; + Dispose(x, cur); + cur = next; + } + } + Dispose(x, bundle); + } +} + +/* cz277 - 150811 */ +static void FreeSharedNMatBundle(MemHeap *x, NMatBundle *bundle) { + BTLink cur, next; + + --bundle->nUse; + if (bundle->nUse != 0) + return; + + if (bundle->variables != NULL) + FreeNMatrix(x, bundle->variables); + if (bundle->gradients != NULL) + FreeNMatrix(x, bundle->gradients); + if (bundle->updates != NULL) + FreeNMatrix(x, bundle->updates); + if (bundle->neglearnrates != NULL) + FreeNMatrix(x, bundle->neglearnrates); + if (bundle->sumsquaredgrad != NULL) + FreeNMatrix(x, bundle->sumsquaredgrad); + /*memset(bundle, 0, sizeof(NMatBundle));*/ + if (x->type == CHEAP) { + if (bundle->kind == SIBK) { + cur = bundle->hook; + while (cur != NULL) { + next = cur->nextTrace; + Dispose(x, cur); + cur = next; + } + } + Dispose(x, bundle); + } +} + +/* cz277 - 150824 */ +static void SetNVectorByNVector(NVector *svec, NVector *tvec) { + + if (svec->vecLen != tvec->vecLen) + HError(7093, "SetNVectorByNVector: Inconsistent source and target vector lengths"); +#ifdef CUDA + if (svec->devElems != NULL) + SyncNVectorDev2Host(svec); + if (tvec->devElems != NULL) + SyncNVectorDev2Host(tvec); +#endif + tvec->vecElems = svec->vecElems; +#ifdef CUDA + if (tvec->devElems != NULL) + SyncNVectorHost2Dev(tvec); +#endif +} + +/* cz277 - 150824 */ +void SetNVecBundleByNVecBundle(NVecBundle *sbundle, NVecBundle *tbundle) { + + if (sbundle->variables != NULL) { + if (tbundle->variables == NULL) + tbundle->variables = CreateHostNVector(&gcheap, sbundle->variables->vecLen); + SetNVectorByNVector(sbundle->variables, tbundle->variables); + } + if (sbundle->gradients != NULL) { + if (tbundle->gradients == NULL) + tbundle->gradients = CreateHostNVector(&gcheap, sbundle->gradients->vecLen); + SetNVectorByNVector(sbundle->gradients, tbundle->gradients); + } + if (sbundle->updates != NULL) { + if (tbundle->updates == NULL) + tbundle->updates = CreateHostNVector(&gcheap, sbundle->updates->vecLen); + SetNVectorByNVector(sbundle->updates, tbundle->updates); + } + if (sbundle->neglearnrates != NULL) { + if (tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNVector(&gcheap, sbundle->neglearnrates->vecLen); + SetNVectorByNVector(sbundle->neglearnrates, tbundle->neglearnrates); + } + if (sbundle->sumsquaredgrad != NULL) { + if (tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNVector(&gcheap, sbundle->sumsquaredgrad->vecLen); + SetNVectorByNVector(sbundle->sumsquaredgrad, tbundle->sumsquaredgrad); + } + tbundle->accptr = &sbundle->accum; +} + +/* cz277 - 150824 */ +void AugHostNVecBundleByNVecBundle(MemHeap *x, NVecBundle *sbundle, NVecBundle *tbundle) { + + if (sbundle->kind != SIBK || tbundle->kind != SDBK) + HError(7093, "AugHostNVecBundleByNVecBundle: Source/target bundle should be SI/SD"); + if (sbundle->variables == NULL || tbundle->variables == NULL) + HError(7093, "AugHostNVecBundleByNVecBundle: Both source and target variables cannot be NULL"); + if (sbundle->variables->vecLen != tbundle->variables->vecLen) + HError(7072, "AugHostNVecBundleByNVecBundle: Inconsistent vector lengths"); + + if (sbundle->gradients != NULL && tbundle->gradients == NULL) + tbundle->gradients = CreateHostNVector(x, sbundle->gradients->vecLen); + if (sbundle->updates != NULL && tbundle->updates == NULL) + tbundle->updates = CreateHostNVector(x, sbundle->updates->vecLen); + if (sbundle->neglearnrates != NULL && tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNVector(x, sbundle->neglearnrates->vecLen); + if (sbundle->sumsquaredgrad != NULL && tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNVector(x, sbundle->sumsquaredgrad->vecLen); +} + +/* cz277 - 150824 */ +static void SetNMatrixByNMatrix(NMatrix *smat, NMatrix *tmat) { + + if (smat->rowNum != tmat->rowNum || smat->colNum != tmat->colNum) + HError(7072, "SetNMatrixByNMatrix: Inconsistent source and target matrix dimensions"); +#ifdef CUDA + if (smat->devElems != NULL) + SyncNMatrixDev2Host(smat); + if (tmat->devElems != NULL) + SyncNMatrixDev2Host(tmat); +#endif + tmat->matElems = smat->matElems; +#ifdef CUDA + if (tmat->devElems != NULL) + SyncNMatrixHost2Dev(tmat); +#endif +} + +/* cz277 - 150824 */ +void SetNMatBundleByNMatBundle(NMatBundle *sbundle, NMatBundle *tbundle) { + + if (sbundle->variables != NULL) { + if (tbundle->variables == NULL) + tbundle->variables = CreateHostNMatrix(&gcheap, sbundle->variables->rowNum, sbundle->variables->colNum); + SetNMatrixByNMatrix(sbundle->variables, tbundle->variables); + } + if (sbundle->gradients != NULL) { + if (tbundle->gradients == NULL) + tbundle->gradients = CreateHostNMatrix(&gcheap, sbundle->gradients->rowNum, sbundle->gradients->colNum); + SetNMatrixByNMatrix(sbundle->gradients, tbundle->gradients); + } + if (sbundle->updates != NULL) { + if (tbundle->updates == NULL) + tbundle->updates = CreateHostNMatrix(&gcheap, sbundle->updates->rowNum, sbundle->updates->colNum); + SetNMatrixByNMatrix(sbundle->updates, tbundle->updates); + } + if (sbundle->neglearnrates != NULL) { + if (tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNMatrix(&gcheap, sbundle->neglearnrates->rowNum, sbundle->neglearnrates->colNum); + SetNMatrixByNMatrix(sbundle->neglearnrates, tbundle->neglearnrates); + } + if (sbundle->sumsquaredgrad != NULL) { + if (tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNMatrix(&gcheap, sbundle->sumsquaredgrad->rowNum, sbundle->sumsquaredgrad->colNum); + SetNMatrixByNMatrix(sbundle->sumsquaredgrad, tbundle->sumsquaredgrad); + } + tbundle->accptr = &sbundle->accum; +} + + +/* cz277 - 150824 */ +void AugHostNMatBundleByNMatBundle(MemHeap *x, NMatBundle *sbundle, NMatBundle *tbundle) { + + if (sbundle->kind != SIBK || tbundle->kind != SDBK) + HError(7093, "AugHostNMatBundleByNMatBundle: Source/target bundle should be SI/SD"); + if (sbundle->variables == NULL || tbundle->variables == NULL) + HError(7093, "AugHostNMatBundleByNMatBundle: Both source and target variables cannot be NULL"); + if (sbundle->variables->rowNum != tbundle->variables->rowNum || + sbundle->variables->colNum != tbundle->variables->colNum) + HError(7072, "AugHostNMatBundleByNMatBundle: Inconsistent matrix dimensions"); + + if (sbundle->gradients != NULL && tbundle->gradients == NULL) + tbundle->gradients = CreateHostNMatrix(x, sbundle->gradients->rowNum, sbundle->gradients->colNum); + if (sbundle->updates != NULL && tbundle->updates == NULL) + tbundle->updates = CreateHostNMatrix(x, sbundle->updates->rowNum, sbundle->updates->colNum); + if (sbundle->neglearnrates != NULL && tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNMatrix(x, sbundle->neglearnrates->rowNum, sbundle->neglearnrates->colNum); + if (sbundle->sumsquaredgrad != NULL && tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNMatrix(x, sbundle->sumsquaredgrad->rowNum, sbundle->sumsquaredgrad->colNum); +} + +/* clear the ANNSet if needed */ +void FreeANNSet(HMMSet *hset) { + int i, j, k, n; + AILink annInfo; + ADLink annDef; + LELink layerElem; + FELink feaElem; + + annInfo = hset->annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + /* proceed each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + /* remove errMix */ + if (layerElem->errMix != NULL) { + for (j = 0; j < layerElem->errMix->elemNum; ++j) { + feaElem = layerElem->errMix->feaList[j]; + n = IntVecSize(feaElem->ctxPool); + for (k = 1; k <= n; ++k) + FreeSharedNMatrix(hset, feaElem->feaMats[k]); + /*Dispose(&gcheap, feaElem->feaMats);*/ + } + n = IntVecSize(layerElem->errMix->ctxPool); + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->errMix->mixMats[j]); + /*Dispose(&gcheap, layerElem->errMix->mixMats);*/ + } + /* remove trainInfo */ + n = IntVecSize(layerElem->drvCtx); + if (layerElem->trainInfo != NULL) { + /* remove labMat */ + if (layerElem->trainInfo->labMat != NULL) + FreeNMatrix(hset->hmem, layerElem->trainInfo->labMat); + /* remove dxFeaMat, dyFeaMat */ + if (layerElem->trainInfo->cacheMats != NULL) + for (j = 1; j <= n; ++j) + FreeNMatrix(hset->hmem, layerElem->trainInfo->cacheMats[j]); + /*Dispose(hset->hmem, layerElem->trainInfo->cacheMats);*/ + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->trainInfo->dxFeaMats[j]); + /*Dispose(hset->hmem, layerElem->trainInfo->dxFeaMats);*/ + /*Dispose(&gcheap, layerElem->trainInfo->dxFeaMats);*/ + for (j = 1; j <= n; ++j) + if (layerElem->trainInfo->dyFeaMats[j] != NULL) + FreeSharedNMatrix(hset, layerElem->trainInfo->dyFeaMats[j]); + /*Dispose(hset->hmem, layerElem->trainInfo->dyFeaMats);*/ + /*Dispose(&gcheap, layerElem->trainInfo->dyFeaMats);*/ + /* remove drvCnt */ + /*Dispose(&gcheap, layerElem->trainInfo->drvCnt);*/ + } + /* remove xFeaMat */ + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->xFeaMats[j]); + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->yFeaMats[j]); + /*Dispose(&gcheap, layerElem->xFeaMats);*/ + /* remove mixMats */ + n = IntVecSize(layerElem->feaMix->ctxPool); + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->feaMix->mixMats[j]); + /*Dispose(&gcheap, layerElem->feaMix->mixMats);*/ + /* remove feaMix */ + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + n = IntVecSize(feaElem->ctxPool); + for (k = 1; k <= n; ++k) + FreeSharedNMatrix(hset, feaElem->feaMats[k]); + /*Dispose(&gcheap, feaElem->feaMats);*/ + /* cz277 - gap */ + if (feaElem->hisMat != NULL) + FreeNMatrix(hset->hmem, feaElem->hisMat); + } + /*Dispose(&gcheap, layerElem->yFeaMats);*/ + /* remove bundled parameters */ + if (layerElem->wghtMat != NULL) + FreeSharedNMatBundle(hset->hmem, layerElem->wghtMat); + if (layerElem->biasVec != NULL) + FreeSharedNVecBundle(hset->hmem, layerElem->biasVec); + if (layerElem->actfunVecs != NULL) + for (j = 0; j <= layerElem->actfunParmNum; ++j) + if (layerElem->actfunVecs[j] != NULL) + FreeSharedNVecBundle(hset->hmem, layerElem->actfunVecs[j]); + } + annInfo = annInfo->next; + } + /* release llhMat */ + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->annSet->llhMat[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->llhMat[i]); + if (hset->annSet->penVec[i] != NULL) + FreeNVector(hset->hmem, hset->annSet->penVec[i]); + } + /* free targetMapStruct if needed */ + if (hset->annSet->mapStruct != NULL) { + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->annSet->mapStruct->maskMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->maskMatMapSum[i]); + if (hset->annSet->mapStruct->labMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->labMatMapSum[i]); + if (hset->annSet->mapStruct->outMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->outMatMapSum[i]); + if (hset->annSet->mapStruct->llhMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->llhMatMapSum[i]); + if (hset->annSet->mapStruct->penVecMapSum[i] != NULL) + FreeNVector(hset->hmem, hset->annSet->mapStruct->penVecMapSum[i]); + } + } + + /* cz277 - many TODO */ + for (i = 1; i <= hset->swidth[0]; ++i) + if (hset->feaMix[i] != NULL) + for (j = 0; j < hset->feaMix[i]->elemNum; ++j) + FreeSharedNMatrix(hset, hset->feaMix[i]->feaList[j]->feaMats[1]); + FreeTmpNMat(hset->hmem); + /* cz277 - free */ + /* pop the last item annSet (MSTAK) */ + /*Dispose(hset->hmem, hset->annSet);*/ + /*Dispose(&gcheap, hset->annSet);*/ +} + +void ShowANNSet(HMMSet *hset) { + int i, j, k; + AILink annInfo; + ADLink annDef; + LELink layerElem; + FELink feaElem; + char buf[MAXSTRLEN], ctxstr[MAXSTRLEN]; + MLink m; + + annInfo = hset->annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + /* show ANN model name */ + m = FindMacroStruct(hset, 'N', annDef); + printf("ANN %s:\n", ReWriteString(m->id->name, NULL, DBL_QUOTE)); + /* show each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + LayerKind2Str(layerElem->layerKind, buf); + m = FindMacroStruct(hset, 'L', layerElem); + /* layer kind */ + printf("\t%d. %s layer %s: %d dim X %d dim", i + 1, buf, ReWriteString(m->id->name, NULL, DBL_QUOTE), layerElem->inputDim, layerElem->nodeNum); + layerElem->isFinalLayer == TRUE? printf(" [OUTPUT]\n"): printf("\n"); + /* layer input */ + m = FindMacroStruct(hset, 'F', layerElem->feaMix); + printf("\t\tInput feature mixture %s: %d dim\n", ReWriteString(m->id->name, NULL, DBL_QUOTE), layerElem->feaMix->mixDim); + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + switch (feaElem->inputKind) { + case INPFEAIK: + sprintf(buf, "Input feature stream %d", feaElem->streamIdx); + break; + case ANNFEAIK: + m = FindMacroStruct(hset, 'L', feaElem->feaSrc); + sprintf(buf, "ANN layer %s outputs", ReWriteString(m->id->name, NULL, DBL_QUOTE)); + break; + case AUGFEAIK: + sprintf(buf, "Augmented input vector %d", feaElem->augFeaIdx); + break; + default: + break; + } + strcpy(ctxstr,""); + for (k = 1; k <= IntVecSize(feaElem->ctxMap); ++k) + sprintf(ctxstr + strlen(ctxstr), " %d", feaElem->ctxMap[k]); + printf("\t\t\t%s: %d (%d - %d) dim, context shift {%s}\n", buf, feaElem->feaDim, feaElem->dimOff + 1, feaElem->dimOff + feaElem->feaDim, ctxstr + 1); + } + /* output according to the layerkind */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: break; + case CONVOLUTIONLAK: break; + case PERCEPTRONLAK: + m = FindMacroStruct(hset, 'M', layerElem->wghtMat); + layerElem->wghtMat->updateflag == TRUE? strcpy(buf, " [UPDATABLE]"): strcpy(buf, ""); + printf("\t\tWeight matrix %s: %lu dim X %lu dim%s\n", m->id->name, layerElem->wghtMat->variables->colNum, layerElem->wghtMat->variables->rowNum, buf); + m = FindMacroStruct(hset, 'V', layerElem->biasVec); + layerElem->biasVec->updateflag == TRUE? strcpy(buf, " [UPDATABLE]"): strcpy(buf, ""); + printf("\t\tBias vector %s: %lu dim%s\n", m->id->name, layerElem->biasVec->variables->vecLen, buf); + printf("\t\tActivation function %s\n", ReWriteString(ActFunKind2Str(layerElem->actfunKind, buf), NULL, DBL_QUOTE)); + if (layerElem->actfunVecs != NULL) { + for (j = 0; j <= layerElem->actfunParmNum; ++j) { + m = FindMacroStruct(hset, 'V', layerElem->actfunVecs[j]); + strcpy(buf, ""); + if (j == 0) + strcpy(buf, " [HYPER]"); + else if (layerElem->actfunVecs[j]->updateflag == TRUE) + strcpy(buf, " [UPDATABLE]"); + printf("\t\t\tParameter vector %s: %lu dim%s\n", m->id->name, layerElem->actfunVecs[j]->variables->vecLen, buf); + } + } + break; + case SUBSAMPLINGLAK: break; + default: + break; + } + printf("\n"); + } + annInfo = annInfo->next; + } +} + + +void InitNMatBundle(MemHeap *x, NMatBundle *bundle, char type) { + NMatrix **NMatObj=NULL; + + if (bundle->variables == NULL) + HError(7000, "InitNMatBundle: NMatrix bundle not properly initialised"); + + switch (tolower(type)) { + case 'g': NMatObj = &bundle->gradients; break; + case 'u': NMatObj = &bundle->updates; break; + case 'n': NMatObj = &bundle->neglearnrates; break; + case 's': NMatObj = &bundle->sumsquaredgrad; break; + default: + HError(7092, "InitNMatBundle: Unknown NMatrix bundle component type"); + } + if (*NMatObj == NULL) { + *NMatObj = CreateNMatrix(x, bundle->variables->rowNum, bundle->variables->colNum); + ClearNMatrix(*NMatObj, bundle->variables->rowNum); + } +} + + +void InitNVecBundle(MemHeap *x, NVecBundle *bundle, char type) { + NVector **NVecObj=NULL; + + if (bundle->variables == NULL) + HError(7000, "InitNVecBundle: NVector bundle not properly initialised"); + + switch (tolower(type)) { + case 'g': NVecObj = &bundle->gradients; break; + case 'u': NVecObj = &bundle->updates; break; + case 'n': NVecObj = &bundle->neglearnrates; break; + case 's': NVecObj = &bundle->sumsquaredgrad; break; + default: + HError(7092, "InitNVecBundle: Unknown NVector bundle component type"); + } + if (*NVecObj == NULL) { + *NVecObj = CreateNVector(x, bundle->variables->vecLen); + ClearNVector(*NVecObj); + } +} + +/* cz277 - ANN */ +void InitTrainInfo(HMMSet *hset, Boolean initLabMats, Boolean initLRInfo, Boolean initSSGInfo, Boolean initStruct) { + int i, j, k; + AILink annInfo; + ADLink annDef; + LELink layerElem; + char *bundleflag = "guns"; + Boolean process; + + annInfo = hset->annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + /* proceed each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + if (layerElem->trainInfo == NULL) { + layerElem->trainInfo = (TrainInfo *) New(hset->hmem, sizeof(TrainInfo)); + memset(layerElem->trainInfo, 0, sizeof(TrainInfo)); +#ifdef MKL + if (layerElem->actfunKind == SIGMOIDAF) + RegisterTmpNMat(GetNBatchSamples(), layerElem->nodeNum); +#endif + } + for (j = 0; j < strlen(bundleflag); ++j) { + switch (bundleflag[j]) { + case 'n': process = initStruct && initLRInfo; break; + case 's': process = initStruct && initSSGInfo; break; + default: process = initStruct; + } + if (process) { + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: + HError(7001, "InitTrainInfo: Function not implemented!"); + break; + case CONVOLUTIONLAK: + HError(7001, "InitTrainInfo: Function not implemented!"); + break; + case PERCEPTRONLAK: + InitNMatBundle(hset->hmem, layerElem->wghtMat, bundleflag[j]); + InitNVecBundle(hset->hmem, layerElem->biasVec, bundleflag[j]); + for (k = 1; k <= layerElem->actfunParmNum; ++k) + if (layerElem->actfunVecs[k] != NULL) + InitNVecBundle(hset->hmem, layerElem->actfunVecs[k], bundleflag[j]); + break; + case SUBSAMPLINGLAK: + HError(7001, "InitTrainInfo: Function not implemented!"); + break; + } + /* special treatment */ +#ifdef CUDA + if (bundleflag[j] == 's') + RegisterTmpNMat(GetNBatchSamples(), layerElem->inputDim); +#endif + } + } + } + /* get the next ANNDef */ + annInfo = annInfo->next; + } + if (initStruct && initLabMats) + for (i = 1; i <= hset->swidth[0]; ++i) + if (hset->annSet->outLayers[i]->trainInfo->labMat == NULL) + hset->annSet->outLayers[i]->trainInfo->labMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->outLayers[i]->nodeNum); +} + +/*ReturnStatus CheckTrainInfo(ANNSet *annSet) +{ + int i; + LELink layerElem; + AILink annInfo; + ADLink annDef; + Boolean firstItem = FALSE; + Boolean hasLR = FALSE; + Boolean hasSSG = FALSE; + + annInfo = annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + if (!firstItem) { + firstItem = TRUE; + if (layerElem->trainInfo != NULL) { + if (layerElem->trainInfo->nlrInfo != NULL) + hasLR = TRUE; + if (layerElem->trainInfo->ssgInfo != NULL) + hasSSG = TRUE; + } + } + else { + if ((hasLR && layerElem->trainInfo == NULL) || + (hasLR && layerElem->trainInfo != NULL && layerElem->trainInfo->nlrInfo == NULL) || + (!hasLR && layerElem->trainInfo != NULL && layerElem->trainInfo->nlrInfo != NULL)) { + HError(9999, "CheckTrainInfo: Conflict settings for learning rates for different layers"); + return FAIL; + } + if ((hasSSG && layerElem->trainInfo == NULL) || + (hasSSG && layerElem->trainInfo != NULL && layerElem->trainInfo->ssgInfo == NULL) || + (!hasSSG && layerElem->trainInfo != NULL && layerElem->trainInfo->ssgInfo != NULL)) { + HError(9999, "CheckTrainInfo: Conflict settings for SSG structures for different layers"); + return FAIL; + } + } + } + annInfo = annInfo->next; + } + + return SUCCESS; +}*/ + /* -------------------- Check Model Consistency -------------------- */ /* CheckMix: check given mixture pdf of state n, stream s, mixture m */ @@ -260,6 +963,12 @@ static ReturnStatus CheckStream(char *defName, HLink hmm, StreamElem *se, int s, for (m=1; m<=se->nMix; m++) sum += exp((float)se->spdf.dpdf[m]/DLOGSCALE); break; + case HYBRIDHS: + sum = 1.0; /* cz277 - ANN */ + break; + case ANNHS: + sum = 1.0; /* cz277 - ANN */ + break; } if (sum<0.99 || sum>1.01){ HRError(7031,"CheckStream: %s: Mix weights sum %e for s=%d, j=%d", @@ -285,7 +994,7 @@ static ReturnStatus CheckState(char *defName, HLink hmm, StateInfo *si, int n) } ste = si->pdf+1; for (s=1; s<=S; s++,ste++){ - if (ste->spdf.cpdf == NULL){ + if ((ste->densKind == GMMDK && ste->spdf.cpdf == NULL) || (ste->densKind == ANNDK && ste->targetSrc == NULL)) { HRError(7030,"CheckState: %s: Stream %d missing in state %d",defName,s,n); return(FAIL); } @@ -399,7 +1108,13 @@ typedef enum { /* Only a character big !! */ STATE, TMIX, MIXTURE, STREAM, SWEIGHTS, MEAN, VARIANCE, INVCOVAR, XFORM, GCONST, DURATION, INVDIAGCOV, TRANSP, DPROB, LLTCOV, LLTCOVAR, - PROJSIZE, + PROJSIZE, + HMMFEATURESOURCE, NUMFEATURES, FEATURE, SOURCE, CONTEXTSHIFT, DIMRANGE, + ACTIVATION, INPUTFEATURE, WEIGHT, UPDATE, NEGLEARNRATE, SUMSQUAREDGRAD, HYPERPARAMETER, NUMPARAMETERS, PARAMETER, MATRIX, VECTOR, TARGETMACRO, + BEGINANN, NUMLAYERS, LAYER, ENDANN, LAYERKIND, BEGINLAYER, ENDLAYER, TARGETSOURCE, TARGETINDEX, TARGETPENALTY, AUGFEATURE, +#ifdef USEOLDANNMODEL + OPERAND, ANNKIND, RPLIDX, +#endif XFORMKIND=90, PARENTXFORM, NUMXFORMS, XFORMSET, LINXFORM, OFFSET, BIAS, LOGDET, BLOCKINFO, BLOCK, BASECLASS, CLASS, XFORMWGTSET, CLASSXFORM, MMFIDMASK, PARAMETERS, @@ -436,6 +1151,13 @@ static struct { { "HMMSETID", HMMSETID }, { "PARMKIND", PARMKIND }, { "MACRO", MACRO }, { "EOF", EOFSYM }, + /* cz277 - ANN: ANN related symbols */ + {"HMMFEATURESOURCE", HMMFEATURESOURCE}, {"NUMFEATURES", NUMFEATURES}, {"FEATURE", FEATURE}, {"SOURCE", SOURCE}, {"CONTEXTSHIFT", CONTEXTSHIFT}, {"DIMRANGE", DIMRANGE}, + {"ACTIVATION", ACTIVATION}, {"INPUTFEATURE", INPUTFEATURE}, {"WEIGHT", WEIGHT}, {"UPDATE", UPDATE}, {"NEGLEARNRATE", NEGLEARNRATE}, {"SUMSQUAREDGRAD", SUMSQUAREDGRAD}, {"HYPERPARAMETER", HYPERPARAMETER}, {"NUMPARAMETERS", NUMPARAMETERS}, {"PARAMETER", PARAMETER}, {"MATRIX", MATRIX}, {"VECTOR", VECTOR}, {"TARGETMACRO", TARGETMACRO}, + {"BEGINANN", BEGINANN}, {"NUMLAYERS", NUMLAYERS}, {"LAYER", LAYER}, {"ENDANN", ENDANN}, {"LAYERKIND", LAYERKIND}, {"BEGINLAYER", BEGINLAYER}, {"ENDLAYER", ENDLAYER}, {"TARGETSOURCE", TARGETSOURCE}, {"TARGETINDEX", TARGETINDEX}, {"TARGETPENALTY", TARGETPENALTY}, {"AUGFEATURE", AUGFEATURE}, +#ifdef USEOLDANNMODEL + {"OPERAND", OPERAND}, {"ANNKIND", ANNKIND}, {"RPLIDX", RPLIDX}, +#endif /* Transformation symbols */ {"XFORMKIND", XFORMKIND } , {"PARENTXFORM", PARENTXFORM }, {"NUMXFORMS", NUMXFORMS }, {"XFORMSET", XFORMSET }, @@ -460,7 +1182,7 @@ typedef struct { /* Token returned by the scanner */ ParmKind pkind; /* samp kind when sym==PARMKIND */ char macroType; /* current macro type if sym==MACRO */ } Token; - + void InitSymNames(void) { int i; @@ -469,9 +1191,9 @@ void InitSymNames(void) } /* InitScanner: initialise scanner for new source */ -ReturnStatus InitScanner(char *fname, Source *src, Token *tok, HMMSet *hset) +ReturnStatus InitScanner(char *fname, Source *src, Token *tok, IOFilter filter) { - if(InitSource(fname, src, HMMDefFilter)sym = NULLSYM; tok->macroType = ' '; @@ -499,92 +1221,145 @@ static void HMError(Source *src, char *message) /* GetToken: put next symbol from given source into token */ static ReturnStatus GetToken(Source *src, Token *tok) { - char buf[MAXSYMLEN],tmp[MAXSTRLEN]; - int i,c,imax,sym; + char buf[MAXSYMLEN], tmp[MAXSTRLEN]; + int i, c, imax, sym; - tok->binForm = FALSE; - while (isspace(c=GetCh(src))); /* Look for symbol or Macro */ - if (c != '<' && c != ':' && c != '~' && c != '.' && c != '#') { - if (c == EOF) { - if (trace&T_TOK) printf("HModel: tok=\n"); - tok->sym=EOFSYM; return(SUCCESS); - } - HMError(src,"GetToken: Symbol expected"); - return(FAIL); - } - if (c == '~'){ /* If macro sym return immediately */ - c = tolower(GetCh(src)); - if (c!='s' && c!='m' && c!='u' && c!='x' && c!='d' && c!='c' && - c!='r' && c!='a' && c!='b' && c!='g' && c!='f' && c!='y' && c!='j' && - c!='v' && c!='i' && c!='t' && c!='w' && c!='h' && c!='o') - { - HMError(src,"GetToken: Illegal macro type"); - return(FAIL); - } - tok->macroType = c; tok->sym = MACRO; - if (trace&T_TOK) printf("HModel: MACRO ~%c\n",c); - return(SUCCESS); - } - i=0; imax = MAXSYMLEN-1; - if (c=='#') { /* if V1 mmf header convert to ~h */ - while ((c=GetCh(src)) != '#' && isym = MACRO; tok->macroType = 'h'; - if (trace&T_TOK) printf("HModel: MACRO ~h (#!MMF!#)\n"); - return(SUCCESS); - } - if (c=='.'){ /* if . and not EOF convert to ~h */ - while (isspace(c=GetCh(src))); - if (c == EOF) { - if (trace&T_TOK) printf("HModel: tok=.\n"); - tok->sym=EOFSYM; - return(SUCCESS); - } - UnGetCh(c,src); - tok->sym = MACRO; tok->macroType = 'h'; - if (trace&T_TOK) printf("HModel: MACRO ~h (.)\n"); - return(SUCCESS); - } - if (c=='<') { /* Read verbose symbol string into buf */ - while ((c=GetCh(src)) != '>' && i missing in symbol"); - return(FAIL); - } - /* This is tacky and has to be fixed*/ - for (sym=0; symsym = symMap[sym].sym; - if (trace&T_TOK) printf("HModel: tok=<%s>\n",buf); - return(SUCCESS); /* and return */ - } - } else { - /* Read binary symbol into buf */ - tok->binForm = TRUE; - sym = GetCh(src); - if (sym>=BEGINHMM && symsym = (Symbol) sym; - return(SUCCESS); /* and return */ - } - } + tok->binForm = FALSE; + while (isspace(c = GetCh(src))); /* Look for symbol or Macro */ + if (c != '<' && c != ':' && c != '~' && c != '.' && c != '#') { + if (c == EOF) { + if (trace & T_TOK) + printf("HModel: tok=\n"); + tok->sym = EOFSYM; + return (SUCCESS); + } + HMError(src, "GetToken: Symbol expected"); + return (FAIL); + } + if (c == '~') { /* If macro sym return immediately */ +#ifdef USEOLDANNMODEL + c = GetCh(src); + switch (c) { + case '0': + c = 'M'; + break; + case '1': + c = 'V'; + break; + case 'e': + c = 'F'; + break; + case 'k': + c = 'L'; + break; + case 'n': + c = 'N'; + break; + } +#endif + + if (c != 's' && c != 'm' && c != 'u' && c != 'x' && c != 'd' && c != 'c' && + c != 'r' && c != 'a' && c != 'b' && c != 'g' && c != 'f' && c != 'y' && c != 'j' && + c != 'v' && c != 'i' && c != 't' && c != 'w' && c != 'h' && c != 'o' && c != 'q' && c != 'z' && + c != 'F' && c != 'L' && c != 'M' && c != 'N' && c != 'V') /* cz277 - 150811 */ + { + HMError(src, "GetToken: Illegal macro type"); + return (FAIL); + } + tok->macroType = c; + tok->sym = MACRO; + if (trace & T_TOK) + printf("HModel: MACRO ~%c\n", c); + return (SUCCESS); + } + i = 0; + imax = MAXSYMLEN - 1; + if (c == '#') { /* if V1 mmf header convert to ~h */ + while ((c = GetCh(src)) != '#' && i < imax) + buf[i++] = c; + buf[i] = '\0'; + if (strcmp(buf, "!MMF!") != 0) { + HMError(src, "GetToken: expecting V1 style MMF header #!MMF!#"); + return (FAIL); + } + tok->sym = MACRO; + tok->macroType = 'h'; + if (trace & T_TOK) + printf("HModel: MACRO ~h (#!MMF!#)\n"); + return (SUCCESS); + } + if (c == '.'){ /* if . and not EOF convert to ~h */ + while (isspace(c = GetCh(src))); + if (c == EOF) { + if (trace & T_TOK) + printf("HModel: tok=.\n"); + tok->sym = EOFSYM; + return (SUCCESS); + } + UnGetCh(c, src); + tok->sym = MACRO; + tok->macroType = 'h'; + if (trace & T_TOK) + printf("HModel: MACRO ~h (.)\n"); + return (SUCCESS); + } + if (c == '<') { /* Read verbose symbol string into buf */ + while ((c=GetCh(src)) != '>' && i < imax) + buf[i++] = islower(c)?toupper(c):c; + buf[i] = '\0'; + if (c != '>') { + HMError(src, "GetToken: > missing in symbol"); + return (FAIL); + } + /* cz277 - 150811 */ +#ifdef USEOLDANNMODEL + if (strcmp(buf, "ACTPARAMS") == 0) + strcpy(buf, "PARAMETER"); + else if (strcmp(buf, "NUMFEAS") == 0) + strcpy(buf, "NUMFEAS"); + else if (strcmp(buf, "INPUTFEA") == 0) + strcpy(buf, "INPUTFEATURE"); + else if (strcmp(buf, "TARGETSRC") == 0) + strcpy(buf, "TARGETSOURCE"); + else if (strcmp(buf, "TARGETIDX") == 0) + strcpy(buf, "TARGETINDEX"); + else if (strcmp(buf, "TARGETPEN") == 0) + strcpy(buf, "TARGETPENALTY"); + else if (strcmp(buf, "AUGFEA") == 0) + strcpy(buf, "AUGFEATURE"); + else if (strcmp(buf, "EXPAND") == 0) + strcpy(buf, "CONTEXTSHIFT"); +#endif + /* This is tacky and has to be fixed*/ + for (sym = 0; sym < NUMSYM; ++sym) /* Look symbol up in symMap */ + if (strcmp(symMap[sym].name, buf) == 0) { + tok->sym = symMap[sym].sym; + if (trace & T_TOK) + printf("HModel: tok=<%s>\n", buf); + return (SUCCESS); /* and return */ + } + } else { + /* Read binary symbol into buf */ + tok->binForm = TRUE; + sym = GetCh(src); + if (sym >= BEGINHMM && sym < PARMKIND) { + if (trace & T_TOK) + printf("HModel: tok=:%s\n", symNames[sym]); + tok->sym = (Symbol)sym; + return (SUCCESS); /* and return */ + } + } - /* if symbol not in symMap then it may be a sampkind */ - if ((tok->pkind = Str2ParmKind(buf)) != ANON){ - tok->sym = PARMKIND; - if (trace&T_TOK) printf("HModel: tok=SK[%s]\n",buf); - return(SUCCESS); - } - strcpy(tmp,"GetToken: Unknown symbol "); - HMError(src,strcat(tmp,buf)); - return(FAIL); + /* if symbol not in symMap then it may be a sampkind */ + if ((tok->pkind = Str2ParmKind(buf)) != ANON) { + tok->sym = PARMKIND; + if (trace & T_TOK) + printf("HModel: tok=SK[%s]\n", buf); + return (SUCCESS); + } + strcpy(tmp, "GetToken: Unknown symbol "); + HMError(src, strcat(tmp, buf)); + return (FAIL); } /* ------------------- HMM 'option' handling ----------------------- */ @@ -596,6 +1371,7 @@ static void OWarn(HMMSet *hset,Boolean equal,char *opt) HRError(-7032,"OWarn: change HMM Set %s",opt); } + /* GetOption: read a HMM option specifier - value set in nState pointer */ static ReturnStatus GetOption(HMMSet *hset, Source *src, Token *tok, int *nState) { @@ -606,7 +1382,8 @@ static ReturnStatus GetOption(HMMSet *hset, Source *src, Token *tok, int *nState Boolean ntok=TRUE; InputXForm* GetInputXForm(HMMSet *hset, Source *src, Token *tok); - + FeaMix *GetFeaMix(HMMSet *hset, Source *src, Token *tok); + switch (tok->sym) { case NUMSTATES: if (!ReadShort(src,&nSt,1,tok->binForm)){ @@ -699,6 +1476,46 @@ static ReturnStatus GetOption(HMMSet *hset, Source *src, Token *tok, int *nState OWarn(hset,hset->swidth[0]==sw[0],"swidth[0]"); for (i=0; i<=sw[0]; i++) hset->swidth[i] = sw[i]; break; + case HMMFEATURESOURCE: /* cz277 - ANN, can be put at the begining of the MMF */ + if (hset->swidth[0] == 0) { + HMError(src, "StreamInfo should be given before HMMFeaSrc"); + return FAIL; + } + if (hset->hsKind == HYBRIDHS || hset->hsKind == ANNHS) { + HMError(src, "HMMFeaSrc is only applicable to ANN-HMM systems"); + return FAIL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + if (tok->sym == STREAM) { + while (tok->sym == STREAM) { + if (!ReadInt(src, &i, 1, tok->binForm)) { + HMError(src, "Stream index expected"); + return FAIL; + } + if (i < 1 || i > hset->swidth[0]) + HMError(src, "Stream index out of range"); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + hset->feaMix[i] = GetFeaMix(hset, src, tok); + hset->feaMix[i]->ownerList[hset->feaMix[i]->ownerNum++] = NULL; + } + ntok = FALSE; + } + else if (tok->sym == NUMFEATURES) { + hset->feaMix[1] = GetFeaMix(hset, src, tok); + hset->feaMix[1]->ownerList[hset->feaMix[1]->ownerNum++] = NULL; + ntok = FALSE; + } + else { + HMError(src, "Feature mixture expected"); + return FAIL; + } + break; case DIAGCOV: OWarn(hset,hset->ckind==DIAGC,"covKind"); hset->ckind = DIAGC; @@ -779,7 +1596,7 @@ BaseClassKind Str2BaseClassKind(char *str) if (!(strcmp(str,"MIXBASE"))) bkind = MIXBASE; else if (!(strcmp(str,"MEANBASE"))) bkind = MEANBASE; else if (!(strcmp(str,"COVBASE"))) bkind = COVBASE; - else HError(999,"Unknown BaseClass kind"); + else HError(7001,"Unknown BaseClass kind"); return bkind; } @@ -793,7 +1610,7 @@ XFormKind Str2XFormKind(char *str) else if (!(strcmp(str,"MLLRVAR"))) xkind = MLLRVAR; else if (!(strcmp(str,"CMLLR"))) xkind = CMLLR; else if (!(strcmp(str,"SEMIT"))) xkind = SEMIT; - else HError(999,"Unknown XForm Class kind"); + else HError(7001,"Unknown XForm Class kind"); return xkind; } @@ -804,10 +1621,72 @@ AdaptKind Str2AdaptKind(char *str) if (!(strcmp(str,"TREE"))) akind = TREE; else if (!(strcmp(str,"BASE"))) akind = BASE; - else HError(999,"Unknown Adapt kind"); + else HError(7001,"Unknown Adapt kind"); return akind; } + +ActFunKind Str2ActFunKind(char *str) +{ + ActFunKind afkind = SIGMOIDAF; + if (!strcmp(str, "AFFINE")) + afkind = AFFINEAF; + else if (!strcmp(str, "HERMITE")) + afkind = HERMITEAF; + else if (!strcmp(str, "LINEAR")) + afkind = LINEARAF; + else if (!strcmp(str, "RELU")) + afkind = RELUAF; + else if (!strcmp(str, "LHUCRELU")) + afkind = LHUCRELUAF; + else if (!strcmp(str, "PRELU")) + afkind = PRELUAF; + else if (!strcmp(str, "PARMRELU")) + afkind = PARMRELUAF; + else if (!strcmp(str, "SIGMOID")) + afkind = SIGMOIDAF; + else if (!strcmp(str, "LHUCSIGMOID")) + afkind = LHUCSIGMOIDAF; + else if (!strcmp(str, "PSIGMOID")) + afkind = PSIGMOIDAF; + else if (!strcmp(str, "PARMSIGMOID")) + afkind = PARMSIGMOIDAF; + else if (!strcmp(str, "SOFTRELU")) + afkind = SOFTRELUAF; + else if (!strcmp(str, "LHUCSOFTRELU")) + afkind = LHUCSOFTRELUAF; + else if (!strcmp(str, "PSOFTRELU")) + afkind = PSOFTRELUAF; + else if (!strcmp(str, "PARMSOFTRELU")) + afkind = PARMSOFTRELUAF; + else if (!strcmp(str, "SOFTMAX")) + afkind = SOFTMAXAF; + else if (!strcmp(str, "TANH")) + afkind = TANHAF; + else + HError(7092, "Unknown activation function kind %s", str); + return afkind; +} + + +/* cz277 - 150811 */ +LayerKind Str2LayerKind(char *str) +{ + LayerKind layerKind=0; + + if (!strcmp(str, "ACTIVATIONONLY")) + layerKind = ACTIVATIONONLYLAK; + else if (!strcmp(str, "CONVOLUTION")) + layerKind = CONVOLUTIONLAK; + else if (!strcmp(str, "PERCEPTRON")) + layerKind = PERCEPTRONLAK; + else if (!strcmp(str, "SUBSAMPLING")) + layerKind = SUBSAMPLINGLAK; + else + HError(7092, "Unknown layer kind %s", str); + return layerKind; +} + /* ---------------------- Input XForm Directory Handling ---------------------- */ /* EXPORT->AddInXFormDir: Add given file name to set */ @@ -815,10 +1694,16 @@ AdaptKind Str2AdaptKind(char *str) void AddInXFormDir(HMMSet *hset, char *dirname) { XFDirLink p,q; + MemHeap *heap; - p = (XFDirLink)New(hset->hmem,sizeof(XFDirInfo)); + if (hset != NULL) + heap = hset->hmem; + else + heap = &xformStack; + /*p = (XFDirLink)New(hset->hmem,sizeof(XFDirInfo));*/ + p = (XFDirLink)New(heap, sizeof(XFDirInfo)); p->next = NULL; - p->dirName = CopyString(hset->hmem,dirname); + p->dirName = CopyString(heap,dirname); if (xformDirNames == NULL) xformDirNames = p; else { /* store in order of arrival */ @@ -1055,6 +1940,7 @@ static ReturnStatus GetOptions(HMMSet *hset, Source *src, Token *tok, int *nStat while (tok->sym == PARMKIND || tok->sym == INVDIAGCOV || tok->sym == HMMSETID || tok->sym == INPUTXFORM || tok->sym == PARENTXFORM || tok->sym == PROJSIZE || + tok->sym == HMMFEATURESOURCE || (tok->sym >= NUMSTATES && tok->sym <= XFORMCOV)){ if(GetOption(hset,src,tok,&p)*nState) *nState = p; } + FreezeOptions(hset); return(SUCCESS); } @@ -1094,6 +1981,29 @@ static Ptr GetStructure(HMMSet *hset, Source *src, char type) return m->structure; } +/* cz277 - semi */ +/*static Ptr GetStructureSafe(HMMSet *hset, Source *src, char type, char *buf) { + LabId id; + MLink m; + + if (!ReadString(src, buf)) { + HRError(7013, "GetStructureSafe: cannot read macro name"); + return NULL; + } + id = GetLabId(buf, FALSE); + if (id == NULL) { + return NULL; + } + m = FindMacroName(hset, type, id); + if (m == NULL) { + HRError(7035, "GetStructureSafe: no macro %s, type %c exists", buf, type); + return NULL; + } + if (trace & T_MAC) + printf("HModel: getting structure ~%c %s -> %p\n", type, buf, m->structure); + return m->structure; +}*/ + static ReturnStatus CheckBaseClass(HMMSet *hset, BaseClass *bclass) { int b,ncomp=0; @@ -1108,14 +2018,14 @@ static ReturnStatus CheckBaseClass(HMMSet *hset, BaseClass *bclass) mp->mIdx = -mp->mIdx; ncomp++; } else { /* item appears in list multiple times */ - HRError(999,"Component specified multiple times"); + HRError(7094,"Component specified multiple times"); return(FAIL); } } } /* have all the components been seen? */ if (ncomp != hset->numMix) { - HRError(999,"Components missing from Base Class list (%d %d)",ncomp,hset->numMix); + HRError(7094,"Components missing from Base Class list (%d %d)",ncomp,hset->numMix); return(FAIL); } /* mIdx is used in HRec, so reset */ @@ -1124,7 +2034,7 @@ static ReturnStatus CheckBaseClass(HMMSet *hset, BaseClass *bclass) mp = ((MixtureElem *)i->item)->mpdf; if (mp->mIdx<0) mp->mIdx = -mp->mIdx; else - HError(999,"CompressItemList: corrupted item list"); + HError(7094,"CompressItemList: corrupted item list"); } } return(SUCCESS); @@ -1146,12 +2056,11 @@ static void AddXFormItem(MemHeap *x, Ptr item, Ptr owner, ILink *list) static void CompressItemList(MemHeap *x, ILink ilist, ILink *bilist) { - ILink i,p; + ILink i; MixPDF *mp; MixtureElem *me; int ncomp=0,ndel=0; - p = NULL; /* the first component can't have already been seen! */ for (i=ilist; i!=NULL; i=i->next) { me = (MixtureElem *)i->item; mp = me->mpdf; @@ -1168,7 +2077,7 @@ static void CompressItemList(MemHeap *x, ILink ilist, ILink *bilist) mp = ((MixtureElem *)i->item)->mpdf; if (mp->mIdx<0) mp->mIdx = -mp->mIdx; else - HError(999,"CompressItemList: corrupted item list"); + HError(7073,"CompressItemList: corrupted item list"); } if ((ndel>0) && (trace&T_XFD)) printf(" CompressItemList: kept %d components, deleted %d components\n",ncomp,ndel); @@ -1225,7 +2134,7 @@ static BaseClass* GetBaseClass(HMMSet *hset,Source *src, Token *tok) /* Now check that things match the HMMSet */ for (i=1;i<=bclass->swidth[0];i++) if (bclass->swidth[i] != hset->swidth[i]) { - HError(999,"Stream width %d [%d] does not match model set [%d]",i,bclass->swidth[i],hset->swidth[i]); + HError(7031,"Stream width %d [%d] does not match model set [%d]",i,bclass->swidth[i],hset->swidth[i]); return(NULL); } if(GetToken(src,tok)swidth[0] != 1) - HError(999," must be specified in multiple stream base classes"); + HError(7030," must be specified in multiple stream base classes"); bclass->swidth = NULL; /* indicates a single stream - don't care */ } if (tok->sym == NUMCLASSES) { @@ -1254,33 +2163,40 @@ static BaseClass* GetBaseClass(HMMSet *hset,Source *src, Token *tok) bclass->ilist = (ILink *)New(hset->hmem,sizeof(ILink)*(nbases+1)); /* Set the indexes for the models - just in case being loaded from a macro */ - if (!indexSet) SetIndexes(hset); - /* BaseClasses Can only refer to physical HMMs for wild cards */ - SetParsePhysicalHMM(TRUE); - for (i=1;i<=nbases;i++) { - if (tok->sym != CLASS) { - HMError(src," symbol expected in GetBaseClass"); - return(NULL); - } - if (!ReadInt(src,&b,1,tok->binForm)){ - HMError(src,"Number of class expected"); - return(NULL); - } - if (b!=i) - HError(999,"Error reading classes in BaseClass"); - ilist= NULL; bclass->ilist[i] = NULL; - PItemList(&ilist,&type,hset,src,(trace&T_PAR)); - CompressItemList(hset->hmem,ilist,bclass->ilist+i); - ResetUtilItemList(); - /* multiple examples of the same component may be specified */ - if(GetToken(src,tok)numLogHMM != 0) { /* cz277 - xform hcopy */ + if (!indexSet) SetIndexes(hset); + /* BaseClasses Can only refer to physical HMMs for wild cards */ + SetParsePhysicalHMM(TRUE); + /* cz277 - xform */ + if (hset->hsKind != HYBRIDHS) { + for (i=1;i<=nbases;i++) { + if (tok->sym != CLASS) { + HMError(src," symbol expected in GetBaseClass"); + return(NULL); + } + if (!ReadInt(src,&b,1,tok->binForm)){ + HMError(src,"Number of class expected"); + return(NULL); + } + if (b!=i) + HError(7030,"Error reading classes in BaseClass"); + ilist= NULL; bclass->ilist[i] = NULL; + PItemList(&ilist,&type,hset,src,(trace&T_PAR)); + CompressItemList(hset->hmem,ilist,bclass->ilist+i); + ResetUtilItemList(); + /* multiple examples of the same component may be specified */ + if(GetToken(src,tok)numLogHMM != 0 && CheckBaseClass(hset,bclass)nUse = 0; } else if (tok->sym==MACRO && tok->macroType=='b'){ if((bclass=(BaseClass *)GetStructure(hset,src,'b'))==NULL){ @@ -1295,6 +2211,7 @@ static BaseClass* GetBaseClass(HMMSet *hset,Source *src, Token *tok) HMError(src," symbol expected in GetBaseClass"); return(NULL); } + bclass->nUse++; return bclass; } @@ -1377,7 +2294,7 @@ static RegTree *GetRegTree(HMMSet *hset, Source *src, Token *tok) return(NULL); } if ((rnode = FindNode(root, NULL, index)) == NULL) - HError(999,"Nodes are expected in numerical order"); + HError(7073,"Nodes are expected in numerical order"); rtree->numNodes ++; if (!ReadInt(src,&nchild,1,tok->binForm)){ HMError(src,"Number of children for regression tree expected"); @@ -1399,7 +2316,7 @@ static RegTree *GetRegTree(HMMSet *hset, Source *src, Token *tok) return(NULL); } if ((rnode = FindNode(root, NULL, index)) == NULL) - HError(999,"Nodes are expected in numerical order"); + HError(7073,"Nodes are expected in numerical order"); rtree->numTNodes ++; if (!ReadInt(src,&nbases,1,tok->binForm)){ HMError(src,"Number of baseclasses for regression base class expected"); @@ -1847,158 +2764,282 @@ static MixPDF *EmptyMixPDF(HMMSet *hset, int vSize, int s) } /* GetStream: parse src and store a StreamElem in pdf array */ -static ReturnStatus GetStream(HMMSet *hset, Source *src, Token *tok, - StreamElem *pdf, short *nMix) -{ - int m,S,M; - short s; - MixtureElem *cpdf; - - S=hset->swidth[0]; - if (trace&T_PAR) { - printf("HModel: GetStream - nMix ="); - for (s=1; s<=S; s++) printf(" %d",nMix[s]); - printf("\n"); - } - s = 1; - if (tok->sym == STREAM) { - if (!ReadShort(src,&s,1,tok->binForm)){ - HMError(src,"Stream Index expected"); - return(FAIL); - } - if (s<1 || s>S){ - HMError(src,"Stream Index out of range"); - return(FAIL); - } - if(GetToken(src,tok)sym == TMIX ) { - if (hset->hsKind == PLAINHS) - hset->hsKind = TIEDHS; - else - if (hset->hsKind != TIEDHS){ +static ReturnStatus GetStream(HMMSet *hset, Source *src, Token *tok, StreamElem *pdf, short *nMix) +{ + int m, S, M, intVal; + short s; + MixtureElem *cpdf; + float floatVal; + + S = hset->swidth[0]; + if (trace & T_PAR) { + printf("HModel: GetStream - nMix ="); + for (s = 1; s <= S; ++s) + printf(" %d", nMix[s]); + printf("\n"); + } + s = 1; + if (tok->sym == STREAM) { + if (!ReadShort(src, &s, 1, tok->binForm)) { + HMError(src, "Stream Index expected"); + return (FAIL); + } + if (s < 1 || s > S){ + HMError(src, "Stream Index out of range"); + return (FAIL); + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return (FAIL); + } + } + M = nMix[s]; + pdf[s].nMix = M; + /* cz277 - ANN */ + if (tok->sym == TARGETSOURCE) { + /* reset nMix */ + nMix[s] = 0; + pdf[s].nMix = 0; + /* set state density kind */ + pdf[s].densKind = ANNDK; + /* Get ~L or ~N */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "The ANN name or layer name for expected"); + return FAIL; + } + if (tok->sym == MACRO) { + if (tok->macroType == 'L') { + pdf[s].targetSrc = (LELink) GetStructure(hset, src, 'L'); + if (pdf[s].targetSrc == NULL) { + HMError(src, "Fail to acquire required "); + return FAIL; + } + /*++pdf[s].targetSrc->nUse;*/ /* cz277 - 150930 */ + } + /*else if (tok->macroType == 'N') { + annDef = (ADLink) GetStructure(hset, src, 'N'); + if (annDef == NULL) { + HRError(9999, "Fail to acquire required "); + return FAIL; + } + ++annDef->nUse; + pdf[s].targetSrc = annDef->layerList[annDef->layerNum - 1]; + }*/ + else { + HRError(7037, "Incompatible MACRO type for target source"); + return FAIL; + } + /* ++pdf[s].targetSrc->nDrv;*/ /* increase the reference count */ + /* set ANNSet.outLayers */ + if (hset->annSet->outLayers[s] == NULL) { + hset->annSet->outLayers[s] = pdf[s].targetSrc; + hset->annSet->outLayers[s]->isFinalLayer = TRUE; + } + else if (hset->annSet->outLayers[s] != pdf[s].targetSrc) { /* if there're multiple output layers */ + HRError(7074, "Multiple output layer in a stream is not supported"); + return FAIL; + } + } + else { + HRError(7037, "Unsupported kind"); + return FAIL; + } + /* */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + if (tok->sym != TARGETINDEX) { + HMError(src, " symbol expected"); + return FAIL; + } + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Target index in current stream expected"); + return FAIL; + } + /*pdf[s].targetIdx = intVal - 1; + if (pdf[s].targetIdx < 0 || pdf[s].targetIdx >= pdf[s].targetSrc->nodeNum) { + HRError(9999, "Target index out of range"); + return FAIL; + }*/ + pdf[s].targetIdx = intVal; + if (pdf[s].targetIdx <= 0 || pdf[s].targetIdx > pdf[s].targetSrc->nodeNum) { + HRError(7075, "Target index out of range"); + return FAIL; + } + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + pdf[s].targetPen = 0.0; + /* (optional) */ + if (tok->sym == TARGETPENALTY) { + if (!ReadFloat(src, &floatVal, 1, tok->binForm)) { + HMError(src, "Target penalty in current stream expected"); + return FAIL; + } + pdf[s].targetPen = floatVal; + if (hset->annSet->penVec[s] == NULL) { + hset->annSet->penVec[s] = CreateNVector(hset->hmem, hset->annSet->outLayers[s]->nodeNum); + hset->annSet->llhMat[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->outLayers[s]->nodeNum); + } + hset->annSet->penVec[s]->vecElems[pdf[s].targetIdx - 1] = pdf[s].targetPen; + + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + } + /* initialise occAcc */ + pdf[s].occAcc = 0.0; + } + else if (tok->sym == TMIX ) { + pdf[s].densKind = GMMDK; /* cz277 - ANN */ + if (hset->hsKind == PLAINHS) { + hset->hsKind = TIEDHS; + } + else if (hset->hsKind != TIEDHS) { HRError(7032,"GetStream: change to TIEDHS from other than PLAINHS"); - return(FAIL); - } - pdf[s].spdf.tpdf = CreateTME(hset,M); - if((GetTiedMixtures(hset,src,tok,M,s,pdf[s].spdf.tpdf))sym == DPROB) { - if (hset->hsKind == PLAINHS) + return (FAIL); + } + pdf[s].spdf.tpdf = CreateTME(hset, M); + if ((GetTiedMixtures(hset, src, tok, M, s, pdf[s].spdf.tpdf)) < SUCCESS) { + HMError(src, "GetTiedMixtures failed"); + return (FAIL); + } + } + else if (tok->sym == DPROB) { + pdf[s].densKind = GMMDK; /* cz277 - ANN */ + if (hset->hsKind == PLAINHS) hset->hsKind = DISCRETEHS; - else if (hset->hsKind != DISCRETEHS){ + else if (hset->hsKind != DISCRETEHS) { HRError(7032,"GetStream: change to DISCRETEHS from other than PLAINHS"); - return(FAIL); - } - pdf[s].spdf.dpdf = CreateDME(hset,M); - if((GetDiscreteWeights(src,tok,M,pdf[s].spdf.dpdf))sym==MIXTURE) - if((GetMixture(hset,src,tok,M,cpdf))sym == MIXTURE) { + if ((GetMixture(hset, src, tok, M, cpdf)) < SUCCESS) { + HMError(src, "GetMixtures failed"); + return (FAIL); } - for (m=1; m<=M; m++) - if (cpdf[m].mpdf == NULL){ - if((cpdf[m].mpdf = EmptyMixPDF(hset,hset->swidth[s],s))==NULL){ - HMError(src,"EmptyMixPDF failed"); - return(FAIL); - } - cpdf[m].weight = 0.0; + } + for (m = 1; m <= M; ++m) { + if (cpdf[m].mpdf == NULL) { + if ((cpdf[m].mpdf = EmptyMixPDF(hset, hset->swidth[s], s)) == NULL) { + HMError(src, "EmptyMixPDF failed"); + return (FAIL); + } + cpdf[m].weight = 0.0; } - } - return(SUCCESS); + } + } + + return (SUCCESS); } /* GetStateInfo: parse src and return StateInfo structure */ static StateInfo *GetStateInfo(HMMSet *hset, Source *src, Token *tok) { - StateInfo *si; - int i,S; - short nMix[SMAX]; + StateInfo *si; + int i,S; + short nMix[SMAX]; - if (trace&T_PAR) printf("HModel: GetStateInfo\n"); - S = hset->swidth[0]; - if (tok->sym==MACRO && tok->macroType=='s') { - if((si = (StateInfo *)GetStructure(hset,src,'s'))==NULL){ - HMError(src,"GetStructure failed"); - return(NULL); - } - ++si->nUse; - if(GetToken(src,tok)sym == NUMMIXES){ - if (!ReadShort(src,nMix+1,S,tok->binForm)){ - HMError(src,"Num Mix in Each Stream expected"); - return(NULL); - } - if(GetToken(src,tok)hmem,sizeof(StateInfo)); - si->nUse = 0; si->hook = NULL; si->weights = NULL; - si->pdf = CreateSE(hset,S); - if (tok->sym==SWEIGHTS || (tok->sym==MACRO && tok->macroType=='w')){ - if((si->weights = GetSWeights(hset,src,tok))==NULL){ - HMError(src,"GetSWeights failed"); - return(NULL); - } - if (VectorSize(si->weights) != S){ - HMError(src,"Incorrect number of stream weights"); - return(NULL); - } - } - if((GetStream(hset,src,tok,si->pdf,nMix))sym==STREAM) - if((GetStream(hset,src,tok,si->pdf,nMix))swidth[0]; + if (tok->sym == MACRO && tok->macroType == 's') { + if ((si = (StateInfo *) GetStructure(hset, src, 's')) == NULL) { + HMError(src, "GetStructure failed"); return(NULL); - } - if (tok->sym==DURATION || (tok->sym==MACRO && tok->macroType=='d')){ - if((si->dur = GetDuration(hset,src,tok))==NULL){ - HMError(src,"GetDuration failed"); + } + ++si->nUse; + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); return(NULL); - } - } - else - si->dur = NULL; - } - if (S>1 && si->weights == NULL) { - si->weights = CreateSVector(hset->hmem,S); - for (i=1;i<=S;i++) - si->weights[i] = 1.0; - } - return si; -} - + } + } + else { + if (tok->sym == NUMMIXES) { + if (!ReadShort(src, nMix + 1, S, tok->binForm)) { + HMError(src, "Num Mix in Each Stream expected"); + return (NULL); + } + if(GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return (NULL); + } + } + else { + for (i = 1; i <= S; i ++) + nMix[i] = 1; + } + si = (StateInfo *) New(hset->hmem, sizeof(StateInfo)); + si->stateMap = NULL; /* cz277 - ANN */ + si->nUse = 0; + si->hook = NULL; + si->weights = NULL; + si->pdf = CreateSE(hset, S); + if (tok->sym == SWEIGHTS || (tok->sym == MACRO && tok->macroType == 'w')) { + if ((si->weights = GetSWeights(hset, src, tok)) == NULL) { + HMError(src, "GetSWeights failed"); + return(NULL); + } + if (VectorSize(si->weights) != S) { + HMError(src, "Incorrect number of stream weights"); + return (NULL); + } + } + if ((GetStream(hset, src, tok, si->pdf, nMix)) < SUCCESS) { + HMError(src, "GetStream failed"); + return (NULL); + } + while (tok->sym == STREAM) + if ((GetStream(hset, src, tok, si->pdf, nMix)) < SUCCESS) { + HMError(src, "GetStream failed"); + return (NULL); + } + if (tok->sym == DURATION || (tok->sym == MACRO && tok->macroType == 'd')) { + if ((si->dur = GetDuration(hset, src, tok)) == NULL) { + HMError(src, "GetDuration failed"); + return (NULL); + } + } + else + si->dur = NULL; + } + if (S > 1 && si->weights == NULL) { + si->weights = CreateSVector(hset->hmem, S); + for (i = 1; i <= S; i++) + si->weights[i] = 1.0; + } + /* cz277 - ANN */ + /* set HMMSet Kind */ + for (i = 2; i <= S; ++i) { + if (si->pdf[i].densKind != si->pdf[1].densKind) { + /*hset->hsKind = MIXEDHS;*/ + break; + } + } + if (hset->hsKind == PLAINHS && i > S && si->pdf[1].densKind == ANNDK) { + hset->hsKind = HYBRIDHS; + } + + return si; +} + /* GetTransMat: parse src and return Transition Matrix structure */ static SMatrix GetTransMat(HMMSet *hset, Source *src, Token *tok) { @@ -2447,8 +3488,8 @@ static AdaptXForm* GetAdaptXForm(HMMSet *hset, Source *src, Token *tok) int i,b; if (trace&T_PAR) printf("HModel: GetAdaptXForm\n"); - if ((hset->hsKind != PLAINHS) && (hset->hsKind != SHAREDHS)) - HError(999,"Can only estimated transforms with PLAINHS and SHAREDHS!"); + if ((hset->hsKind != PLAINHS) && (hset->hsKind != SHAREDHS) && (hset->hsKind != HYBRIDHS)) + HError(7073,"Can only estimated transforms with PLAINHS and SHAREDHS!"); if (tok->sym == ADAPTKIND) { xform = (AdaptXForm *)New(hset->hmem,sizeof(AdaptXForm)); xform->fname = CopyString(hset->hmem,src->name); @@ -2520,7 +3561,7 @@ static AdaptXForm* GetAdaptXForm(HMMSet *hset, Source *src, Token *tok) if (HardAssign(xform)) { xform->xformWgts.assign = CreateIntVec(hset->hmem,xform->bclass->numClasses); } else - HError(999,"Currently not supported"); + HError(7001,"Currently not supported"); for (i=1;i<=xform->bclass->numClasses;i++) { if(GetToken(src,tok)sym==MACRO && tok->macroType=='a'){ @@ -2575,6 +3616,1345 @@ static AdaptXForm* GetAdaptXForm(HMMSet *hset, Source *src, Token *tok) return xform; } +/* compare different FeaElem pointers */ +Boolean CmpFeaElem(FELink lhFEL, FELink rhFEL) { + /* cz277 - split */ + if (lhFEL == rhFEL) + return TRUE; + if (lhFEL->feaDim != rhFEL->feaDim) + return FALSE; + if (!CmpIntVec(lhFEL->ctxMap, rhFEL->ctxMap)) + return FALSE; + if (lhFEL->inputKind != rhFEL->inputKind) + return FALSE; + if (lhFEL->feaSrc != rhFEL->feaSrc) + return FALSE; + if (lhFEL->dimOff != rhFEL->dimOff) + return FALSE; + /*if (lhFEL->srcDim != rhFEL->srcDim) + return FALSE;*/ + if (lhFEL->streamIdx != rhFEL->streamIdx) + return FALSE; + /* cz277 - aug */ + if (lhFEL->augFeaIdx != rhFEL->augFeaIdx) + return FALSE; + + return TRUE; +} + +static FELink CreateFeaElem(MemHeap *x) { + FELink feaElem; + + feaElem = (FELink) New(x, sizeof(FeaElem)); + memset(feaElem, 0, sizeof(FeaElem)); + return feaElem; +} + +/* GenDefaultFeaMix: generate the default FeaMix structure */ +static FeaMix *GetDefaultInpFeaMix(HMMSet *hset, int streamIdx) +{ + FeaMix *feaMix; + FELink feaElem; + int i; + LabId id; + + if (streamIdx < 1 || streamIdx > hset->swidth[0]) + HError(7075, "GetDefaultInpFeaMix: Default stream index out of range"); + + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(feaMix, 0, sizeof(FeaMix)); + feaMix->elemNum = 1; + feaMix->mixDim = hset->swidth[streamIdx]; + /*feaMix->ownerNum = 0; + feaMix->nUse = 0; + feaMix->mixMats = NULL; + feaMix->ctxPool = NULL;*/ + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + /* search for the default FeaElem*/ + for (i = 0; i < hset->nInp[streamIdx]; ++i) { + feaElem = hset->inpElem[streamIdx][i]; + if (IntVecSize(feaElem->ctxMap) == 1 && feaElem->ctxMap[1] == 0) + break; + } + if (i == hset->nInp[streamIdx]) { /* register a new FeaElem */ + /*feaMix->feaList[0] = (FELink) New(hset->hmem, sizeof(FeaElem)); + feaElem = feaMix->feaList[0]; + feaElem->inputKind = INPFEAIK; + feaElem->ctxMap = CreateIntVec(&gcheap, 1); + feaElem->ctxMap[1] = 0; + feaElem->dimOff = 0; + feaElem->srcDim = hset->swidth[streamIdx]; + feaElem->feaDim = feaElem->srcDim; + feaElem->extDim = feaElem->feaDim * feaElem->ctxMap[0]; + //feaElem->feaMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), feaElem->extDim); + feaElem->feaMats = NULL; + feaElem->ctxPool = NULL; + feaElem->augFeaIdx = 0; + feaElem->feaSrc = NULL; + feaElem->hisLen = 0; + feaElem->hisMat = NULL; + feaElem->nUse = 0;*/ + + feaElem = CreateFeaElem(hset->hmem); + feaElem->inputKind = INPFEAIK; + /*feaElem->ctxMap = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxMap = CreateIntVec(hset->hmem, 1); + feaElem->ctxMap[1] = 0; + feaElem->srcDim = hset->swidth[streamIdx]; + feaElem->feaDim = feaElem->srcDim; + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + /* insert to hset->inpElem[streamIdx] */ + hset->inpElem[streamIdx][hset->nInp[streamIdx]++] = feaElem; + } + else { + feaElem = hset->inpElem[streamIdx][i]; + ++feaElem->nUse; + } + feaMix->feaList[0] = feaElem; + + /*feaMix->mixMat = feaMix->feaList[0]->feaMat;*/ + /* add a new macro */ + id = GetNextANNMacroName("GetDefaultInpFeaMix", hset, 'F'); + NewMacro(hset, 0, 'F', id, feaMix); + + return feaMix; +} + +FeaMix *GetDefaultANNFeaMix(HMMSet *hset, LELink srcLayer) { + FeaMix *feaMix; + FELink feaElem; + LabId id; + + /* gen feature mixture */ + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(feaMix, 0, sizeof(FeaMix)); + feaMix->elemNum = 1; + feaMix->mixDim = srcLayer->nodeNum; + /*feaMix->ownerNum = 0; + feaMix->nUse = 0;*/ + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * 1); + + feaElem = CreateFeaElem(hset->hmem); + feaElem->inputKind = ANNFEAIK; + /*feaElem->ctxMap = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxMap = CreateIntVec(hset->hmem, 1); + feaElem->ctxMap[1] = 0; + feaElem->feaSrc = srcLayer; + ++feaElem->feaSrc->nDrv; + feaElem->srcDim = feaElem->feaSrc->nodeNum; + feaElem->feaDim = feaElem->feaSrc->nodeNum; + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + + /* gen feature element */ + /*feaMix->feaList[0] = (FELink) New(hset->hmem, sizeof(FeaElem)); + feaElem = feaMix->feaList[0]; + feaElem->ctxMap = CreateIntVec(&gcheap, 1); + feaElem->ctxMap[1] = 0; + feaElem->inputKind = ANNFEAIK; + feaElem->feaSrc = srcLayer; + ++feaElem->feaSrc->nDrv; + feaElem->dimOff = 0; + feaElem->srcDim = feaElem->feaSrc->nodeNum; + feaElem->feaDim = feaElem->feaSrc->nodeNum; + feaElem->extDim = feaElem->feaDim * feaElem->ctxMap[0]; + feaElem->feaMats = NULL; + feaElem->ctxPool = NULL; + feaMix->mixMats = NULL; + feaMix->ctxPool = NULL; + feaElem->hisLen = 0; + feaElem->hisMat = NULL; + feaElem->doBackProp = TRUE; + feaElem->augFeaIdx = 0; + feaElem->streamIdx = 0; + feaElem->nUse = 0;*/ + + feaMix->feaList[0] = feaElem; + /* regist a new macro */ + id = GetNextANNMacroName("GetDefaultANNFeaMix", hset, 'F'); + NewMacro(hset, 0, 'F', id, feaMix); + + return feaMix; +} + +static int cmpfuncInt(const void *a, const void *b) { + return (*(int *)a - *(int *)b); +} + +static IntVec GetIntVec(HMMSet *hset, Source *src, Token *tok) +{ + IntVec intVec; + int intVal; + + if (trace & T_PAR) + printf("HModel: GetIntVec\n"); + + /* dim */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Size of the int vector expected"); + return NULL; + } + intVec = CreateIntVec(hset->hmem, intVal); + /* val val val ... */ + if (!ReadIntVec(src, intVec, tok->binForm)) { + HMError(src, "Values of the int vector expected"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + + return intVec; +} + +/* GetFeaMix: parse src and return FeaMix structure */ +FeaMix *GetFeaMix(HMMSet *hset, Source *src, Token *tok) +{ + FeaMix *feaMix; + FELink feaElem; + int intVals[MAXNTOKENARG]; + int i, j, sum; + int augFeaIdx; + + if (trace & T_PAR) + printf("HModel: GetFeaMix\n"); + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'F') { + feaMix = (FeaMix *) GetStructure(hset, src, 'F'); + if (feaMix == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + ++feaMix->nUse; + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else { /* an anonymous feature/feature MACRO definition */ + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(feaMix, 0, sizeof(FeaMix)); + /* num dim (optional) */ + if (tok->sym == NUMFEATURES) { /* a mixture of different features */ + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "Num feature component and total dimension expected"); + return NULL; + } + if (intVals[0] <= 0 || intVals[1] <= 0) { + HMError(src, "Bad feature component number or total dimension"); + return NULL; + } + feaMix->elemNum = intVals[0]; + feaMix->mixDim = intVals[1]; + /* idx dim */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else /* only one feature component */ + feaMix->elemNum = 1; + + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + for (i = 0, sum = 0; i < feaMix->elemNum; ++i, sum += feaElem->extDim) { /* load each feature component */ + /* initialise the FeaElem item */ + feaElem = CreateFeaElem(hset->hmem); + /* idx dim */ + if (tok->sym != FEATURE) { + HMError(src, " expected in GetFeaMix"); + return NULL; + } + /* idx dim */ + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "Feature component index and dimension expected"); + return NULL; + } + if (intVals[0] != (i + 1) || intVals[1] <= 0) { + HMError(src, "Bad feature component index or total dimension"); + return NULL; + } + feaElem->feaDim = intVals[1]; + /* name */ + if (GetToken(src, tok) < SUCCESS || tok->sym != SOURCE) { + HMError(src, "GetToken failed"); + return NULL; + } + else { + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "Feature source expected"); + return NULL; + } + /* name */ + if (tok->sym == MACRO) { + feaElem->inputKind = ANNFEAIK; + if (tok->macroType == 'L') { + feaElem->mType = tok->macroType; + if (!ReadString(src, feaElem->mName)) { + HMError(src, "Failed to read the macro name"); + return NULL; + } + /* all ANNFEAIK are treated as post defined features */ + /*feaElem->feaSrc = NULL;*/ + } + else { + HMError(src, "Incompatible MACRO as feature source"); + return NULL; + } + feaElem->srcDim = -1; + } + else if (tok->sym == AUGFEATURE) { /* cz277 - aug */ + feaElem->inputKind = AUGFEAIK; + /*feaElem->feaSrc = NULL;*/ + if (!ReadInt(src, intVals, 1, tok->binForm)) { + HMError(src, "Stream index for this FeaElem expected"); + return NULL; + } + augFeaIdx = intVals[0]; + if (augFeaIdx < 1 || augFeaIdx > MAXAUGFEAS) { + HMError(src, "Augmented feature index out of range"); + return NULL; + } + feaElem->augFeaIdx = augFeaIdx; + /* augmented feature is treated as a special INPFEAIK type, stored in inpElem, streamIdx 1 */ + feaElem->streamIdx = 1; + feaElem->srcDim = feaElem->feaDim; + } + else if (tok->sym == PARMKIND) { /* symbol is not in symMap; it is a sampKind */ + feaElem->inputKind = INPFEAIK; + /*feaElem->feaSrc = NULL;*/ + if (tok->pkind != hset->pkind) { + HMError(src, "Input feature different from that to the system"); + return NULL; + } + feaElem->streamIdx = 1; + feaElem->srcDim = hset->swidth[feaElem->streamIdx]; + } + else if (tok->sym == STREAM) { + feaElem->inputKind = INPFEAIK; + /*feaElem->feaSrc = NULL;*/ + if (!ReadInt(src, intVals, 1, tok->binForm)) { + HMError(src, "Stream index for this FeaElem expected"); + return NULL; + } + if (intVals[0] < 1 || intVals[0] > hset->swidth[0]) { + HMError(src, "Stream index out of range"); + return NULL; + } + feaElem->streamIdx = intVals[0]; + feaElem->srcDim = hset->swidth[feaElem->streamIdx]; + } + else { + HMError(src, "GetToken failed"); + return NULL; + } + } + /* next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /*feaElem->srcDim = feaElem->extDim;*/ + /* startdim enddim */ + if (tok->sym == DIMRANGE) { + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "The start and the end dimension expected"); + return NULL; + } + feaElem->dimOff = intVals[0] - 1; + if (feaElem->feaDim != (intVals[1] - intVals[0] + 1)) { + HMError(src, "Given dimension range does not match the specified dimension"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + if (tok->sym == CONTEXTSHIFT) { + feaElem->ctxMap = GetIntVec(hset, src, tok); + /* sort the context map */ + qsort(feaElem->ctxMap + 1, IntVecSize(feaElem->ctxMap), sizeof(int), cmpfuncInt); + } + else { + feaElem->ctxMap = CreateIntVec(hset->hmem, 1); + /*feaElem->ctxMap = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxMap[1] = 0; + } + /* check context expansion */ + if (feaElem->inputKind == ANNFEAIK) + for (j = 1; j <= feaElem->ctxMap[0]; ++j) + if (feaElem->ctxMap[j] == 0) + feaElem->doBackProp = TRUE; + /* set dimOff, extDim, srcDim, and feaMat */ + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + + /* cz277 - many */ + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { /* cz277 - aug */ + /* set the shared FeaElem item */ + for (j = 0; j < hset->nInp[feaElem->streamIdx]; ++j) + if (CmpFeaElem(hset->inpElem[feaElem->streamIdx][j], feaElem)) + break; + /* register this new FeaElem */ + if (j == hset->nInp[feaElem->streamIdx]) { + if (j >= MAXINPUSE) { + HRError(7075, "Maximum number of input feature usage reached, try increase MAXINPUSE"); + return NULL; + } + hset->inpElem[feaElem->streamIdx][hset->nInp[feaElem->streamIdx]++] = feaElem; + /*feaMix->feaList[i] = feaElem;*/ + } + else { /* has been registered, share it */ + Dispose(hset->hmem, feaElem); + feaElem = hset->inpElem[feaElem->streamIdx][j]; + ++feaElem->nUse; + } + } + feaMix->feaList[i] = feaElem; + } + + /* set feature mixture dimension when NUMFEATURES omitted */ + if (feaMix->elemNum == 1) + feaMix->mixDim = feaMix->feaList[0]->extDim; + /* check feaDim = sum(subDim * ctxNum) */ + if (feaMix->mixDim != sum) { + HMError(src, "Feature mixture from all sources do not have the same dimension as the claimed"); + return NULL; + } + } + + return feaMix; +} + +/* cz277 - 150824 */ +NMatBundle *FetchNMatBundle(HMMSet *hset, char *macroname) { + LabId id; + MLink m; + NMatBundle *bundle; + + id = GetLabId(macroname, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'M', id)) != NULL) + bundle = (NMatBundle *) m->structure; + else { + if (id == NULL) + id = GetLabId(macroname, TRUE); + bundle = (NMatBundle *) New(hset->hmem, sizeof(NMatBundle)); + memset(bundle, 0, sizeof(NMatBundle)); + bundle->id = id; + bundle->accptr = &bundle->accum; + } + + return bundle; +} + +/* cz277 - 150824 */ +static NMatBundle *GetNMatBundle(HMMSet *hset, Source *src, Token *tok, char *name) { + Matrix floatMat; + int intVals[2]; + NMatBundle *bundle; + LabId id = NULL; + char buf[MAXSTRLEN]; + NMatrix **NMatObj; + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'M') { + bundle = (NMatBundle *) GetStructure(hset, src, 'M'); + if (bundle == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + ++bundle->nUse; + } + else { + if (tok->sym == TARGETMACRO) { + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + if (tok->sym != MACRO || tok->macroType != 'M') { + HMError(src, "M type macro expected for "); + return NULL; + } + if (!ReadString(src, buf)) { + HMError(src, "M type macro name expected for "); + return NULL; + } + id = GetLabId(buf, TRUE); /* SI label id: allow SD NVecs loaded first */ + MakeNameNMatRPL(name, buf, buf); /* buf: SI name to extended name */ + bundle = FetchNMatBundle(hset, buf); + bundle->kind = SDBK; + if (bundle->hook == NULL) + bundle->hook = id; + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else { +#ifdef USEOLDANNMODEL + if (name == NULL) { /* assign auto-name to anonymous SI macro */ + id = GetNextANNMacroName("GetNMatBundle", hset, 'M'); + name = id->name; + HError(-1, "GetNMatBundle: Auto-name %s assgined to anonymous SI macro", name); + } +#endif + bundle = FetchNMatBundle(hset, name); + bundle->kind = SIBK; + bundle->updateflag = TRUE; +#ifdef USEOLDANNMODEL + if (id != NULL) { /* register the anonymous SI macro */ + ++bundle->nUse; + NewMacro(hset, 0, 'M', id, bundle); + } +#endif + } + /* type of parameters */ + switch (tok->sym) { + case UPDATE: NMatObj = &bundle->updates; break; + case NEGLEARNRATE: NMatObj = &bundle->neglearnrates; break; + case SUMSQUAREDGRAD: NMatObj = &bundle->sumsquaredgrad; break; + default: + NMatObj = &bundle->variables; + } + /* read next keyword */ + switch (tok->sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + /*if (!ReadInt(src, intVals, 1, tok->binForm)) { + HMError(src, "Update index expected"); + return NULL; + } + *bundle->accptr = intVals[0];*/ + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + break; + default: + break; + } +#ifdef USEOLDANNMODEL + if (tok->sym == WEIGHT) + tok->sym = MATRIX; +#endif + /* check */ + if (tok->sym != MATRIX) { + HMError(src, " expected"); + return NULL; + } + /* nrows ncols */ + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "Value matrix row and col num expected"); + return NULL; + } + floatMat = CreateMatrix(&gstack, intVals[0], intVals[1]); + if (!ReadMatrix(src, floatMat, tok->binForm)) { + HMError(src, "Read value matrix failed"); + return NULL; + } + if (bundle->kind == SIBK) /* SI parameters */ + *NMatObj = CreateNMatrix(hset->hmem, intVals[0], intVals[1]); + else /* SD parameters (SDBK), no GPU space */ + *NMatObj = CreateHostNMatrix(hset->hmem, intVals[0], intVals[1]); + CopyMatrix2NMatrix(floatMat, *NMatObj); + FreeMatrix(&gstack, floatMat); + + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + + return bundle; +} + + +/* cz277 - 150824 */ +NVecBundle *FetchNVecBundle(HMMSet *hset, char *macroname) { + LabId id; + MLink m; + NVecBundle *bundle; + + id = GetLabId(macroname, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'V', id)) != NULL) + bundle = (NVecBundle *) m->structure; + else { + if (id == NULL) + id = GetLabId(macroname, TRUE); + bundle = (NVecBundle *) New(hset->hmem, sizeof(NVecBundle)); + memset(bundle, 0, sizeof(NVecBundle)); + bundle->id = id; + bundle->accptr = &bundle->accum; + } + + return bundle; +} + +/* cz277 - xform */ +static NVecBundle *GetNVecBundle(HMMSet *hset, Source *src, Token *tok, char *name) +{ + int intVal; + Vector floatVec; + NVecBundle *bundle; + LabId id = NULL; + char buf[MAXSTRLEN]; + NVector **NVecObj; + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'V') { + bundle = (NVecBundle *) GetStructure(hset, src, 'V'); + if (bundle == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + ++bundle->nUse; + } + else { + if (tok->sym == TARGETMACRO) { /* speaker dependent (SDBK) */ + if (name == NULL) { + HMError(src, "GetNVecBundle: Only SI parameter can have NULL name input"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + if (tok->sym != MACRO || tok->macroType != 'V') { + HMError(src, "V type macro expected for "); + return NULL; + } + if (!ReadString(src, buf)) { + HMError(src, "V type macro name expected for "); + return NULL; + } + id = GetLabId(buf, TRUE); /* SI label id: allow SD NVecs loaded first */ + MakeNameNVecRPL(name, buf, buf); /* buf: SI name to extended name */ + bundle = FetchNVecBundle(hset, buf); + bundle->kind = SDBK; + if (bundle->hook == NULL) + bundle->hook = id; + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else { +#ifdef USEOLDANNMODEL + if (name == NULL) { /* assign auto-name to anonymous SI macro */ + id = GetNextANNMacroName("GetNVecBundle", hset, 'V'); + name = id->name; + HError(-1, "GetNVecBundle: Auto-name %s assgined to anonymous SI macro", name); + } +#endif + bundle = FetchNVecBundle(hset, name); + bundle->kind = SIBK; + bundle->updateflag = TRUE; +#ifdef USEOLDANNMODEL + if (id != NULL) { /* register the anonymous SI macro */ + ++bundle->nUse; + NewMacro(hset, 0, 'V', id, bundle); + } +#endif + } + /* type of parameters */ + switch (tok->sym) { + case UPDATE: NVecObj = &bundle->updates; break; + case NEGLEARNRATE: NVecObj = &bundle->neglearnrates; break; + case SUMSQUAREDGRAD: NVecObj = &bundle->sumsquaredgrad; break; + default: + NVecObj = &bundle->variables; + } + /* read next keyword */ + switch (tok->sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + /*if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Update index expected"); + return NULL; + } + *bundle->accptr = intVal;*/ + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + break; + default: + break; + } +#ifdef USEOLDANNMODEL + if (tok->sym == BIAS) + tok->sym = VECTOR; +#endif + /* */ + if (tok->sym != VECTOR) { + HMError(src, " expected"); + return NULL; + } + /* size */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Vector size expected"); + return NULL; + } + floatVec = CreateVector(&gstack, intVal); + if (!ReadVector(src, floatVec, tok->binForm)) { + HMError(src, "Read vector failed"); + return NULL; + } + if (bundle->kind == SIBK) + *NVecObj = CreateNVector(hset->hmem, intVal); + else + *NVecObj = CreateHostNVector(hset->hmem, intVal); + CopyVector2NVector(floatVec, *NVecObj); + FreeVector(&gstack, floatVec); + + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + + return bundle; +} + + +LELink GenBlankLayer(MemHeap *heap) { + LELink layerElem; + + layerElem = (LELink) New(heap, sizeof(LayerElem)); + memset(layerElem, 0, sizeof(LayerElem)); + layerElem->layerKind = PERCEPTRONLAK; + layerElem->isFinalLayer = FALSE; + layerElem->actfunKind = SIGMOIDAF; + /*memset(layerElem->actFunInfo.actParmVec, 0, sizeof(NVecBundle *) * MAXNACTFUNPARMVEC);*/ + + /* cz277 - pact */ + /*layerElem->actFunInfo.actFunKind = SIGMOIDAF; + memset(layerElem->actFunInfo.actParmVec, 0, sizeof(NVector *) * MAXNACTFUNPARMVEC); + layerElem->feaMix = NULL; + layerElem->errMix = NULL; + layerElem->nUse = 0; + layerElem->nDrv = 0; + layerElem->ownerCnt = 0; + layerElem->ownerHead = NULL; + layerElem->ownerTail = NULL; + layerElem->trainInfo = NULL; + layerElem->xFeaMats = NULL; + layerElem->yFeaMats = NULL; + layerElem->drvCtx = NULL; + layerElem->layerKind = PERCEPTRONLAK; + layerElem->isFinalLayer = FALSE; + layerElem->wghtMat = NULL; + layerElem->biasVec = NULL;*/ + + return layerElem; +} + +/* generate a new ANN layer and randomise it */ +/*LELink GenNewPerceptronLayer(HMMSet *hset, int nodeNum, int inputDim, char *wghtName, char *biasName) { + LELink layerElem; + + layerElem = GenBlankLayer(hset->hmem); + layerElem->nodeNum = nodeNum; + layerElem->inputDim = inputDim; + layerElem->wghtMat = FetchNMatBundle(hset, wghtName); + if (layerElem->wghtMat->variables == NULL) { + layerElem->wghtMat->variables = CreateNMatrix(hset->hmem, nodeNum, inputDim); + layerElem->wghtMat->kind = SIBK; + } + else { + if (layerElem->wghtMat->variables->rowNum != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix row"); + if (layerElem->wghtMat->variables->colNum != inputDim) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix column"); + } + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + layerElem->biasVec = FetchNVecBundle(hset, biasName); + if (layerElem->biasVec->variables == NULL) { + layerElem->biasVec->variables = CreateNVector(hset->hmem, nodeNum); + layerElem->biasVec->kind = SIBK; + } + else if (layerElem->biasVec->variables->vecLen != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong bias vector length"); + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + + return layerElem; +}*/ + +Boolean CheckActFunParameters(LELink layerElem) { + char buf[MAXSTRLEN]; + int var, i; + + /* 0. return if non-parametric activation function */ + switch (layerElem->actfunKind) { + case LINEARAF: + case RELUAF: + case SIGMOIDAF: + case SOFTRELUAF: + case SOFTMAXAF: + case TANHAF: + if (layerElem->actfunVecs == NULL) + return TRUE; + else { + HRError(7050, "CheckActFunParameters: %s should have no variables", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + default: + break; + } + /* 1. check hyper variables */ + switch (layerElem->actfunKind) { + /*case HERMITEAF: + if (layerElem->actfunVecs[0] == NULL) { + HRError(7050, "CheckActFunParameters: Hyper variable expected for %s", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + break;*/ + default: + if (layerElem->actfunVecs[0] != NULL) { + HRError(7050, "CheckActFunParameters: Hyper variable cannot be set for %s", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + } + /* 2. check the common variable vector number */ + switch (layerElem->actfunKind) { + case AFFINEAF: var = 2; break; + case HERMITEAF: + if (layerElem->actfunParmNum == 0) { + HRError(7050, "CheckActFunParameters: %s expect common variables", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + var = layerElem->actfunParmNum; + break; + case LHUCRELUAF: var = 1; break; + case PRELUAF: var = 1; break; + case PARMRELUAF: var = 2; break; + case LHUCSIGMOIDAF: var = 1; break; + case PSIGMOIDAF: var = 1; break; + case PARMSIGMOIDAF: var = 3; break; + case LHUCSOFTRELUAF: var = 1; break; + case PSOFTRELUAF: var = 1; break; + case PARMSOFTRELUAF: var = 3; break; + default: var = 0; + } + if (var != layerElem->actfunParmNum) { + HRError(7050, "CheckActFunParameters: %s should have %d vectors of common variables", ActFunKind2Str(layerElem->actfunKind, buf), var); + return FALSE; + } + /* check the vector dims */ + switch (layerElem->actfunKind) { + case AFFINEAF: + case HERMITEAF: + case LHUCRELUAF: + case PRELUAF: + case PARMRELUAF: + case LHUCSIGMOIDAF: + case PSIGMOIDAF: + case PARMSIGMOIDAF: + case LHUCSOFTRELUAF: + case PSOFTRELUAF: + case PARMSOFTRELUAF: + for (i = 1; i <= layerElem->actfunParmNum; ++i) + if (layerElem->actfunVecs[i] == NULL || layerElem->actfunVecs[i]->variables->vecLen != layerElem->nodeNum) + HError(7072, "CheckActFunParameters: Wrong activation function parameter vector sizes"); + break; + default: + break; + } + return TRUE; +} + +/* cz277 - pact */ +static Boolean GetActFunVectors(Source *src, Token *tok, HMMSet *hset, LELink layerElem) { + int i, nVec = 0, vecIdx; + NVecBundle *hyperVec = NULL; + char buf[MAXSTRLEN]; + + if (tok->sym != ACTIVATION) { + HMError(src, " symbol expected"); + return FALSE; + } + /* load activation function kind */ + if (!ReadString(src, buf)) { + HMError(src, "Activation function kind expected"); + return FALSE; + } + layerElem->actfunKind = Str2ActFunKind(buf); + /* get the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + /* get the control/hyper variable vector (optional) */ + if (tok->sym == HYPERPARAMETER) { + hyperVec = GetNVecBundle(hset, src, tok, NULL); + /* get the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + } + /* get the number of variable vectors (optional) */ + if (tok->sym == NUMPARAMETERS) { + if (!ReadInt(src, &nVec, 1, tok->binForm)) { + HMError(src, "Integer expected for "); + return FALSE; + } + if (nVec <= 0) + HError(7075, "GetActFunVectors: must be positive interger"); + /* get the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + } + /* get the common variable vectors */ + if (nVec == 0 && tok->sym == PARAMETER) + nVec = 1; + /* set variable vector number and load the variable vectors */ + layerElem->actfunParmNum = nVec; + if (hyperVec != NULL || nVec > 0) { + layerElem->actfunVecs = (NVecBundle **) New(hset->hmem, sizeof(NVecBundle *) * (nVec + 1)); + memset(layerElem->actfunVecs, 0, sizeof(NVecBundle *) * (nVec + 1)); + layerElem->actfunVecs[0] = hyperVec; + /* load each */ + while (tok->sym == PARAMETER) { + if (!ReadInt(src, &vecIdx, 1, tok->binForm)) { + HMError(src, "Integer index expected for "); + return FALSE; + } + if (vecIdx <= 0 || vecIdx > nVec) { + HMError(src, " index should be positive and smaller than "); + return FALSE; + } + if (layerElem->actfunVecs[vecIdx] != NULL) { + HMError(src, "Multiple defined with the same index"); + return FALSE; + } + layerElem->actfunVecs[vecIdx] = GetNVecBundle(hset, src, tok, NULL); + } + /* sanity check */ + for (i = 1; i <= nVec; ++i) { + if (layerElem->actfunVecs[i] == NULL) { + HMError(src, " defination missing"); + return FALSE; + } + } + if (CheckActFunParameters(layerElem) == FALSE) { + HMError(src, "Activation function have wrong vectors of variables"); + return FALSE; + } + } + /* setup the tracing list */ + if (layerElem->actfunVecs != NULL) { + for (i = 0; i<= nVec; ++i) { + layerElem->actfunVecs[i]->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->actfunVecs[i]->hook); + /*++layerElem->actfunVecs[i]->nUse;*/ + } + } + + return TRUE; +} + +/* cz277 - 150811 */ +static Boolean GetActivationOnlyLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + HError(7001, "GetActivationOnlyLayer: Function not implemented yet!"); + return FALSE; +} + +static Boolean GetConvolutionLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + HError(7001, "GetConvolutionLayer: Function not implemented yet!"); + return FALSE; +} + +static Boolean GetPerceptronLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + /* 1. WEIGHT */ + if (tok->sym != WEIGHT) { + HMError(src, " symbol expected"); + return FALSE; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + layerElem->wghtMat = GetNMatBundle(hset, src, tok, NULL); + layerElem->wghtMat->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + /*++layerElem->wghtMat->nUse;*/ + layerElem->nodeNum = NumNRows(layerElem->wghtMat->variables); + layerElem->inputDim = NumNCols(layerElem->wghtMat->variables); + /* 2. BIAS */ + if (tok->sym != BIAS) { + HMError(src, " symbol expected"); + return FALSE; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + layerElem->biasVec = GetNVecBundle(hset, src, tok, NULL); + layerElem->biasVec->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + /*++layerElem->biasVec->nUse;*/ + /* Safety check */ + if (layerElem->nodeNum != NVectorSize(layerElem->biasVec->variables)) { + HRError(7072, "Input weight matrix and bias vector row do not match"); + return FALSE; + } + /* 3. ACTIVATION */ + if (tok->sym != ACTIVATION) { + HMError(src, " symbol expected"); + return FALSE; + } + if (GetActFunVectors(src, tok, hset, layerElem) == FALSE) { + HMError(src, "Fail to load activation function"); + return FALSE; + } + + return TRUE; +} + +static Boolean GetSubsamplingLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + HError(7001, "GetSubsamplingLayer: Function not implemented yet!"); + return FALSE; +} + +/* cz277 - 150811 */ +static LELink GetLayerElem(HMMSet *hset, Source *src, Token *tok) +{ + LELink layerElem; + char buf[MAXSTRLEN]; + /* cz277 - gradprobe */ +#ifdef GRADPROBE + int probeSegNum; +#endif + + if (trace & T_PAR) + printf("HModel: GetLayerElem\n"); + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'L') { + layerElem = (LELink) GetStructure(hset, src, 'L'); + if (layerElem == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + ++layerElem->nUse; + } + else { + layerElem = GenBlankLayer(hset->hmem); + /* assign auto-name to anonymous macro */ + /*if (name == NULL) { + id = GetNextANNMacroName("GetLayerElem", hset, 'L'); + name = id->name; + HError(-1, "GetLayerElem: Auto-name %s assgined to anonymous macro", name); + NewMacro(hset, fidx, 'L', id, layerElem); + }*/ + + /* the default input will be parmkind if it is an input layer; + otherwise the input will be the output of its previous layer. + these new features will be assigned later when defining ANNDef. + */ +#ifdef USEOLDANNMODEL + if (tok->sym == OPERAND) { + if (!ReadString(src, buf)) { + HMError(src, "Operand kind expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + if (tok->sym == ACTIVATION) { + if (!ReadString(src, buf)) { + HMError(src, "Activation function kind expected"); + return NULL; + } + layerElem->actfunKind = Str2ActFunKind(buf); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + if (tok->sym == INPUTFEATURE) { + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + layerElem->feaMix = GetFeaMix(hset, src, tok); + if (layerElem->feaMix == NULL) { + HMError(src, "GetFeaMix failed"); + return NULL; + } + layerElem->feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + } + if (tok->sym != WEIGHT) { + HMError(src, " symbol expected"); + return NULL; + } + layerElem->wghtMat = GetNMatBundle(hset, src, tok, NULL); + layerElem->wghtMat->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + ++layerElem->wghtMat->nUse; +#ifdef CUDA + RegisterTmpNMat(1, layerElem->nodeNum); +#endif + if (tok->sym != BIAS) { + HMError(src, " symbol expected"); + return NULL; + } + /*layerElem->biasVec = GetNVector(hset, src, tok);*/ + layerElem->biasVec = GetNVecBundle(hset, src, tok, NULL); + layerElem->biasVec->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + ++layerElem->biasVec->nUse; + layerElem->nodeNum = NumNRows(layerElem->wghtMat->variables); + layerElem->inputDim = NumNCols(layerElem->wghtMat->variables); + } + else { +#endif /* USEOLDANNMODEL */ + + /* 1. */ + if (tok->sym != BEGINLAYER) { + HMError(src, " symbol expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* 2. */ + if (tok->sym != LAYERKIND) { + HMError(src, " symbol expected"); + return NULL; + } + if (!ReadString(src, buf)) { + HMError(src, "Layer kind expected"); + return NULL; + } + layerElem->layerKind = Str2LayerKind(buf); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* 3. ... */ + if (tok->sym != INPUTFEATURE) + HMError(src, " symbol expected"); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + layerElem->feaMix = GetFeaMix(hset, src, tok); + if (layerElem->feaMix == NULL) { + HMError(src, "GetFeaMix failed"); + return NULL; + } + layerElem->feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + /* 4. load the rest fields */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: GetActivationOnlyLayer(hset, src, tok, layerElem); break; + case CONVOLUTIONLAK: GetConvolutionLayer(hset, src, tok, layerElem); break; + case PERCEPTRONLAK: GetPerceptronLayer(hset, src, tok, layerElem); break; + case SUBSAMPLINGLAK: GetSubsamplingLayer(hset, src, tok, layerElem); break; + default: + HMError(src, "Unknown layer kind"); + return NULL; + } + /* 5. (optional) */ + if (tok->sym != ENDLAYER) { + HMError(src, " symbol expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* cz277 - max norm */ +#ifdef CUDA + RegisterTmpNMat(1, layerElem->nodeNum); +#endif + +#ifdef USEOLDANNMODEL + } +#endif + + /* cz277 - gradprobe */ +#ifdef GRADPROBE + probeSegNum = PROBEBOUNDARY / PROBERESOLUTE * 2 + 1; + layerElem->wghtGradInfoVec = CreateDVector(hset->hmem, probeSegNum); + layerElem->biasGradInfoVec = CreateDVector(hset->hmem, probeSegNum); +#endif + } + + return layerElem; +} + + +static ADLink GetANNDef(HMMSet *hset, Source *src, Token *tok) +{ + char buf[MAXSTRLEN]; + int i, intVal; + AILink annInfo; + AILink curInfo; + ADLink annDef; + + if (trace & T_PAR) + printf("HModel: GetANNDef\n"); + + /* cz277 - 1015 */ + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'N') { + annDef = (ADLink) GetStructure(hset, src, 'N'); + if (annDef == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + ++annDef->nUse; + } + else if (tok->sym == BEGINANN) { /* */ + annDef = (ADLink) New(hset->hmem, sizeof(ANNDef)); + annDef->nUse = 0; + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } +#ifdef USEOLDANNMODEL + if (tok->sym == ANNKIND) { + if (!ReadString(src, buf)) { + HMError(src, "ANN kind expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } +#endif + /* num */ + if (tok->sym != NUMLAYERS) { + HMError(src, " symbol expected"); + return NULL; + } + /* num */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Layer num expected"); + return NULL; + } + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + annDef->layerNum = intVal - 1; /* since the first layer is a logical */ + annDef->layerList = (LELink *) New(hset->hmem, sizeof(LELink) * annDef->layerNum); + /* idx */ + for (i = 0; i < annDef->layerNum; ++i) { + if (tok->sym != LAYER) { + HMError(src, " symbol expected"); + return NULL; + } + /* idx */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Layer index expected"); + return NULL; + } + if (intVal != i + 2) { /* position 0 stores layer 2 */ + HMError(src, "Bad layer index number"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* layer def or name */ + annDef->layerList[i] = GetLayerElem(hset, src, tok); + /* set owner and index */ + annInfo = (AILink) New(hset->hmem, sizeof(ANNInfo)); + annInfo->annDef = annDef; + annInfo->index = i; + if (annDef->layerList[i]->ownerHead == NULL) { /* empty bi-direct chain */ + annDef->layerList[i]->ownerHead = annInfo; + annDef->layerList[i]->ownerTail = annInfo; + annInfo->next = NULL; + annInfo->prev = NULL; + } + else { /* otherwise, add to the tail of the link */ + curInfo = annDef->layerList[i]->ownerTail; + curInfo->next = annInfo; + annInfo->next = NULL; + annInfo->prev = curInfo; + annDef->layerList[i]->ownerTail = annInfo; + } + ++annDef->layerList[i]->ownerCnt; + /* forbid layer sharing at present */ + if (annDef->layerList[i]->ownerCnt > 1) { + HMError(src, "Layer cannot be shared by multiple ANNs"); + return NULL; + } + } + /* */ + if (tok->sym != ENDANN) { + HMError(src, " symbol expected"); + return NULL; + } + + /* set numTargets */ + annDef->targetNum = annDef->layerList[annDef->layerNum - 1]->nodeNum; + } + else { + HMError(src, " symbol expected in GetANNDef"); + return NULL; + } + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + + return annDef; +} + /* ---------------------- Symbol Output Routine ------------------------ */ /* PutSymbol: output symbol to f in ascii or binary form */ @@ -2726,16 +5106,30 @@ void PutDiscrete(FILE *f, StreamElem *se, Boolean binary) static void PutMacroHdr(HMMSet *hset, FILE *f, MLink m, char mType, Ptr ptr, Boolean binary) { - if (m==NULL) - m = FindMacroStruct(hset,mType,ptr); - if (m != NULL) { - if (m->type != mType) - HError(7091,"PutMacroHdr: Macro type error ~%c vs ~%c",m->type, mType); - fprintf(f,"~%c %s",mType,ReWriteString(m->id->name,NULL,DBL_QUOTE)); - if (!binary) fprintf(f,"\n"); - return; + /* cz277 - 150811 */ + int offset = 0; + LabId id = NULL; + + if (m == NULL) + m = FindMacroStruct(hset, mType, ptr); + if (m != NULL) { + if (m->type != mType) + HError(7091, "PutMacroHdr: Macro type error ~%c vs ~%c", m->type, mType); + + /* cz277 - 150811 */ + if (m->type == 'M' && ((NMatBundle *) m->structure)->kind == SDBK) + id = (LabId) ((NMatBundle *) m->structure)->hook; + if (m->type == 'V' && ((NVecBundle *) m->structure)->kind == SDBK) + id = (LabId) ((NVecBundle *) m->structure)->hook; + if (id != NULL) + offset = strlen(id->name) + 1; + + fprintf(f, "~%c %s", mType, ReWriteString(m->id->name + offset, NULL, DBL_QUOTE)); /* cz277 - 150811 */ + if (!binary) fprintf(f, "\n"); + + return; } - HError(7035,"PutMacroHdr: Unable to find ~%c Macro to write",mType); + HError(7035, "PutMacroHdr: Unable to find ~%c Macro to write", mType); } @@ -2944,7 +5338,7 @@ static void GetMixPDFInfo(HMMSet *hset, HMMDef *hmm, MixtureElem *tme, int *stat } if (found) break; } - if (*state==0) HError(999,"GetMixPDFInfo: component not found"); + if (*state==0) HError(7073,"GetMixPDFInfo: component not found"); } @@ -2959,7 +5353,7 @@ static void PutBaseClass(HMMSet *hset, FILE *f, MLink q, BaseClass *bclass, HMMDef *hmm; if (bclass->fname == NULL) - HError(999,"Can only PutBaseClass with baseclasses that have been read"); + HError(7073,"Can only PutBaseClass with baseclasses that have been read"); if (bclass->nUse >0 || inMacro) PutMacroHdr(hset,f,q,'b',bclass,binary); if (bclass->nUse == 0 || inMacro) { @@ -3049,6 +5443,400 @@ static void PutMixPDF(HMMSet *hset, FILE *f, MLink q, MixPDF *mp, } } +/* cz277 - ANN */ +static void PutLayerElem(HMMSet *hset, FILE *f, MLink q, LELink layerElem, Boolean inMacro, Boolean binary); +static void PutANNDef(HMMSet *hset, FILE *f, MLink q, ADLink annDef, Boolean inMacro, Boolean binary); + +/* cz277 - ANN */ +static void PutFeaMix(HMMSet *hset, FILE *f, MLink q, FeaMix *feaMix, Boolean inMacro, Boolean binary) +{ + int i, j, s, sIdx, intVal; + FELink feaElem; + char buf[MAXSTRLEN]; + + if (feaMix->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'F', feaMix, binary); + if (feaMix->nUse == 0 || inMacro) { + /* num dim (optional) */ + if (feaMix->elemNum > 1) { + PutSymbol(f, NUMFEATURES, binary); + WriteInt(f, &feaMix->elemNum, 1, binary); + WriteInt(f, &feaMix->mixDim, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + /* output each FeaElem */ + for (i = 0; i < feaMix->elemNum; ++i) { + /* get current feature element */ + feaElem = feaMix->feaList[i]; + /* idx dim */ + PutSymbol(f, FEATURE, binary); + intVal = i + 1; + WriteInt(f, &intVal, 1, binary); + WriteInt(f, &feaElem->feaDim, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* name */ + PutSymbol(f, SOURCE, binary); + if (feaElem->inputKind == ANNFEAIK) { + if (!binary) + fprintf(f, " "); + if (feaElem->feaSrc->nUse > 0) { /* use ~L */ + PutLayerElem(hset, f, NULL, feaElem->feaSrc, FALSE, binary); + } + } + else if (feaElem->inputKind == AUGFEAIK) { /* cz277 - aug */ + /* idx */ + if (!binary) + fprintf(f, " "); + PutSymbol(f, AUGFEATURE, binary); + WriteInt(f, &feaElem->augFeaIdx, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + else if (feaElem->inputKind == INPFEAIK) { + if (hset->swidth[0] == 1) { /* if only 1 stream */ + if (!binary) + fprintf(f, " "); + fprintf(f, "<%s>", ParmKind2Str(hset->pkind, buf)); + } + else { + /* look for the right stream index */ + sIdx = -1; + for (s = 1; s <= hset->swidth[0]; ++i) { + for (j = 0; j < hset->nInp[s]; ++j) { + if (hset->inpElem[s][j] == feaElem) { + sIdx = s; + break; + } + } + if (sIdx > 0) + break; + } + if (sIdx == -1) + HError(7075, "PutFeaMix: Input feature stream index out of range"); + /* idx */ + if (!binary) + fprintf(f, " "); + PutSymbol(f, STREAM, binary); + WriteInt(f, &sIdx, 1, binary); + } + if (!binary) + fprintf(f, "\n"); + } + else + HError(7092, "PutFeaMix: Unsupported FeaElem source kind"); + /* cz277 - split2 */ + /* stdim eddim */ + if (!(feaElem->dimOff == 0 && feaElem->feaDim == feaElem->srcDim)) { + PutSymbol(f, DIMRANGE, binary); + intVal = feaElem->dimOff + 1; + WriteInt(f, &intVal, 1, binary); + intVal = feaElem->dimOff + feaElem->feaDim; + WriteInt(f, &intVal, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + /* winlen (optional) */ + /*if ((feaElem->inputKind != AUGFEAIK) && (!(feaElem->ctxMap[0] == 1 && feaElem->ctxMap[1] == 0))) {*/ + /* cz277 - gap */ + if (feaElem->inputKind != AUGFEAIK) { + PutSymbol(f, CONTEXTSHIFT, binary); + WriteInt(f, &feaElem->ctxMap[0], 1, binary); + if (!binary) + fprintf(f, "\n"); + WriteInt(f, &feaElem->ctxMap[1], feaElem->ctxMap[0], binary); + if (!binary) + fprintf(f, "\n"); + } + } + } +} + +static void PutNVecBundle(HMMSet *hset, FILE *f, MLink q, NVecBundle *bundle, Symbol sym, Boolean inMacro, Boolean binary) +{ + Vector floatVec; + int nlen; + MLink m=NULL; + + if (bundle->kind == SDBK) { + if ((m = FindMacroName(hset, 'V', (LabId) bundle->hook)) == NULL) + return; + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + return; + default: break; + } + } + + if (bundle->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'V', bundle, binary); + if (bundle->nUse == 0 || inMacro) { + if (bundle->kind == SDBK) { + PutSymbol(f, TARGETMACRO, binary); + if(m==NULL) + HError(7000,"PutNVecBundle: Bundle macro not initialised"); + PutMacroHdr(hset, f, q, 'V', (NVecBundle *) m->structure, binary); + } + if (bundle->variables == NULL) + HError(7000, "PutNVecBundle: Bundle structure should have variables field initialised"); + nlen = (int) bundle->variables->vecLen; + floatVec = CreateVector(&gstack, nlen); + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + PutSymbol(f, sym, binary); + if (!binary) + fprintf(f, "\n"); + break; + default: + break; + } + switch (sym) { + /*case 'g': CopyNVector2Vector(bundle->gradients, floatVec); break;*/ + case UPDATE: CopyNVector2Vector(bundle->updates, floatVec); break; + case NEGLEARNRATE: CopyNVector2Vector(bundle->neglearnrates, floatVec); break; + case SUMSQUAREDGRAD: CopyNVector2Vector(bundle->sumsquaredgrad, floatVec); break; + default: CopyNVector2Vector(bundle->variables, floatVec); + } + + PutSymbol(f, VECTOR, binary); + WriteInt(f, &nlen, 1, binary); + if (!binary) + fprintf(f, "\n"); + WriteVector(f, floatVec, binary); + FreeVector(&gstack, floatVec); + } +} + + +static void PutNMatBundle(HMMSet *hset, FILE *f, MLink q, NMatBundle *bundle, Symbol sym, Boolean inMacro, Boolean binary) { + Matrix floatMat; + int nrows, ncols; + MLink m=NULL; + + if (bundle->kind == SDBK && (m = FindMacroName(hset, 'M', (LabId) bundle->hook)) == NULL) + return; + if (bundle->kind == SDBK) { + if ((m = FindMacroName(hset, 'M', (LabId) bundle->hook)) == NULL) + return; + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + return; + default: break; + } + } + + if (bundle->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'M', bundle, binary); + if (bundle->nUse == 0 || inMacro) { + if (bundle->kind == SDBK) { + PutSymbol(f, TARGETMACRO, binary); + if(m==NULL) + HError(7000,"PutNMatBundle: Bundle macro not initialised"); + PutMacroHdr(hset, f, q, 'M', (NMatBundle *) m->structure, binary); + } + if (bundle->variables == NULL) + HError(7000, "PutNMatBundle: Bundle structure should have variables field initialised"); + nrows = (int) bundle->variables->rowNum; + ncols = (int) bundle->variables->colNum; + floatMat = CreateMatrix(&gstack, nrows, ncols); + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + PutSymbol(f, sym, binary); + /*batchIndex = (int) (*bundle->accptr); + WriteInt(f, &batchIndex, 1, binary);*/ + if (!binary) + fprintf(f, "\n"); + break; + default: + break; + } + switch (sym) { + /*case 'g': CopyNMatrix2Matrix(bundle->gradients, floatMat); break;*/ + case UPDATE: CopyNMatrix2Matrix(bundle->updates, floatMat); break; + case NEGLEARNRATE: CopyNMatrix2Matrix(bundle->neglearnrates, floatMat); break; + case SUMSQUAREDGRAD: CopyNMatrix2Matrix(bundle->sumsquaredgrad, floatMat); break; + default: CopyNMatrix2Matrix(bundle->variables, floatMat); + } + PutSymbol(f, MATRIX, binary); + WriteInt(f, &nrows, 1, binary); + WriteInt(f, &ncols, 1, binary); + if (!binary) + fprintf(f, "\n"); + WriteMatrix(f, floatMat, binary); + FreeMatrix(&gstack, floatMat); + } +} + +/* cz277 - ANN */ +static void PutLayerElem(HMMSet *hset, FILE *f, MLink q, LELink layerElem, Boolean inMacro, Boolean binary) +{ + int i; + char buf[MAXSTRLEN]; + + if (layerElem->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'L', layerElem, binary); + if (layerElem->nUse == 0 || inMacro) { + /* */ + PutSymbol(f, BEGINLAYER, binary); + if (!binary) + fprintf(f, "\n"); + /* */ + PutSymbol(f, LAYERKIND, binary); + if (!binary) + fprintf(f, " "); + WriteString(f, LayerKind2Str(layerElem->layerKind, buf), DBL_QUOTE); + if (!binary) + fprintf(f, "\n"); + /* */ + PutSymbol(f, INPUTFEATURE, binary); + if (!binary) + fprintf(f, "\n"); + PutFeaMix(hset, f, NULL, layerElem->feaMix, FALSE, binary); + /* nrows ncols */ + PutSymbol(f, WEIGHT, binary); + if (!binary) + fprintf(f, "\n"); + PutNMatBundle(hset, f, NULL, layerElem->wghtMat, WEIGHT, FALSE, binary); + /* size(nrows) */ + PutSymbol(f, BIAS, binary); + if (!binary) + fprintf(f, "\n"); + PutNVecBundle(hset, f, NULL, layerElem->biasVec, BIAS, FALSE, binary); + /* actfun */ + PutSymbol(f, ACTIVATION, binary); + if (!binary) + fprintf(f, " "); + WriteString(f, ActFunKind2Str(layerElem->actfunKind, buf), DBL_QUOTE); + if (!binary) + fprintf(f, "\n"); + if (layerElem->actfunVecs != NULL) { + /* (optional) */ + if (layerElem->actfunVecs[0] != NULL) { + PutSymbol(f, HYPERPARAMETER, binary); + PutNVecBundle(hset, f, NULL, layerElem->actfunVecs[0], HYPERPARAMETER, FALSE, binary); + } + /* num (optional) */ + if (layerElem->actfunParmNum > 1) { + PutSymbol(f, NUMPARAMETERS, binary); + WriteInt(f, &layerElem->actfunParmNum, 1, binary); + } + /* index (optional) */ + for (i = 1; i <= layerElem->actfunParmNum; ++i) { + PutSymbol(f, PARAMETER, binary); + WriteInt(f, &i, 1, binary); + if (!binary) + fprintf(f, "\n"); + PutNVecBundle(hset, f, NULL, layerElem->actfunVecs[i], PARAMETER, FALSE, binary); + } + } + /* */ + PutSymbol(f, ENDLAYER, binary); + if (!binary) + fprintf(f, "\n"); + } +} + +/* cz277 - ANN */ +static void PutANNTrainInfo(HMMSet *hset, FILE *f, Symbol sym, Boolean binary) +{ + int h; + MLink m; + + /* safety check */ + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + break; + default: + HError(7092, "PutANNTrainInfo: Unknown TrainInfo kind"); + } + + /*PutSymbol(f, sym, binary); + updtIdx = GetUpdateIndex(); + WriteInt(f, &updtIdx, 1, binary); + if (!binary) + fprintf(f, "\n");*/ + /* process each macro */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'V') + PutNVecBundle(hset, f, NULL, (NVecBundle *) m->structure, sym, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'M') + PutNMatBundle(hset, f, NULL, (NMatBundle *) m->structure, sym, TRUE, binary); + +} + +/* cz277 - ANN */ +/* needs to record the order of all ANN related MACROs in case of cross reference */ +static void PutANNDef(HMMSet *hset, FILE *f, MLink q, ADLink annDef, Boolean inMacro, Boolean binary) +{ + int i, intVal; + + if (annDef->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'N', annDef, binary); + + if (annDef->nUse == 0 || inMacro) { + /* */ + PutSymbol(f, BEGINANN, binary); + if (!binary) + fprintf(f, "\n"); + /* num */ + PutSymbol(f, NUMLAYERS, binary); + intVal = annDef->layerNum + 1; + WriteInt(f, &intVal, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* put each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + /* idx */ + intVal = i + 2; + PutSymbol(f, LAYER, binary); + WriteInt(f, &intVal, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* put layer details */ + PutLayerElem(hset, f, NULL, annDef->layerList[i], FALSE, binary); + } + /* */ + PutSymbol(f, ENDANN, binary); + if (!binary) + fprintf(f, "\n"); + } +} + +static void PutHybridTarget(HMMSet *hset, FILE *f, StreamElem *se, Boolean binary) +{ + /* ~N/~L name */ + PutSymbol(f, TARGETSOURCE, binary); + fprintf(f, " "); + if (se->targetSrc->nUse > 0) /* ~L */ + PutLayerElem(hset, f, NULL, se->targetSrc, FALSE, binary); + else + HError(7093, "PutHybridTarget: Hybrid target source incorrectly referenced"); + /* idx */ + PutSymbol(f, TARGETINDEX, binary); + WriteInt(f, &se->targetIdx, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* val (optional) */ + PutSymbol(f, TARGETPENALTY, binary); + WriteFloat(f, &se->targetPen, 1, binary); + if (!binary) + fprintf(f, "\n"); +} + /* PutStateInfo: output state info to stream f */ static void PutStateInfo(HMMSet *hset, FILE *f, MLink q, StateInfo *si, Boolean inMacro, Boolean binary) @@ -3084,6 +5872,9 @@ static void PutStateInfo(HMMSet *hset, FILE *f, MLink q, StateInfo *si, if (!binary) fprintf(f,"\n"); } switch (hset->hsKind) { + case HYBRIDHS: /* c277 - ANN */ + PutHybridTarget(hset, f, se, binary); + break; case TIEDHS: PutTiedMixtures(hset,f,s,se,binary); break; @@ -3221,17 +6012,18 @@ static void PutAdaptXForm(HMMSet *hset, FILE *f, MLink q, AdaptXForm *xform, if (HardAssign(xform)) { WriteInt(f,&(xform->xformWgts.assign[i]),1,binary); } else - HError(999,"Not currently supported"); + HError(7001,"Not currently supported"); fprintf(f,"\n"); } } } /* PutOptions: write the current global options to f */ -static void PutOptions(HMMSet *hset, FILE *f, Boolean binary) +static void PutOptions(HMMSet *hset, FILE *f, Boolean binary) { short i,S; char buf[64]; + int intTmp; if (hset->hmmSetId!=NULL) { PutSymbol(f,HMMSETID,binary); @@ -3264,6 +6056,22 @@ static void PutOptions(HMMSet *hset, FILE *f, Boolean binary) fprintf(f,"~a %s",ReWriteString(hset->semiTied->xformName,NULL,DBL_QUOTE)); if (!binary) fprintf(f,"\n"); } + + /* cz277 - semi */ + if (hset->annSet != NULL && hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS) { + PutSymbol(f, HMMFEATURESOURCE, binary); + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->swidth[0] != 1) { + PutSymbol(f, STREAM, binary); + intTmp = i; + WriteInt(f, &intTmp, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + PutFeaMix(hset, f, NULL, hset->feaMix[i], FALSE, binary); + } + } + } /* PutHMMDef: Save the model hmm to given stream in either text or binary */ @@ -3323,7 +6131,7 @@ static unsigned Hash(char *name) /* EXPORT-> NewMacro: append a macro with given values to list */ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) { - unsigned int hashval; + unsigned long int hashval; MLink m; PtrMap *p; @@ -3357,6 +6165,14 @@ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) return m; } break; + case 'F': + case 'L': + case 'M': + case 'N': + case 'V': + if (m->structure != structure) + HError(7036, "NewMacro: different structures assigned to macro ~%c \"%s\"", m->type, m->id->name); + return m; case 'r': if (!(strcmp(((RegTree *)m->structure)->fname,((RegTree *)structure)->fname))) { HRError(7036,"Duplicate copy of ~r macro %s loaded from %s",id->name,((RegTree *)m->structure)->fname); @@ -3372,9 +6188,8 @@ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) m = (MLink)New(hset->hmem,sizeof(MacroDef)); if (type == 'h') ++hset->numPhyHMM; - else if (type == 'l'){ + else if (type == 'l') ++hset->numLogHMM; - } else ++hset->numMacros; hashval = Hash(id->name); @@ -3383,7 +6198,7 @@ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) m->structure = structure; m->next = hset->mtab[hashval]; hset->mtab[hashval] = m; if (hset->pmap != NULL) { - hashval = (unsigned int)m->structure % PTRHASHSIZE; + hashval = (unsigned long int)m->structure % PTRHASHSIZE; p = (PtrMap *)New(hset->hmem,sizeof(PtrMap)); p->ptr = m->structure; p->m = m; p->next = hset->pmap[hashval]; hset->pmap[hashval] = p; @@ -3396,9 +6211,8 @@ void DeleteMacro(HMMSet *hset, MLink p) { if (p->type == 'h') --hset->numPhyHMM; - else if (p->type == 'l'){ + else if (p->type == 'l') --hset->numLogHMM; - } else --hset->numMacros; p->type = '*'; @@ -3409,7 +6223,6 @@ void DeleteMacroStruct(HMMSet *hset, char type, Ptr structure) { MLink p; - p = FindMacroStruct(hset,type,structure); if (p==NULL) HError(7035,"DeleteMacroStruct: attempt to delete unknown macro"); @@ -3421,16 +6234,18 @@ void DeleteMacroStruct(HMMSet *hset, char type, Ptr structure) /* EXPORT->FindMacroName: find macro def based on given id */ MLink FindMacroName(HMMSet *hset, char type, LabId id) { - unsigned int hashval; - MLink m; + unsigned int hashval; + MLink m; - if (id == NULL) return NULL; - hashval = Hash(id->name); - m = hset->mtab[hashval]; - while (m != NULL && !(m->id == id && m->type == type)) - m = m->next; - return m; + if (id == NULL) + return NULL; + hashval = Hash(id->name); + m = hset->mtab[hashval]; + while (m != NULL && !(m->id == id && m->type == type)) { + m = m->next; + } + return m; } /* EXPORT->FindMacroStruct: return macro for given structure */ @@ -3438,7 +6253,7 @@ MLink FindMacroStruct(HMMSet *hset, char type, Ptr structure) { MLink m; int h,n; - unsigned int i; + unsigned long int i; PtrMap *p; @@ -3447,7 +6262,7 @@ MLink FindMacroStruct(HMMSet *hset, char type, Ptr structure) if (trace&T_PMP) printf("HModel: creating pointer map hash table\n"); for (n=0,h=0; hmtab[h]; m!=NULL; m=m->next){ - i = (unsigned int)m->structure % PTRHASHSIZE; + i = (unsigned long int)m->structure % PTRHASHSIZE; p = (PtrMap *)New(hset->hmem,sizeof(PtrMap)); p->ptr = m->structure; p->m = m; p->next = hset->pmap[i]; hset->pmap[i] = p; @@ -3455,7 +6270,7 @@ MLink FindMacroStruct(HMMSet *hset, char type, Ptr structure) } if (trace&T_PMP) printf("HModel: %d pointers hashed\n",n); } - i = (unsigned int)structure % PTRHASHSIZE; + i = (unsigned long int)structure % PTRHASHSIZE; for (p = hset->pmap[i]; p != NULL; p = p->next) { m = p->m; if (p->ptr == structure && m->type == type) @@ -3512,7 +6327,7 @@ void SetSemiTiedVFloor(HMMSet *hset) void SetVFloor(HMMSet *hset, Vector *vFloor, float minVar) { int j,s,S,size; - char mac[256], num[10]; + char mac[MAXSTRLEN], num[10]; LabId id; MLink m; SVector v; @@ -3710,6 +6525,18 @@ void PrintHSetProfile(FILE *f, HMMSet *hset) fprintf(f,"\n"); fprintf(f," Macros = %d; Logical HMMs = %d; Physical HMMs = %d\n", hset->numMacros,hset->numLogHMM,hset->numPhyHMM); + + /* cz277 - ANN */ + if (hset->annSet != NULL) { + if (hset->hsKind == HYBRIDHS) { + printf("Hybrid ANN set: "); + } + else { + printf("Tandem ANN set: "); + } + ShowANNSet(hset); + } + if (HasMacros(hset,buf)) fprintf(f," Macro types: %s\n",buf); S = hset->swidth[0]; @@ -3742,166 +6569,255 @@ void PrintHSetProfile(FILE *f, HMMSet *hset) /* LoadAllMacros: loads macros from MMF file fname */ static ReturnStatus LoadAllMacros(HMMSet *hset, char *fname, short fidx) { - Source src; - Token tok; - Ptr structure; - MLink m; - char type,buf[MAXSTRLEN]; - LabId id; - HLink dhmm; - HMMSet dset; - int nState=0; + Source src; + Token tok; + Ptr structure; + MLink m; + char type, buf[MAXSTRLEN]; + LabId id=NULL; + HLink dhmm; + HMMSet dset; + int nState = 0, maxCnt; + /* cz277 - ANN */ + AILink annInfo; + + if (trace & T_MAC) + printf("HModel: getting Macros from %s\n", fname); + if (InitScanner(fname, &src, &tok, HMMDefFilter) < SUCCESS) { /* cz277 - 64bit */ + HRError(7010,"LoadAllMacros: Can't open file"); + return (FAIL); + } - if (trace&T_MAC) - printf("HModel: getting Macros from %s\n",fname); - if(InitScanner(fname,&src,&tok,hset)name,fname); - return(FAIL); - } - dset=*hset; - dset.hmem=&gstack; - dhmm = (HLink) New(&gstack,sizeof(HMMDef)); - dhmm->owner=NULL; dhmm->numStates=0; dhmm->nUse=0; dhmm->hook=NULL; - if (trace&T_MAC) - printf("HModel: skipping HMM Def from macro %s\n",id->name); - if(GetToken(&src,&tok)id->name); - if (GetToken(&src,&tok)structure,nState)fidx = fidx; - } - } else { /* load a shared structure */ - /* input transforms are store prior to the options !! */ - if ((type != 'j') && (CheckOptions(hset)xformName = CopyString(hset->hmem,id->name); - break; - case 'r': - structure = GetRegTree(hset,&src,&tok);break; - case 'b': - structure = GetBaseClass(hset,&src,&tok); break; - case 'f': structure = GetLinXForm(hset,&src,&tok); break; - case 'g': structure = GetXFormSet(hset,&src,&tok); break; - case 'x': structure = GetTransform(hset,&src,&tok); break; - case 'y': structure = GetBias(hset,&src,&tok); break; - /* code for input transform support */ - case 'j': - structure = GetInputXForm(hset,&src,&tok); - ((InputXForm *)structure)->xformName = CopyString(hset->hmem,id->name); - break; - default : - TermScanner(&src); - HRError(7037,"LoadAllMacros: bad macro type in MMF %s",fname); - return(FAIL); - } - if(structure==NULL){ - TermScanner(&src); - HRError(7035,"LoadAllMacros: Get macro data failed in MMF %s",fname); - return(FAIL); + /* cz277 - xform */ + if (type != 'M' && type != 'V') + id = GetLabId(buf, TRUE); + if (type == 'h') { /* load a HMM definition */ + m = FindMacroName(hset, 'h', id); + if (m == NULL) { + if (!allowOthers) { + TermScanner(&src); + HRError(7030, "LoadAllMacros: phys HMM %s unexpected in %s", id->name, fname); + return(FAIL); + } + dset = *hset; + dset.hmem = &gstack; + dhmm = (HLink) New(&gstack, sizeof(HMMDef)); + dhmm->owner = NULL; + dhmm->numStates = 0; + dhmm->nUse = 0; + dhmm->hook = NULL; + if (trace & T_MAC) + printf("HModel: skipping HMM Def from macro %s\n", id->name); + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + Dispose(&gstack, dhmm); + HMError(&src,"LoadAllMacros: GetToken failed"); + return (FAIL); + } + if (GetHMMDef(&dset, &src, &tok, dhmm, nState) < SUCCESS) { + TermScanner(&src); + Dispose(&gstack, dhmm); + HMError(&src, "LoadAllMacros: GetHMMDef failed"); + return (FAIL); + } + Dispose(&gstack, dhmm); + } + else { + if (trace & T_MAC) + printf("HModel: getting HMM Def from macro %s\n", m->id->name); + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: GetToken failed"); + return (FAIL); + } + if (GetHMMDef(hset, &src, &tok, (HLink)m->structure, nState) < SUCCESS) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: GetHMMDef failed"); + return (FAIL); + } + m->fidx = fidx; + } + } /* if (type == 'h') */ + else { /* load a shared structure */ + /* input transforms are store prior to the options !! */ + if ((type != 'j') && (CheckOptions(hset) < SUCCESS)) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: CheckOptions failed"); + return (FAIL); + } + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: GetToken failed"); + return (FAIL); + } + switch (type) { + case 's': structure = GetStateInfo(hset, &src, &tok); break; + case 'm': structure = GetMixPDF(hset, &src, &tok); break; + case 'u': structure = GetMean(hset, &src, &tok); break; + case 'v': structure = GetVariance(hset, &src, &tok); break; + case 'i': structure = GetCovar(hset, &src, &tok); break; + case 'c': structure = GetCovar(hset, &src, &tok); break; + case 'w': structure = GetSWeights(hset, &src, &tok); break; + case 't': structure = GetTransMat(hset, &src, &tok); break; + case 'd': structure = GetDuration(hset, &src, &tok); break; + /* code for transform support */ + case 'a': + structure = GetAdaptXForm(hset, &src, &tok); + ((AdaptXForm *)structure)->xformName = CopyString(hset->hmem, id->name); + break; + case 'r': structure = GetRegTree(hset, &src, &tok); break; + case 'b': structure = GetBaseClass(hset, &src, &tok); break; + case 'f': structure = GetLinXForm(hset, &src, &tok); break; + case 'g': structure = GetXFormSet(hset, &src, &tok); break; + case 'x': structure = GetTransform(hset, &src, &tok); break; + case 'y': structure = GetBias(hset, &src, &tok); break; + /* code for input transform support */ + case 'j': + structure = GetInputXForm(hset, &src, &tok); + ((InputXForm *)structure)->xformName = CopyString(hset->hmem, id->name); + break; + /* cz277 - ANN */ + case 'M': + structure = GetNMatBundle(hset, &src, &tok, buf); + id = ((NMatBundle *) structure)->id; + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->MTypeMacroNum) + hset->MTypeMacroNum = maxCnt; + break; + case 'V': + structure = GetNVecBundle(hset, &src, &tok, buf); + id = ((NVecBundle *) structure)->id; + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->VTypeMacroNum) + hset->VTypeMacroNum = maxCnt; + break; + case 'F': structure = GetFeaMix(hset, &src, &tok); + if(id==NULL){ + HMError(&src, "LoadAllMacros: label not initialised"); + return (FAIL); + } + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->FTypeMacroNum) + hset->FTypeMacroNum = maxCnt; + break; + case 'L': structure = GetLayerElem(hset, &src, &tok); + if(id==NULL){ + HMError(&src, "LoadAllMacros: label not initialised"); + return (FAIL); + } + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->LTypeMacroNum) + hset->LTypeMacroNum = maxCnt; + break; + case 'N': + /*if (hset->annSet == NULL) + InitANNSet(hset);*/ + structure = GetANNDef(hset, &src, &tok); + if(id==NULL){ + HMError(&src, "LoadAllMacros: label not initialised"); + return (FAIL); + } + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->NTypeMacroNum) + hset->NTypeMacroNum = maxCnt; + /* insert it to the end of the bi-direct chain in ANNSet */ + annInfo = (AILink) New(hset->hmem, sizeof(ANNInfo)); + /* store current ANNDef */ + annInfo->annDef = (ADLink) structure; + annInfo->index = hset->annSet->annNum; + annInfo->fidx = fidx; + /* put it at the end of the chain */ + if (hset->annSet->defsHead == NULL) { /* empy chain */ + hset->annSet->defsHead = annInfo; + hset->annSet->defsTail = annInfo; + annInfo->next = NULL; + annInfo->prev = NULL; + } + else { /* otherwise */ + hset->annSet->defsTail->next = annInfo; + annInfo->next = NULL; + annInfo->prev = hset->annSet->defsTail; + hset->annSet->defsTail = annInfo; + } + /* increase ANNDef count */ + ++hset->annSet->annNum; + break; + default : + TermScanner(&src); + HRError(7037, "LoadAllMacros: bad macro type in MMF %s", fname); + return (FAIL); + } + if(structure == NULL) { + TermScanner(&src); + HRError(7035, "LoadAllMacros: Get macro data failed in MMF %s", fname); + return (FAIL); + } + NewMacro(hset, fidx, type, id, structure); + if (trace & T_MAC) + printf("HModel: storing macro ~%c %s -> %p\n", type, id->name, structure); } - NewMacro(hset,fidx,type,id,structure); - if (trace&T_MAC) - printf("HModel: storing macro ~%c %s -> %p\n",type,id->name,structure); - } - } - } - TermScanner(&src); - return(SUCCESS); + } + } + TermScanner(&src); + + return (SUCCESS); +} + +/* cz277 - 150824 */ +/* CheckANNMacros: check the ANN macros and removed the useless ones */ +static void FixANNMacros(HMMSet *hset) { + int h; + MLink m; + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'M' && ((NMatBundle *) m->structure)->variables == NULL) + DeleteMacro(hset, m); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'V' && ((NVecBundle *) m->structure)->variables == NULL) + DeleteMacro(hset, m); } /* LoadMacroFiles: scan file list of hset and load any macro files */ static ReturnStatus LoadMacroFiles(HMMSet *hset) { - MILink mmf; - int i=0; - ReturnStatus result=SUCCESS; + MILink mmf; + int i = 0; + ReturnStatus result = SUCCESS; - for (mmf=hset->mmfNames; mmf!=NULL; mmf=mmf->next) - if (!mmf->isLoaded){ - if(LoadAllMacros(hset,mmf->fName,++i)isLoaded = TRUE; - } - return result; + for (mmf = hset->mmfNames; mmf!=NULL; mmf = mmf->next) { + if (!mmf->isLoaded) { + if (LoadAllMacros(hset, mmf->fName, ++i) < SUCCESS) + result = FAIL; + mmf->isLoaded = TRUE; + } + } + /* cz277 - 150824 */ + FixANNMacros(hset); + + return result; } /* IsShared: decide if given HMM set is SHAREDHS. Note that shared means, @@ -3918,35 +6834,845 @@ static Boolean IsShared(HMMSet *hset) return FALSE; } -/* ConcatFN: make up file name */ -static char *ConcatFN(char *path, char *base, char *ext, char *fname) -{ - char *s; +/* ConcatFN: make up file name */ +static char *ConcatFN(char *path, char *base, char *ext, char *fname) +{ + char *s; + + fname[0] = '\0'; + if (path!=NULL && *path!='\0') { + if ((s=strrchr(path,PATHCHAR))!=NULL && *(s+1)=='\0') + strcat(fname,path); + else + sprintf(fname,"%s%c",path,PATHCHAR); + } + strcat(fname,base); + if (ext!=NULL && *ext!='\0') { + strcat(fname,"."); + strcat(fname,ext); + } + return fname; +} + +/* cz277 - semi */ +static void SetPostdefFeaSrc(HMMSet *hset, FELink feaElem) { + LabId id; + MLink m; + + /* safety check */ + if (!(feaElem->inputKind == ANNFEAIK && feaElem->feaSrc == NULL)) + HError(7093, "SetPostdefFeaSrc: Function is only applicable to post defined ANNFEAIK"); + /* look for the feature element source macro */ + id = GetLabId(feaElem->mName, FALSE); + if (id == NULL) + HError(7037, "SetPostdefFeaSrc: undef macro name %s, type %c", feaElem->mName, feaElem->mType); + m = FindMacroName(hset, feaElem->mType, id); + if (m == NULL) + HError(7037, "SetPostdefFeaSrc: no macro %s, type %c exists", feaElem->mName, feaElem->mType); + /* set the feature element source macro */ + if (feaElem->mType == 'L') + feaElem->feaSrc = (LELink) m->structure; + else + HError(7037, "SetPostdefFeaSrc: Unsupported feature element source macro type %c", feaElem->mType); + /* cz277 - split2 */ + feaElem->srcDim = feaElem->feaSrc->nodeNum; + if (!(feaElem->feaDim > 0 && feaElem->feaDim <= feaElem->srcDim)) + HError(7075, "SetPostdefFeaSrc: Illegal feature element dimensions"); + + /* set nDrv */ + /*++feaElem->feaSrc->nUse;*/ + /* cz277 - semi */ + if (feaElem->doBackProp == TRUE) + ++feaElem->feaSrc->nDrv; +} + +/* cz277 - semi */ +static void FindPostdefFeaSrc(HMMSet *hset) { + int i, j; + AILink curAI; + ADLink curAD; + FELink feaElem; + + /* check model set type */ + if (hset->annSet == NULL || (hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS)) + return; + /* search for post defined ANN feaMix sources and set them properly */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + if (curAD->layerList[i]->feaMix != NULL) { + for (j = 0; j < curAD->layerList[i]->feaMix->elemNum; ++j) { + feaElem = curAD->layerList[i]->feaMix->feaList[j]; + if (feaElem->inputKind == ANNFEAIK && feaElem->feaSrc == NULL) + SetPostdefFeaSrc(hset, feaElem); + } + } + } + curAI = curAI->next; + } + /* search for post defined feaMix sources in HMMFEATURESOURCE ~o macro */ + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->feaMix[i] != NULL) { + for (j = 0; j < hset->feaMix[i]->elemNum; ++j) { + feaElem = hset->feaMix[i]->feaList[j]; + if (feaElem->inputKind == ANNFEAIK && feaElem->feaSrc == NULL) + SetPostdefFeaSrc(hset, feaElem); + } + } + } +} + + +/* cz277 - split2: TODO: to check srcDim, dimOff, feaDim */ +/* cz277 - ANN */ +/* check the dimensions and set the implicit feature source */ +void CheckANNConsistency(HMMSet *hset) { + int i, j; + AILink curAI; + ADLink curAD; + FeaMix *feaMix; + + /* check model set type */ + if (hset->annSet == NULL || (hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS)) { + return; + } + /* check the dimensions and set the feature source */ + curAI = hset->annSet->defsHead; + for (i = 0; i < hset->annSet->annNum; ++i) { + if (curAI == NULL || curAI->index != i) + HError(7095, "CheckANNConsistency: Missing ANNInfo"); + /* get current ANNDef */ + curAD = curAI->annDef; + /* check layer by layer */ + for (j = 0; j < curAD->layerNum; ++j) { + /*curAD->nUse += curAD->layerList[j]->nUse;*/ + if (curAD->layerList[j]->nUse > 0) + curAD->nUse |= 1; + /* cz277 - 1007 */ + /* set FeaMix if needed */ + if (curAD->layerList[j]->feaMix == NULL) { + HError(-7076, "CheckANNConsistency: Implicit feature mixture involed"); + if (j == 0) + feaMix = GetDefaultInpFeaMix(hset, 1); + else + feaMix = GetDefaultANNFeaMix(hset, curAD->layerList[j - 1]); + /* set owner */ + feaMix->ownerList[feaMix->ownerNum++] = curAD->layerList[j]; + curAD->layerList[j]->feaMix = feaMix; + ++curAD->layerList[j]->feaMix->nUse; + } + /* check FeaElem source */ + /*if (j > 0) { + for (k = 0; k < curAD->layerList[j]->feaMix->feaNum; ++k) { + if (curAD->layerList[j]->feaMix->feaList[k]->feaSrc == curAD->layerList[j - 1]) { + break; + } + } + if (k == curAD->layerList[j]->feaMix->feaNum) { + HError(9999, "CheckANNConsistency: At least one FeaElem should come from previous LayerElem"); + } + }*/ + /* cz277 - 1007 */ + /* TODO: need to detect cycles */ + /* check the dimensions */ + if (curAD->layerList[j]->feaMix->mixDim != curAD->layerList[j]->inputDim) { + HError(7072, "CheckANNConsistency: Input FeaMix dim %d does not match the input dim %d of the LayerElem", curAD->layerList[j]->feaMix->mixDim, curAD->layerList[j]->inputDim); + } + } + /* fetch the next ANNInfo */ + curAI = curAI->next; + } +} + +/* cz277 - many, need to use after SetDrvCtx */ +/* initialise the xFeaBat and yFeaBat in each LayerElem */ +void InitXYBatch(HMMSet *hset) { + int i, j, k, l, n; + AILink curAI; + ADLink curAD; + LELink layerElem, srcElem; + FELink feaElem; + + /* 1. the first pass, initialise yFeaMats */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + layerElem->yFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + layerElem->yFeaMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->nodeNum); + } + } + curAI = curAI->next; + } + /* 2. the second pass, initialise feaElem->feaMats & feaMix->mixMats */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + /* set ANNFEAIK feaMat (INPFEAIK has been set); yFeaMat for the previous layers have been set */ + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + if (feaElem->feaMats == NULL) { /* incase of shared feaElem (INP & AUG) */ + n = IntVecSize(feaElem->ctxPool); + if (feaElem->inputKind == ANNFEAIK) { + /*feaElem->feaMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + feaElem->feaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + srcElem = feaElem->feaSrc; + for (k = 1, l = 1; k <= n; ++k) { /* both sorted && ctxPool in drvCtx */ + while (feaElem->ctxPool[k] != srcElem->drvCtx[l]) + ++l; + feaElem->feaMats[k] = srcElem->yFeaMats[l]; + ++feaElem->feaMats[k]->nUse; + } + } + else if (feaElem->inputKind == INPFEAIK) { + /*feaElem->feaMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + feaElem->feaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (k = 1; k <= n; ++k) + feaElem->feaMats[k] = CreateNMatrix(hset->hmem, GetNBatchSamples(), feaElem->extDim); + } + else if (feaElem->inputKind == AUGFEAIK) { + /*feaElem->feaMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * 2);*/ + + feaElem->feaMats[1] = CreateNMatrix(hset->hmem, GetNBatchSamples(), feaElem->extDim); + } + } + } + /* init mixMats */ + if (layerElem->feaMix->mixMats == NULL) { /* incase of shared feaMix */ + n = IntVecSize(layerElem->feaMix->ctxPool); + if (layerElem->feaMix->elemNum == 1) { + feaElem = layerElem->feaMix->feaList[0]; + if (feaElem->inputKind == ANNFEAIK && IntVecSize(feaElem->ctxMap) == 1) { + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + /*for (j = 1, k = 1; j <= n; ++j) { + while (layerElem->feaMix->ctxPool[j] != (feaElem->ctxPool[k] - feaElem->ctxMap[1])) + ++k; + layerElem->feaMix->mixMats[j] = feaElem->feaMats[k]; + ++layerElem->feaMix->mixMats[j]->nUse; + }*/ + for (j = 1; j <= n; ++j) { + layerElem->feaMix->mixMats[j] = feaElem->feaMats[j]; + ++layerElem->feaMix->mixMats[j]->nUse; + } + } + else if (feaElem->inputKind == INPFEAIK) { + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1, k = 1; j <= n; ++j) { + while (layerElem->feaMix->ctxPool[j] != feaElem->ctxPool[k]) + ++k; + layerElem->feaMix->mixMats[j] = feaElem->feaMats[k]; + ++layerElem->feaMix->mixMats[j]->nUse; + } + } + else if (feaElem->inputKind == AUGFEAIK) { + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + layerElem->feaMix->mixMats[j] = feaElem->feaMats[1]; + ++layerElem->feaMix->mixMats[j]->nUse; + } + } + } + if (layerElem->feaMix->mixMats == NULL) { /* cannot shared, need to allocate new space */ + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) + layerElem->feaMix->mixMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->feaMix->mixDim); + } + } + } + curAI = curAI->next; + } + /* 3. the third pass, set xFeaMats */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + layerElem->xFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1, k = 1; j <= n; ++j) { + while (layerElem->drvCtx[j] != layerElem->feaMix->ctxPool[k]) + ++k; + layerElem->xFeaMats[j] = layerElem->feaMix->mixMats[k]; + ++layerElem->xFeaMats[j]->nUse; + } + } + curAI = curAI->next; + } +} + +/* cz277 - many */ +static int FindANNCycleDFS(LELink layerElem) { + int i, cycCnt = 0; + LELink srcElem; + FELink feaElem; + + if (layerElem->status == -1) { + HError(-1, "FindANNCycleDFS: Cycle found, need BPTT"); + return 1; + } + if (layerElem->status == 1) { + return 0; + } + layerElem->status = -1; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) { + feaElem = layerElem->feaMix->feaList[i]; + if (feaElem->inputKind == ANNFEAIK) { + srcElem = feaElem->feaSrc; + cycCnt += FindANNCycleDFS(srcElem); + } + } + layerElem->status = 1; + return cycCnt; +} + +/* cz277 - many */ +void FindANNCycles(HMMSet *hset) { + int i, cycCnt = 0; + AILink curAI; + ADLink curAD; + LELink layerElem=NULL; + + /* first, reset all status */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + layerElem->status = 0; + } + curAI = curAI->next; + } + /* DFS based cycle detection */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + cycCnt += FindANNCycleDFS(layerElem); + } + curAI = curAI->next; + } + /* post processing */ + if (cycCnt > 0) + HError(7001, "FindANNCycles: %d cycles were detected, function not supported by V3.5", cycCnt); + /* reset status */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + layerElem->status = 0; + } + curAI = curAI->next; + } +} + +/* cz277 - many */ +static IntVec MergeSortedContext(MemHeap *x, IntVec lhCtx, IntVec rhCtx) { + int n, lidx = 1, ridx = 1, llen = IntVecSize(lhCtx), rlen = IntVecSize(rhCtx); + IntVec resVec; + + /* get the merged length */ + n = 0; + while (lidx <= llen && ridx <= rlen) { + if (lhCtx[lidx] < rhCtx[ridx]) { + ++n; + ++lidx; + } + else if (lhCtx[lidx] > rhCtx[ridx]) { + ++n; + ++ridx; + } + else { + ++n; + ++lidx; + ++ridx; + } + } + if (lidx <= llen) + n += llen - lidx + 1; + else if (ridx <= rlen) + n += rlen - ridx + 1; + /* merge the vectors */ + /*resVec = CreateIntVec(&gcheap, n);*/ + resVec = CreateIntVec(x, n); + n = 1; + lidx = 1; + ridx = 1; + while (lidx <= llen && ridx <= rlen) { + if (lhCtx[lidx] < rhCtx[ridx]) + resVec[n++] = lhCtx[lidx++]; + else if (lhCtx[lidx] > rhCtx[ridx]) + resVec[n++] = rhCtx[ridx++]; + else { + resVec[n++] = lhCtx[lidx++]; + ++ridx; + } + } + while (lidx <= llen) + resVec[n++] = lhCtx[lidx++]; + while (ridx <= rlen) + resVec[n++] = rhCtx[ridx++]; + + return resVec; +} + +/* cz277 - many */ +static IntVec ShiftIntVec(IntVec orgVec, int shift) { + int i, n; + IntVec shiftVec; + + n = IntVecSize(orgVec); + shiftVec = CreateIntVec(&gcheap, n); + for (i = 1; i <= n; ++i) { + shiftVec[i] = orgVec[i] + shift; + } + return shiftVec; +} + +/* cz277 - many */ +void ResetDrvContext(HMMSet *hset) { + int i, j; + LELink layerElem; + AILink curAI; + ADLink curAD; + FELink feaElem; + + curAI = hset->annSet->defsTail; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = curAD->layerNum - 1; i >= 0; --i) { + layerElem = curAD->layerList[i]; + if (layerElem->drvCtx != NULL) { + Dispose(&gcheap, layerElem->drvCtx); + layerElem->drvCtx = NULL; + layerElem->feaMix->mixMats = NULL; + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + feaElem->feaMats = NULL; + } + } + } + curAI = curAI->prev; + } +} + +/* cz277 - many */ +/* should change to DFS? need to deal with the cycle properly */ +void SetDrvContext(HMMSet *hset) { + int i, j, k; + AILink curAI; + ADLink curAD; + LELink layerElem, srcElem; + IntVec resVec, shiftVec; + FELink feaElem; + + /* set drvCtx */ + curAI = hset->annSet->defsTail; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = curAD->layerNum - 1; i >= 0; --i) { + layerElem = curAD->layerList[i]; + if (layerElem->drvCtx == NULL) { + layerElem->drvCtx = CreateIntVec(&gcheap, 1); + layerElem->drvCtx[1] = 0; + } + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + for (k = 1; k <= IntVecSize(layerElem->drvCtx); ++k) { + shiftVec = ShiftIntVec(feaElem->ctxMap, layerElem->drvCtx[k]); + if (feaElem->inputKind == ANNFEAIK) { + srcElem = feaElem->feaSrc; + if (srcElem->drvCtx == NULL) { + /*srcElem->drvCtx = CreateIntVec(&gcheap, IntVecSize(shiftVec)); + CopyIntVec(shiftVec, srcElem->drvCtx);*/ + srcElem->drvCtx = shiftVec; + } + else { + resVec = MergeSortedContext(hset->hmem, srcElem->drvCtx, shiftVec); + /*Dispose(&gcheap, srcElem->drvCtx);*/ + srcElem->drvCtx = resVec; + } + } + } + } + } + curAI = curAI->prev; + } + /* set ctxPool (for feaMix & feaElem) */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + /* for feaMix */ + if (layerElem->feaMix->ctxPool == NULL) { + layerElem->feaMix->ctxPool = CreateIntVec(&gcheap, IntVecSize(layerElem->drvCtx)); + CopyIntVec(layerElem->drvCtx, layerElem->feaMix->ctxPool); + } + else { /* for feaMix shared by multiple layers */ + /*resVec = MergeSortedContext(layerElem->drvCtx, layerElem->feaMix->ctxPool);*/ + resVec = MergeSortedContext(hset->hmem, layerElem->drvCtx, layerElem->feaMix->ctxPool); + /*Dispose(&gcheap, layerElem->feaMix->ctxPool);*/ + layerElem->feaMix->ctxPool = resVec; + } + /* for feaElem */ + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + if (feaElem->inputKind == INPFEAIK) { + if (feaElem->ctxPool == NULL) { + /*feaElem->ctxPool = CreateIntVec(&gcheap, IntVecSize(layerElem->drvCtx));*/ + feaElem->ctxPool = CreateIntVec(hset->hmem, IntVecSize(layerElem->drvCtx)); + CopyIntVec(layerElem->drvCtx, feaElem->ctxPool); + } + else { + /*resVec = MergeSortedContext(layerElem->drvCtx, feaElem->ctxPool);*/ + resVec = MergeSortedContext(hset->hmem, layerElem->drvCtx, feaElem->ctxPool); + /*Dispose(&gcheap, feaElem->ctxPool);*/ + feaElem->ctxPool = resVec; + } + } + else if (feaElem->inputKind == AUGFEAIK) { + if (feaElem->ctxPool == NULL) { + /*feaElem->ctxPool = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxPool = CreateIntVec(hset->hmem, 1); + feaElem->ctxPool[1] = 0; + } + } + else if (feaElem->inputKind == ANNFEAIK) { + for (k = 1; k <= IntVecSize(layerElem->drvCtx); ++k) { + shiftVec = ShiftIntVec(feaElem->ctxMap, layerElem->drvCtx[k]); + if (feaElem->ctxPool == NULL) { + feaElem->ctxPool = shiftVec; + } + else { + /*resVec = MergeSortedContext(feaElem->ctxPool, shiftVec);*/ + resVec = MergeSortedContext(hset->hmem, feaElem->ctxPool, shiftVec); + /*Dispose(&gcheap, feaElem->ctxPool);*/ + feaElem->ctxPool = resVec; + } + } + } + } + } + curAI = curAI->next; + } +} + +/* cz277 - many */ +void ShowANNStructDetails(HMMSet *hset) { + int i, j, k; + AILink curAI; + ADLink curAD; + LELink layerElem; + FeaMix *feaMix, *errMix; + FELink errElem, feaElem; + + printf("FORWARD:\n"); + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + printf("Layer i = %d, layerElem = %p, inputDim = %d, nodeNum = %d\n", i, layerElem, layerElem->inputDim, layerElem->nodeNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, xFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->xFeaMats[j], layerElem->xFeaMats[j]->rowNum, layerElem->xFeaMats[j]->colNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, yFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->yFeaMats[j], layerElem->yFeaMats[j]->rowNum, layerElem->yFeaMats[j]->colNum); + feaMix = layerElem->feaMix; + printf("\tFeaMix = %p, elemNum = %d, mixDim = %d\n", feaMix, feaMix->elemNum, feaMix->mixDim); + for (j = 1; j <= IntVecSize(feaMix->ctxPool); ++j) { + printf("\tj = %d, feaMix->ctxPool[j] = %d, mixMat = %p, rowNum = %lu, colNum = %lu\n", j, feaMix->ctxPool[j], feaMix->mixMats[j], feaMix->mixMats[j]->rowNum, feaMix->mixMats[j]->colNum); + } + printf("\n"); + for (j = 0; j < feaMix->elemNum; ++j) { + feaElem = feaMix->feaList[j]; + printf("\t\tj = %d, inputKind = %d, INPFEAIK = %d, AUGFEAIK = %d, ANNFEAIK = %d\n", j, feaElem->inputKind, INPFEAIK, AUGFEAIK, ANNFEAIK); + printf("\t\tj = %d, srcDim = %d, dimOff = %d, feaDim = %d, extDim = %d\n", j, feaElem->srcDim, feaElem->dimOff, feaElem->feaDim, feaElem->extDim); + printf("\t\tCTXMAP:\n"); + printf("\t\t"); + for (k = 1; k <= IntVecSize(feaElem->ctxMap); ++k) + printf(" %d", feaElem->ctxMap[k]); + printf("\n"); + for (k = 1; k <= IntVecSize(feaElem->ctxPool); ++k) { + printf("\t\tk = %d, ctxPool[k] = %d, feaMats[k] = %p\n", k, feaElem->ctxPool[k], feaElem->feaMats[k]); + } + printf("\n"); + } + } + curAI = curAI->next; + } + printf("\n"); + + printf("BACKWARD:\n"); + curAI = hset->annSet->defsTail; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = curAD->layerNum - 1; i >= 0; --i) { + layerElem = curAD->layerList[i]; + printf("Layer i = %d, layerElem = %p, inputDim = %d, nodeNum = %d\n", i, layerElem, layerElem->inputDim, layerElem->nodeNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, dxFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->trainInfo->dxFeaMats[j], layerElem->xFeaMats[j]->rowNum, layerElem->xFeaMats[j]->colNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, dyFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->trainInfo->dyFeaMats[j], layerElem->yFeaMats[j]->rowNum, layerElem->yFeaMats[j]->colNum); + errMix = layerElem->errMix; + if (errMix != NULL) { + printf("\tErrMix = %p, elemNum = %d, mixDim = %d\n", errMix, errMix->elemNum, errMix->mixDim); + for (j = 1; j <= IntVecSize(errMix->ctxPool); ++j) { + printf("\tj = %d, errMix->ctxPool[j] = %d, mixMat[j] = %p\n", j, errMix->ctxPool[j], errMix->mixMats[j]); + } + for (j = 0; j < errMix->elemNum; ++j) { + errElem = errMix->feaList[j]; + printf("\t\tj = %d, srcDim = %d, dimOff = %d, feaDim = %d, extDim = %d\n", j, errElem->srcDim, errElem->dimOff, errElem->feaDim, errElem->extDim); + printf("\t\tCTXMAP:\n"); + printf("\t\t"); + for (k = 1; k <= IntVecSize(errElem->ctxMap); ++k) + printf(" %d", errElem->ctxMap[k]); + printf("\n"); + for (k = 1; k <= IntVecSize(errElem->ctxPool); ++k) { + printf("\t\tk = %d, ctxPool[k] = %d, feaMats[j] = %p\n", k, errElem->ctxPool[k], errElem->feaMats[k]); + } + printf("\n"); + } + + } + else + printf("\n\n"); + + } + curAI = curAI->prev; + } - fname[0] = '\0'; - if (path!=NULL && *path!='\0') { - if ((s=strrchr(path,PATHCHAR))!=NULL && *(s+1)=='\0') - strcat(fname,path); - else - sprintf(fname,"%s%c",path,PATHCHAR); - } - strcat(fname,base); - if (ext!=NULL && *ext!='\0') { - strcat(fname,"."); - strcat(fname,ext); - } - return fname; } +/* cz277 - many */ +/* initialise errMix in each layer */ +void InitErrMix(HMMSet *hset) { + int c, i, j, k, l, n, m, p, offset; + AILink curAI; + ADLink curAD; + LELink layerElem, srcElem; + FELink errElem, feaElem; + + /* 0. */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + layerElem->trainInfo->dxFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + layerElem->trainInfo->dyFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + layerElem->trainInfo->dxFeaMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->inputDim); + layerElem->trainInfo->dyFeaMats[j] = NULL; + } + if (CacheActMatrixOrNot(layerElem->actfunKind) == TRUE) { + layerElem->trainInfo->cacheMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) + layerElem->trainInfo->cacheMats[j] = CreateNMatrix(hset->hmem, layerElem->nodeNum, GetNBatchSamples()); + } + } + curAI = curAI->next; + } + + /* 1. init errMix structures */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + if (layerElem->nDrv != 0) { + layerElem->errMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(layerElem->errMix, 0, sizeof(FeaMix)); + layerElem->errMix->elemNum = layerElem->nDrv; + layerElem->errMix->mixDim = layerElem->nodeNum; + layerElem->errMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * layerElem->nDrv); + n = IntVecSize(layerElem->drvCtx); + /*layerElem->errMix->ctxPool = CreateIntVec(&gcheap, n);*/ + layerElem->errMix->ctxPool = CreateIntVec(hset->hmem, n); + CopyIntVec(layerElem->drvCtx, layerElem->errMix->ctxPool); + /*errMix->mixMats = NULL; + //errMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + errMix->nUse = 0;*/ + for (j = 0; j < layerElem->errMix->elemNum; ++j) { + /*layerElem->errMix->feaList[j] = (FELink) New(hset->hmem, sizeof(FeaElem)); + errElem = layerElem->errMix->feaList[j]; + errElem->feaDim = -1; + //errElem->ctxMap = CreateIntVec(hset->hmem, 1); + //errElem->ctxMap[1] = 0; + errElem->ctxMap = NULL; + errElem->ctxPool = NULL; + errElem->inputKind = ERRFEAIK; + errElem->feaSrc = NULL; + errElem->feaMats = NULL; + errElem->dimOff = -1; + errElem->extDim = -1; + errElem->srcDim = -1; + errElem->augFeaIdx = 0; + errElem->nUse = 0;*/ + + errElem = CreateFeaElem(hset->hmem); + errElem->inputKind = ERRFEAIK; + layerElem->errMix->feaList[j] = errElem; + } + /* reset nDrv as index */ + layerElem->nDrv = 0; + } + } + curAI = curAI->next; + } + + /* 2. set errMix structures */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + for (j = 0, offset = 0; j < layerElem->feaMix->elemNum; ++j, offset += feaElem->extDim) { + feaElem = layerElem->feaMix->feaList[j]; + if (feaElem->inputKind == ANNFEAIK && feaElem->doBackProp == TRUE) { + srcElem = feaElem->feaSrc; + /* set feaSrc, feaMat, srcDim, and dimOff */ + errElem = srcElem->errMix->feaList[srcElem->nDrv]; + errElem->feaSrc = layerElem; + /*srcElem->errMix->feaList[srcElem->nDrv]->feaMat = layerElem->xFeaMat;*/ + /*errElem->feaMat = layerElem->trainInfo->dxFeaMat;*/ /* cz277 - many */ + m = IntVecSize(feaElem->ctxMap); + /*errElem->ctxMap = CreateIntVec(&gcheap, m);*/ + errElem->ctxMap = CreateIntVec(hset->hmem, m); + CopyIntVec(feaElem->ctxMap, errElem->ctxMap); + /*errElem->ctxPool = CreateIntVec(&gcheap, n);*/ + errElem->ctxPool = CreateIntVec(hset->hmem, n); + CopyIntVec(layerElem->drvCtx, errElem->ctxPool); + errElem->feaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (k = 1; k <= n; ++k) { + errElem->feaMats[k] = layerElem->trainInfo->dxFeaMats[k]; + ++errElem->feaMats[k]->nUse; + } + errElem->dimOff = offset; + errElem->srcDim = layerElem->inputDim; + errElem->feaDim = feaElem->feaDim; /* cz277 - many: TODO problematic for ANN feature split */ + /*errElem->extDim = errElem->feaDim * errElem->ctxMap[0];*/ + errElem->extDim = feaElem->extDim; + /* cz277 - semi */ + errElem->doBackProp = feaElem->doBackProp; + /*errElem->hisLen = 0; + errElem->hisMat = NULL;*/ + /* update srcElem->nDrv */ + ++srcElem->nDrv; + } + } + } + curAI = curAI->next; + } + + /* 3. check nDrv , set errMix->mixMats, and set dyFeaMat */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + /* check nDrv */ + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + if (layerElem->errMix != NULL) { /* nDrv != 0 */ + if (layerElem->nDrv != layerElem->errMix->elemNum) + HError(7095, "InitErrMix: errMix set incorrectly"); + if (layerElem->errMix->elemNum == 1) { /* if it could be shared */ + errElem = layerElem->errMix->feaList[0]; + if (IntVecSize(errElem->ctxMap) == 1) { + if (errElem->feaDim == errElem->srcDim) { + layerElem->errMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + if (layerElem->errMix->ctxPool[j] != errElem->ctxPool[j]) + HError(7095, "InitErrMix: Unmatched context pool when sharing dyFeaMats"); + layerElem->errMix->mixMats[j] = errElem->feaMats[j]; + ++layerElem->errMix->mixMats[j]->nUse; + } + } + } + } + if (layerElem->errMix->mixMats == NULL) { /* if not shared */ + layerElem->errMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) + layerElem->errMix->mixMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->nodeNum); + } + /* train Info */ + for (j = 1; j <= n; ++j) { + layerElem->trainInfo->dyFeaMats[j] = layerElem->errMix->mixMats[j]; + ++layerElem->trainInfo->dyFeaMats[j]->nUse; + } + } + } + curAI = curAI->next; + } + + /* 4. setup drvCnt */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + /* initialise drvCnt */ + /*layerElem->trainInfo->drvCnt = CreateIntVec(&gcheap, n);*/ + layerElem->trainInfo->drvCnt = CreateIntVec(hset->hmem, n); + ZeroIntVec(layerElem->trainInfo->drvCnt); + /* set the drvCnts */ + if (layerElem->errMix != NULL) { + for (j = 0; j < layerElem->errMix->elemNum; ++j) { + errElem = layerElem->errMix->feaList[j]; + n = IntVecSize(errElem->ctxPool); + m = IntVecSize(errElem->ctxMap); + for (k = 1; k <= n; ++k) { + for (l = 1; l <= m; ++l) { + c = errElem->ctxPool[k] + errElem->ctxMap[l]; + p = 1; + while (layerElem->drvCtx[p] != c) + ++p; + ++layerElem->trainInfo->drvCnt[p]; + } + } + } + } + else { + layerElem->trainInfo->drvCnt[1] = 1; + layerElem->trainInfo->tDrvCnt = 0; + } + /* accumulate the counters */ + n = IntVecSize(layerElem->drvCtx); + for (j = 1; j <= n; ++j) + layerElem->trainInfo->tDrvCnt += layerElem->trainInfo->drvCnt[j]; + } + curAI = curAI->next; + } +} + void SetIndexes(HMMSet *hset) { HMMScanState hss; StateInfo *si; MixPDF *mp; MLink m; - int h,nm,nsm,ns,nss,nt; - + int h,nm,nsm,ns,nss; + unsigned long int nt; + + if (hset->hsKind == ANNHS) { /* cz277 - ANN */ + return; + } + /* Reset indexes */ indexSet = TRUE; nt=0; @@ -3960,14 +7686,13 @@ void SetIndexes(HMMSet *hset) hss.mp->mIdx=-1; EndHMMScan(&hss); } - NewHMMScan(hset,&hss); do { if (!IsSeenV(hss.hmm->transP)) { - SetHook(hss.hmm->transP,(Ptr)(++nt)); + SetHook(hss.hmm->transP,(Ptr)(++nt)); TouchV(hss.hmm->transP); } - hss.hmm->tIdx=(int)GetHook(hss.hmm->transP); + hss.hmm->tIdx=(int)(unsigned long int)GetHook(hss.hmm->transP); } while(GoNextHMM(&hss)); EndHMMScan(&hss); @@ -3978,7 +7703,6 @@ void SetIndexes(HMMSet *hset) } while(GoNextHMM(&hss)); EndHMMScan(&hss); - nsm=nss=0; for (h=0; hmtab[h]; m!=NULL; m=m->next) { @@ -4025,7 +7749,7 @@ void SetCovKindUsage (HMMSet *hset) for (ck = 0; ck < NUMCKIND; ck++) hset->ckUsage[ck] =0; - if (hset->hsKind == DISCRETEHS) return; + if (hset->hsKind == DISCRETEHS || hset->hsKind == HYBRIDHS || hset->hsKind == ANNHS) return; /* cz277 - ANN */ NewHMMScan(hset,&hss); while(GoNextMix(&hss,FALSE)) @@ -4062,124 +7786,203 @@ void ResetHMMSet(HMMSet *hset) hset->numMacros=0; hset->numFiles=0; hset->mmfNames=NULL; + + /* cz277 - ANN */ + if (hset->annSet != NULL) { + + FreeANNSet(hset); + + hset->annSet = NULL; + for (i = 0; i < SMAX; ++i) + hset->feaMix[i] = NULL; + } + Dispose(hset->hmem, hset->firstElem); + } /* EXPORT->LoadHMMSet: Load all definition files for given hset */ ReturnStatus LoadHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt) { - int h,nState=0; - MLink p; - char fname[MAXSTRLEN],buf[MAXSTRLEN]; - HLink hmm; - Source src; - Token tok; - - hset->hsKind = PLAINHS; /* default assumption */ - if(LoadMacroFiles(hset)mtab[h]; p!=NULL; p=p->next) - if (p->type == 'h'){ - hmm = (HLink)p->structure; - if (hmm->numStates == 0 ) { - ConcatFN(hmmDir,p->id->name,hmmExt,fname); - if(InitScanner(fname,&src,&tok,hset)hsKind = PLAINHS; /* default assumption */ + if (LoadMacroFiles(hset) < SUCCESS) { + HRError(7050, "LoadHMMSet: Macro name expected"); + ResetHMMSet(hset); + return (FAIL); + } + + /* cz277 - ANN */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (p = hset->mtab[h]; p != NULL; p = p->next) { + if (p->type == 'h') { + hmm = (HLink)p->structure; + if (hmm->numStates == 0) { + ConcatFN(hmmDir, p->id->name, hmmExt ,fname); + if (InitScanner(fname,&src,&tok, HMMDefFilter) < SUCCESS) { /* cz277 - 64bit */ + HRError(7010,"LoadHMMSet: Can't find file"); ResetHMMSet(hset); - HMError(&src,"LoadHMMSet: Macro name failed"); - return(FAIL); - } - if (GetLabId(buf,FALSE) != p->id){ + return (FAIL); + } + if (trace & T_MAC) + printf("HModel: getting HMM Def from %s\n",fname); + if (GetToken(&src, &tok) < SUCCESS) { TermScanner(&src); ResetHMMSet(hset); - HMError(&src,"LoadHMMSet: Inconsistent HMM macro name"); - return(FAIL); - } - if(GetToken(&src,&tok)id) { + TermScanner(&src); + ResetHMMSet(hset); + HMError(&src, "LoadHMMSet: Inconsistent HMM macro name"); + return (FAIL); + } + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + ResetHMMSet(hset); + HMError(&src, "LoadAllMacros: GetToken failed"); + return (FAIL); + } + break; + default: + TermScanner(&src); + ResetHMMSet(hset); + HMError(&src, "LoadHMMSet: Unexpected macro in HMM def file"); + return (FAIL); + break; + } /* switch (tok.macroType) */ + } /* while (tok.sym == MACRO) */ + if (GetHMMDef(hset, &src, &tok, hmm, nState) < SUCCESS) { TermScanner(&src); ResetHMMSet(hset); - HMError(&src,"LoadAllMacros: GetToken failed"); - return(FAIL); - } - break; - default: - TermScanner(&src); - ResetHMMSet(hset); - HMError(&src,"LoadHMMSet: Unexpected macro in HMM def file"); - return(FAIL); - break; - } - if(GetHMMDef(hset,&src,&tok,hmm,nState)numStates == 0) */ + } /* if (p->type == 'h') */ + } /* for (p = hset->mtab[h]; p != NULL; p = p->next) */ + } /* for (h = 0; h < MACHASHSIZE; ++h) */ + + /* cz277 - ANN */ + if (hset->annSet != NULL) { + if (hset->numPhyHMM == 0) { + hset->hsKind = ANNHS; + for (curAI = hset->annSet->defsHead, s = 1, h = 0; h < hset->annSet->annNum; curAI = curAI->next, ++h) { + annDef = curAI->annDef; + if (annDef->nUse == 0) + ++annDef->nUse; + layerElem = annDef->layerList[annDef->layerNum - 1]; + if (layerElem->nDrv == 0 && s <= hset->swidth[0]) { + hset->annSet->outLayers[s] = layerElem; + /*hset->swidth[s] = layerElem->nodeNum;*/ + layerElem->isFinalLayer = TRUE; + ++s; + } } - } - if (forceHSKind) { - if (hset->hsKind == DISCRETEHS && cfHSKind != DISCRETEHS){ - HRError(7032,"LoadHMMSet: cannot change DISCRETE HMM Kind"); - ResetHMMSet(hset); - return(FAIL); - } - if (hset->hsKind == TIEDHS && cfHSKind != TIEDHS){ - HRError(7032,"LoadHMMSet: cannot change TIED HMM Kind"); - ResetHMMSet(hset); - return(FAIL); - } - hset->hsKind = cfHSKind; - }else{ - if (hset->hsKind == PLAINHS && IsShared(hset)) - hset->hsKind = SHAREDHS; - } - if (checking) { - if (CheckHSet(hset)semiTiedMacro != NULL) { - hset->semiTied = LoadOneXForm(hset, hset->semiTiedMacro, NULL); - /* set the component variance floors */ - SetSemiTiedVFloor(hset); - } - return(SUCCESS); + /*hset->swidth[0] = s;*/ + } + /* cz277 - semi */ + FindPostdefFeaSrc(hset); + CheckANNConsistency(hset); + FindANNCycles(hset); /* cz277 - many */ + SetDrvContext(hset); /* cz277 - many */ + InitXYBatch(hset); + /* set the default feature mixtures to each stream */ + if (hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS) /* need to set the HMM input source */ + for (h = 1; h <= hset->swidth[0]; ++h) + if (hset->feaMix[h] == NULL) + hset->feaMix[h] = GetDefaultInpFeaMix(hset, h); +#ifdef CUDA + for (s = 1; s <= hset->swidth[0]; ++s) + if (hset->annSet->penVec[s] != NULL) + SyncNVectorHost2Dev(hset->annSet->penVec[s]); +#endif + } + + /* cz277 - ANN */ + if (hset->annSet != NULL && hset->annSet->annNum == 0) { + HRError(7076, "LoadHMMSet: at least one ANN should be defined if ~L is used"); + return FALSE; + } + + if (forceHSKind) { + if (hset->hsKind == DISCRETEHS && cfHSKind != DISCRETEHS) { + HRError(7032, "LoadHMMSet: cannot change DISCRETE HMM Kind"); + ResetHMMSet(hset); + return (FAIL); + } + if (hset->hsKind == TIEDHS && cfHSKind != TIEDHS) { + HRError(7032, "LoadHMMSet: cannot change TIED HMM Kind"); + ResetHMMSet(hset); + return (FAIL); + } + hset->hsKind = cfHSKind; + } + else { + if (hset->hsKind == PLAINHS && IsShared(hset)) + hset->hsKind = SHAREDHS; + } + if (checking) { + if (CheckHSet(hset) < SUCCESS) { + ResetHMMSet(hset); + HRError(7031, "LoadHMMSet: Invalid HMM data"); + return (FAIL); + } + } + /* cz277 - from xl207, gaussianisation */ + /* New code to allow generalisation of HMMSet to include "isolated" macros (GMMs) */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (p = hset->mtab[h]; p != NULL; p = p->next) { + if (p->type == 'h') { + hmmMacro = TRUE; + break; + } + } + } + if (hmmMacro) { + SetIndexes(hset); + SetCovKindUsage(hset); + SetParmHMMSet(hset); + } + + /* HMMSet loading has been completed - now load the semi-tied transform */ + if (hset->semiTiedMacro != NULL) { + hset->semiTied = LoadOneXForm(hset, hset->semiTiedMacro, NULL); + /* set the component variance floors */ + SetSemiTiedVFloor(hset); + } + + return (SUCCESS); } /* ------------------------ HMM Set Creation ----------------------- */ @@ -4214,6 +8017,11 @@ void CreateHMMSet(HMMSet *hset, MemHeap *heap, Boolean allowTMods) hset->semiTiedMacro = NULL; hset->semiTied = NULL; hset->projSize = 0; + + /* cz277 - ANN */ + /*hset->annSet = NULL; + for (s = 1; s < SMAX; ++s) + hset->feaMix[s] = NULL;*/ } /* CreateHMM: create logical macro. If pId is unknown, create macro for @@ -4222,7 +8030,6 @@ static ReturnStatus CreateHMM(HMMSet *hset, LabId lId, LabId pId) { MLink m; HLink hmm; - Boolean newMacro=FALSE; /* for memory clear up*/ m = FindMacroName(hset,'l',lId); if (m != NULL){ @@ -4239,7 +8046,6 @@ static ReturnStatus CreateHMM(HMMSet *hset, LabId lId, LabId pId) HRError(7091,"CreateHMM: NewMacro (Physical) failed"); /*will never happen*/ return(FAIL); } - newMacro=TRUE; if (pId != lId) ++hmm->nUse; } else { @@ -4262,12 +8068,23 @@ static ReturnStatus CreateHMM(HMMSet *hset, LabId lId, LabId pId) If isSingle, then fname is the name of a single HMM */ static ReturnStatus InitHMMSet(HMMSet *hset, char *fname, Boolean isSingle) { + int i; Source src; char buf[MAXSTRLEN]; LabId lId, pId; - + /* sets first element on heap to allow disposing of memory */ hset->firstElem = (Boolean *) New(hset->hmem, sizeof(Boolean)); + + /* cz277 - ANN */ + hset->annSet = NULL; + for (i = 1; i < SMAX; ++i) + hset->feaMix[i] = NULL; + hset->FTypeMacroNum = 0; + hset->LTypeMacroNum = 0; + hset->NTypeMacroNum = 0; + hset->MTypeMacroNum = 0; + hset->VTypeMacroNum = 0; if (isSingle){ /* fname is a single HMM file to load as a singleton set */ @@ -4312,28 +8129,34 @@ static ReturnStatus InitHMMSet(HMMSet *hset, char *fname, Boolean isSingle) } CloseSource(&src); } + return(SUCCESS); } - /* EXPORT->MakeHMMSet: Make a HMM set by reading the HMM list in fname */ ReturnStatus MakeHMMSet(HMMSet *hset, char *fname) { - if(InitHMMSet(hset, fname, FALSE)annSet = (ANNSet *) New(hset->hmem, sizeof(ANNSet));*/ + + if (InitHMMSet(hset, fname, FALSE) < SUCCESS) { + ResetHMMSet(hset); + return (FAIL); + } + return (SUCCESS); } /* EXPORT->MakeOneHMM: Create a singleton for the HMM hname */ ReturnStatus MakeOneHMM(HMMSet *hset, char *hname) { - if(InitHMMSet(hset, hname, TRUE)annSet = (ANNSet *) New(hset->hmem, sizeof(ANNSet));*/ + + if(InitHMMSet(hset, hname, TRUE) < SUCCESS) { + ResetHMMSet(hset); + return (FAIL); + } + return (SUCCESS); } /* -------------------- HMM/Macro Save Routines -------------------- */ @@ -4356,7 +8179,7 @@ static void SaveMacros(FILE *f, HMMSet *hset, short fidx, Boolean binary) PutOptions(hset,f,binary); for (h=0; hmtab[h]; m!=NULL; m=m->next) - if (m->fidx == fidx) + if (m->fidx == fidx) switch(m->type){ /* atomic macros first */ case 'u': PutMean(hset,f,m,(SVector)m->structure,TRUE,binary); @@ -4387,6 +8210,32 @@ static void SaveMacros(FILE *f, HMMSet *hset, short fidx, Boolean binary) /* should these be associated with the models or not ??? */ default: break; } + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'V') + PutNVecBundle(hset, f, m, (NVecBundle *) m->structure, VECTOR, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'M') + PutNMatBundle(hset, f, m, (NMatBundle *) m->structure, MATRIX, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'F') + PutFeaMix(hset, f, m, (FeaMix *) m->structure, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'L') + PutLayerElem(hset, f, m, (LELink) m->structure, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'N') + PutANNDef(hset, f, m, (ADLink) m->structure, TRUE, binary); + for (h=0; hmtab[h]; m!=NULL; m=m->next) if (m->fidx == fidx && m->type == 'm') @@ -4418,6 +8267,7 @@ static void SaveMacros(FILE *f, HMMSet *hset, short fidx, Boolean binary) if (m->fidx == fidx && m->type == 'r') PutRegTree(hset,f,m,(RegTree *)m->structure,TRUE,binary); } + } static ReturnStatus GetXFormMacros(HMMSet *hset, Source *src, Token *tok, int fidx) @@ -4430,15 +8280,16 @@ static ReturnStatus GetXFormMacros(HMMSet *hset, Source *src, Token *tok, int fi type = tok->macroType; if (!ReadString(src,buf)){ TermScanner(src); - HRError(999,"GetXFormMacros: Macro name expected in macro file %s",src->name); + HRError(7073,"GetXFormMacros: Macro name expected in macro file %s",src->name); return(FAIL); } id = GetLabId(buf,TRUE); if(GetToken(src,tok)name); + HRError(7073,"GetXFormMacros: Macro name expected in macro file %s",src->name); return(FAIL); } + switch(type){ case 'a': structure = GetAdaptXForm(hset,src,tok); @@ -4502,14 +8353,14 @@ static char *InitXFormScanner(HMMSet *hset, char *macroname, char *fname, HError(7035,"Failed to find macroname %s",macroname); } else { /* Close file and initialise scanner */ FClose(f,isPipe); - InitScanner(buf,src,tok,hset); + InitScanner(buf,src,tok, HMMDefFilter); /* cz277 - 64bit */ } if (trace&T_TOP) printf("Loading macro file %s\n",buf); return buf; } else { FClose(f,isPipe); if (trace&T_TOP) printf("Loading macro file %s\n",fname); - InitScanner(fname,src,tok,hset); + InitScanner(fname,src,tok, HMMDefFilter); /* cz277 - 64bit */ return fname; } } @@ -4535,7 +8386,7 @@ BaseClass *LoadBaseClass(HMMSet *hset, char* macroname, char *fname) TermScanner(&src); } if (GetXFormMacros(hset,&src,&tok,fidx)kind != SDBK) + HError(7037, "LoadOneNMatRPL: Speaker dependent type expected for M type %s", buf); + if ((m = FindMacroName(hset, 'M', bundle->hook)) == NULL) + HError(7037, "LoadOneNMatRPL: Fail to load the target M type macro"); + MakeNameNMatRPL(buf, m->id->name, namebuf); + if (strcmp(namebuf, macroname) != 0) + HError(7037, "LoadOneNMatRPL: Macro name unmatched %s vs. %s", macroname, namebuf); + /*if (GetToken(&src, &tok) < SUCCESS) + HError(9999, "LoadOneNMatRPL: Fail to acquire the next term"); */ + id = GetLabId(macroname, TRUE); + NewMacro(hset, fidx, 'M', id, (Ptr) bundle); + } + else + HError(7050, "LoadOneNMatRPL: M type macro def expected"); + TermScanner(&src); + } + else + bundle = (NMatBundle *) m->structure; + + return bundle; +} + +/* cz277 - xform */ +NVecBundle *LoadOneNVecRPL(HMMSet *hset, char *path, char *fname, char *macroname) { + Source src; + Token tok; + LabId id; + MLink m; + char absfn[MAXSTRLEN], buf[MAXSTRLEN], namebuf[MAXSTRLEN]; + NVecBundle *bundle=NULL; + int fidx = LOADFIDX; + + /* First see whether the macro exists */ + id = GetLabId(macroname, FALSE); + if (id == NULL || (m = FindMacroName(hset, 'V', id)) == NULL) { + MakeFN(fname, path, NULL, absfn); + if (InitScanner(absfn, &src, &tok, HMMDefFilter) < SUCCESS) + HError(7013, "LoadOneNVecRPL: Fail to load %s", absfn); + if (GetToken(&src, &tok) < SUCCESS) + HError(7050, "LoadOneNVecRPL: Fail to acquire the next term"); + /* process the macro or defination */ + if (tok.sym == MACRO && tok.macroType == 'V') { + if (!ReadString(&src, buf)) + HError(7050, "LoadOneNVecRPL: Macro name expected"); + bundle = GetNVecBundle(hset, &src, &tok, buf); + if (bundle->kind != SDBK) + HError(7037, "LoadOneNVecRPL: Speaker dependent type expected for V type %s", buf); + if ((m = FindMacroName(hset, 'V', bundle->hook)) == NULL) + HError(7037, "LoadOneNVecRPL: Fail to load the target V type macro"); + MakeNameNVecRPL(buf, m->id->name, namebuf); + if (strcmp(namebuf, macroname) != 0) + HError(7037, "LoadOneNVecRPL: Macro name unmatched %s vs. %s", macroname, namebuf); + /*if (GetToken(&src, &tok) < SUCCESS) + HError(9999, "LoadOneNVecRPL: Fail to acquire the next term"); */ + id = GetLabId(macroname, TRUE); + NewMacro(hset, fidx, 'V', id, (Ptr) bundle); + } + else + HError(7050, "LoadOneNVecRPL: V type macro def expected"); + TermScanner(&src); + } + else + bundle = (NVecBundle *) m->structure; + + return bundle; +} + +/* cz277 - xforms */ +void SaveOneNMatRPL(HMMSet *hset, NMatBundle *bundle, char *fname, Boolean binary) { + FILE *f; + Boolean isPipe; + + if ((f = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) + HError(7011, "SaveOneNMatRPL: Cannot create output file %s", fname); + if (trace & T_MAC) + printf("HModel: Saving replaceable matrix to %s", fname); + PutNMatBundle(hset, f, NULL, bundle, MATRIX, TRUE, binary); +} + +/* cz277 - xforms */ +void SaveOneNVecRPL(HMMSet *hset, NVecBundle *bundle, char *fname, Boolean binary) { + FILE *f; + Boolean isPipe; + + if ((f = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) + HError(7011, "SaveOneNVecRPL: Cannot create output file %s", fname); + if (trace & T_MAC) + printf("HModel: Saving replaceable vector to %s", fname); + PutNVecBundle(hset, f, NULL, bundle, VECTOR, TRUE, binary); +} + + /* EXPORT->LoadOneXForm: loads, or returns, the specified transform */ AdaptXForm *LoadOneXForm(HMMSet *hset, char* macroname, char *fname) { @@ -4615,7 +8582,7 @@ AdaptXForm *LoadOneXForm(HMMSet *hset, char* macroname, char *fname) TermScanner(&src); } if (GetXFormMacros(hset,&src,&tok,fidx) CreateXFormMacro: creates a macro for the new transform. Assigns fidx=-1 to indicate that this @@ -4725,7 +8693,7 @@ void CreateXFormMacro(HMMSet *hset,AdaptXForm *xform, char* macroname) if (((id = GetLabId(macroname,FALSE)) != NULL) && ((m = FindMacroName(hset,'a', id)) != NULL)) { /* Need a new one */ - HRError(999,"CreateXFormMacro: macroname %s previously loaded from %s",macroname, + HRError(7073,"CreateXFormMacro: macroname %s previously loaded from %s",macroname, ((AdaptXForm *)m->structure)->fname); DeleteMacro(hset,m); } @@ -4809,7 +8777,7 @@ void SaveOneXForm(HMMSet *hset, AdaptXForm *xform, char *fname, Boolean binary) char buf1[MAXSTRLEN], buf2[MAXSTRLEN]; if (xform->nUse>0) - HError(999,"Shared AdaptXForm cannot store to a single file"); + HError(7073,"Shared AdaptXForm cannot store to a single file"); binary = binary||saveBinary; if (xform->swapXForm != NULL) { /* need to save the parent xform */ swapxform = xform->swapXForm; @@ -4975,21 +8943,113 @@ static void ReOrderComponents(HMMSet *hset) EndHMMScan(&hss); } + +ReturnStatus SaveANNUpdate(HMMSet *hset, char *fname, Boolean binary) { + FILE *fp; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) { + HRError(7011, "SaveANNUpdate: Cannot create update file %s", fname); + return FAIL; + } + if (trace & T_MAC) + printf("HModel: Saving ANN updates to %s\n", fname); + + PutANNTrainInfo(hset, fp, UPDATE, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + +ReturnStatus SaveANNNegLR(HMMSet *hset, char *fname, Boolean binary) { + FILE *fp; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) { + HRError(7011, "SaveANNNegLR: Cannot create negative learning rate file %s", fname); + return FAIL; + } + if (trace & T_MAC) + printf("HModel: Saving ANN negative learning rates to %s\n", fname); + + PutANNTrainInfo(hset, fp, NEGLEARNRATE, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + +ReturnStatus SaveANNStore(HMMSet *hset, char *fname, Boolean binary) { + FILE *fp; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) { + HRError(7011, "SaveANNStore: Cannot create file %s", fname); + return FAIL; + } + if (trace & T_MAC) + printf("HModel: Saving the sum of the sqaured gradients to %s\n", fname); + + PutANNTrainInfo(hset, fp, SUMSQUAREDGRAD, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + +/* */ +ReturnStatus SaveANNDefs(HMMSet *hset, char *fname, Boolean binary) { + MLink m; + FILE *fp; + int h; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) + HError(7011, "SaveANNDefs: Cannot create macro file %s for ANNDefs", fname); + + fprintf(fp, "~o\n"); + PutOptions(hset, fp, binary); + /* macros */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'V') + PutNVecBundle(hset, fp, NULL, (NVecBundle *) m->structure, VECTOR, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'M') + PutNMatBundle(hset, fp, NULL, (NMatBundle *) m->structure, MATRIX, TRUE, binary); + /* cz277 - semi */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'F') + PutFeaMix(hset, fp, m, (FeaMix *) m->structure, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'L') + PutLayerElem(hset, fp, m, (LELink) m->structure, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'N') + PutANNDef(hset, fp, m, (ADLink) m->structure, TRUE, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + /* EXPORT->SaveHMMSet: save the given HMM set */ ReturnStatus SaveHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt, char *macroExt, Boolean binary) { FILE *f; MILink p; - char fname[256]; + char fname[MAXSTRLEN]; int h,i; MLink m; Boolean isPipe; - + FixOrphanMacros(hset); /* Sort mixture components according to the gConst values */ if ((hset->hsKind == PLAINHS || hset->hsKind == SHAREDHS) && reorderComps) ReOrderComponents(hset); binary = binary || saveBinary; + /* First output to all named MMF files */ for (p=hset->mmfNames,i=1; p!=NULL; p=p->next,i++) if (p->isLoaded) { @@ -5022,6 +9082,7 @@ ReturnStatus SaveHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt, char *macroExt PutHMMDef(hset,f,m,TRUE,binary); FClose(f,isPipe); } + return(SUCCESS); } @@ -5498,7 +9559,7 @@ LogFloat MOutP(Vector x, MixPDF *mp) return px; } - +/* cz277 - ANN: TODO: GMMAK, ANNAK */ /* EXPORT-> SOutP: returns log prob of stream s of observation x */ LogFloat SOutP(HMMSet *hset, int s, Observation *x, StreamElem *se) { @@ -5791,4 +9852,798 @@ char *BaseClassKind2Str(BaseClassKind bkind, char *buf) return strcpy(buf,basemap[bkind]); } +char *ActFunKind2Str(ActFunKind afkind, char *buf) +{ + static char *actfunmap[] = {"AFFINE", "HERMITE", "LINEAR", "RELU", "LHUCRELU", "PRELU", "PARMRELU", "SIGMOID", "LHUCSIGMOID", "PSIGMOID", "PARMSIGMOID", "SOFTRELU", "LHUCSOFTRELU", "PSOFTRELU", "PARMSOFTRELU", "SOFTMAX", "TANH"}; + return strcpy(buf, actfunmap[afkind]); +} + +/* cz277 - 150811 */ +char *LayerKind2Str(LayerKind layerKind, char *buf) +{ + static char *layerkindmap[] = {"ACTIVATIONONLY", "CONVOLUTION", "PERCEPTRON", "SUBSAMPLING"}; + return strcpy(buf, layerkindmap[layerKind]); +} + +/* cz277 - ANN */ +/* */ +void SetupStateInfoList(HMMSet *hset) { + int h, i, s; + MLink m; + HLink hmm; + StateInfo *stateInfo; + + if (hset->hsKind != HYBRIDHS) + HError(7091, "SetupStreamElemList: Funtion only applicable to hybrid systems"); + + for (s = 1; s <= hset->swidth[0]; ++s) { + hset->stateInfoList[s] = (StateInfo **) New(hset->hmem, sizeof(StateInfo *) * (hset->numStates + 1)); + memset(hset->stateInfoList[s], 0, sizeof(StateInfo *) * hset->numStates + 1); /* numSharedStates????? */ + } + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = hset->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (i = 2; i < hmm->numStates; ++i) { + stateInfo = hmm->svec[i].info; + for (s = 1; s <= hset->swidth[0]; ++s) { + if (hset->stateInfoList[s][stateInfo->pdf[s].targetIdx] == NULL) + hset->stateInfoList[s][stateInfo->pdf[s].targetIdx] = stateInfo; + } + } + } + } + } + +} + +/* */ +static void SetupStateMap(StateInfo *si, TargetMap *map, int S) { + int s; + + if (si->stateMap == NULL) { + si->stateMap = map; + for (s = 1; s <= S; ++s) { + map->mappedTargetPen[s] = LAdd((-1.0) * si->pdf[s].targetPen, map->mappedTargetPen[s]); + /*map->mappedTargetPen[s] += exp((-1.0) * si->pdf[s].targetPen);*/ + } + } + else if (si->stateMap != map) { + HError(7091, "SetupStateMap: Multiple definitions for the mapping for a state"); + } +} + +/* */ +static void SetupHMMMap(HLink hmm, TargetMap *map, int S) { + int i; + + for (i = 2; i < hmm->numStates; ++i) { + SetupStateMap(hmm->svec[i].info, map, S); + } +} + +/* */ +ReturnStatus SetupTargetMapList(HMMSet *hset, char *mapFN, int mappedTargetNum) { + Source src; + char buf[MAXSTRLEN], hmmBuf[MAXSTRLEN], srcName[MAXSTRLEN], orgName[MAXSTRLEN]; + LabId srcId, mapId; + int sIdx, pos, s; + TargetMap *mapPtr; + MLink m; + HLink hmm; + + if (hset->hsKind != HYBRIDHS) + HError(7091, "SetupTargetMapList: Funtion only applicable to hybrid systems"); + + /* init mapStruct */ + hset->annSet->mapStruct = (TargetMapStruct *) New(hset->hmem, sizeof(TargetMapStruct)); + hset->annSet->mapStruct->mappedTargetNum = mappedTargetNum; + /* first pass, count for mapped targets */ + if (InitSource(mapFN, &src, HMMListFilter) < SUCCESS) + HError(7010, "SetupTargetMapList: Cannot open target mapping list file %s", mapFN); + SkipWhiteSpace(&src); + while (ReadString(&src, buf)) { + strcpy(srcName, buf); + SkipWhiteSpace(&src); + if (!src.wasNewline) { + if (!ReadString(&src, buf)) { + CloseSource(&src); + HMError(&src, "SetupTargetMapList: Expecting a mapped target name"); + return FAIL; + } + strcat(buf, MAPTARGETPREF); + mapId = GetLabId(buf, FALSE); + if (mapId == NULL) { + ++hset->annSet->mapStruct->mappedTargetNum; + GetLabId(buf, TRUE); + } + SkipWhiteSpace(&src); + } + else { + strcpy(buf, srcName); + strcat(buf, MAPTARGETPREF); + mapId = GetLabId(buf, FALSE); + if (mapId == NULL) { + ++hset->annSet->mapStruct->mappedTargetNum; + GetLabId(buf, TRUE); + } + } + if (!src.wasNewline) { + CloseSource(&src); + HMError(&src, "SetupTargetMapList: Expecting newline"); + return FAIL; + } + } + CloseSource(&src); + RegisterTmpNMat(1, hset->annSet->mapStruct->mappedTargetNum); + /* second pass, setup the target mappings */ + hset->annSet->mapStruct->targetMapList = (TargetMap *) New(hset->hmem, sizeof(TargetMap) * hset->annSet->mapStruct->mappedTargetNum); + pos = 0; + InitSource(mapFN, &src, HMMListFilter); + SkipWhiteSpace(&src); + while (ReadString(&src, buf)) { + /*srcId = GetLabId(buf, FALSE);*/ + strcpy(srcName, buf); + SkipWhiteSpace(&src); + if (!src.wasNewline) { + ReadString(&src, buf); + SkipWhiteSpace(&src); + } + strcpy(orgName, buf); + strcat(buf, MAPTARGETPREF); + mapId = GetLabId(buf, FALSE); + m = FindMacroName(hset, '=', mapId); + if (m == NULL) { /* find a new mapped target */ + NewMacro(hset, 0, '=', mapId, &hset->annSet->mapStruct->targetMapList[pos]); + /*hset->annSet->mapStruct->targetMapList[pos].name = NewString(hset->hmem, strlen(orgName)); + strcpy(hset->annSet->mapStruct->targetMapList[pos].name, orgName);*/ + hset->annSet->mapStruct->targetMapList[pos].name = CopyString(hset->hmem, orgName); + /*hset->annSet->mapStruct->targetMapList[pos].mappedName = NewString(hset->hmem, strlen(buf)); + strcpy(hset->annSet->mapStruct->targetMapList[pos].mappedName, buf);*/ + hset->annSet->mapStruct->targetMapList[pos].mappedName = CopyString(hset->hmem, buf); + hset->annSet->mapStruct->targetMapList[pos].index = pos; + hset->annSet->mapStruct->targetMapList[pos].maxResults = CreateIntVec(hset->hmem, hset->annSet->mapStruct->mappedTargetNum); + memset(&hset->annSet->mapStruct->targetMapList[pos].maxResults[1], 0, sizeof(int) * hset->annSet->mapStruct->mappedTargetNum); + hset->annSet->mapStruct->targetMapList[pos].sumResults = CreateIntVec(hset->hmem, hset->annSet->mapStruct->mappedTargetNum); + memset(&hset->annSet->mapStruct->targetMapList[pos].sumResults[1], 0, sizeof(int) * hset->annSet->mapStruct->mappedTargetNum); + hset->annSet->mapStruct->targetMapList[pos].sampNum = 0; + mapPtr = &hset->annSet->mapStruct->targetMapList[pos]; + /*hset->annSet->targetMapList[pos].mappedTargetPen = 0.0;*/ + for (s = 1; s <= hset->swidth[0]; ++s) { + hset->annSet->mapStruct->targetMapList[pos].mappedTargetPen[s] = LZERO; + } + ++pos; + } + else { + mapPtr = (TargetMap *) m->structure; + } + /* now parse the original target name */ + srcId = GetLabId(srcName, FALSE); + if (srcId != NULL) { /* either a physical state name or a hmm */ + if ((m = FindMacroName(hset, 's', srcId)) != NULL) + SetupStateMap((StateInfo *) m->structure, mapPtr, hset->swidth[0]); + else if ((m = FindMacroName(hset, 'l', srcId)) != NULL) + SetupHMMMap((HLink) m->structure, mapPtr, hset->swidth[0]); + else + HError(7001, "SetupTargetMapList: Unsupported source target"); + } + else { /* a logical HMM state name */ + ExtractState(srcName, hmmBuf, &sIdx); + srcId = GetLabId(hmmBuf, FALSE); + if ((m = FindMacroName(hset, 'l', srcId)) == NULL) + HError(7001, "SetupTargetMapList: Unsupported source target"); + hmm = (HLink) m->structure; + if (sIdx < 2 || sIdx >= hmm->numStates) + HError(7075, "SetupTargetMapList: Illegal state index for source target"); + SetupStateMap(hmm->svec[sIdx].info, mapPtr, hset->swidth[0]); + } + } + CloseSource(&src); + + return SUCCESS; +} + + +/* */ +void UpdateTargetMapStats(ANNSet *annSet, int refPos, int hypPosSum) { + + /*++annSet->mapStruct->targetMapList[refPos].maxResults[hypPosMax + 1];*/ + ++annSet->mapStruct->targetMapList[refPos].sumResults[hypPosSum + 1]; + ++annSet->mapStruct->targetMapList[refPos].sampNum; +} + +/* */ +void InitMapStruct(HMMSet *hset) { + int s, i; + + if (hset->hsKind != HYBRIDHS) + HError(7091, "InitMapVec: Function only valid for hybrid systems"); + + for (s = 1; s <= hset->swidth[0]; ++s) { + /* first, mapVectors */ + hset->annSet->mapStruct->mapVectors[s] = CreateIntVec(hset->hmem, hset->annSet->outLayers[s]->nodeNum); + for (i = 1; i <= hset->annSet->outLayers[s]->nodeNum; ++i) { + hset->annSet->mapStruct->mapVectors[s][i] = hset->stateInfoList[s][i]->stateMap->index; + } + /* second, maskMatMapSum */ + hset->annSet->mapStruct->maskMatMapSum[s] = GenMaskTrNMatrix(hset->hmem, hset->annSet->mapStruct->mappedTargetNum, hset->annSet->mapStruct->mapVectors[s]); + /* thrid, outMatMapSum */ + hset->annSet->mapStruct->outMatMapSum[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->mapStruct->mappedTargetNum); + /* fourth, labMatMapSum[s] */ + if (hset->annSet->outLayers[s]->trainInfo->labMat != NULL) { + hset->annSet->mapStruct->labMatMapSum[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->mapStruct->mappedTargetNum); + } + /* fifth, llhMatMapSum */ + hset->annSet->mapStruct->llhMatMapSum[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->mapStruct->mappedTargetNum); + /* sixth, penVecMapSum */ + hset->annSet->mapStruct->penVecMapSum[s] = CreateNVector(hset->hmem, hset->annSet->mapStruct->mappedTargetNum); + /* set penVecMapSum */ + for (i = 0; i < hset->annSet->mapStruct->mappedTargetNum; ++i) { + hset->annSet->mapStruct->penVecMapSum[s]->vecElems[i] = (-1.0) * hset->annSet->mapStruct->targetMapList[i].mappedTargetPen[s]; + /*hset->annSet->penVecMapSum[s]->vecElems[i] = (-1.0) * log(hset->annSet->targetMapList[i].mappedTargetPen[s]);*/ + } +#ifdef CUDA + SyncNVectorHost2Dev(hset->annSet->mapStruct->penVecMapSum[s]); +#endif + } +} + +/* */ +IntVec GetMapVec(HMMSet *hset, int streamIdx) { + if (hset->hsKind != HYBRIDHS) + HError(7091, "GetMapVec: Function only valid for hybrid systems"); + + return hset->annSet->mapStruct->mapVectors[streamIdx]; +} + +/* */ +void ShowMapConfusionMatrices(ANNSet *annSet, float minConf) { + int i, j; + float num, den, conf; + + printf("Confusion matrices for mapped targets:\n"); + /* for sum */ + printf("\tby Sum:\n"); + for (i = 0; i < annSet->mapStruct->mappedTargetNum; ++i) { + printf("\t%s\t\t", annSet->mapStruct->targetMapList[i].name); + for (j = 0; j < annSet->mapStruct->mappedTargetNum; ++j) { + num = (float) annSet->mapStruct->targetMapList[i].sumResults[j + 1]; + den = (float) annSet->mapStruct->targetMapList[i].sampNum; + conf = num / den; + if (conf > minConf) + printf("%s,%.2f ", annSet->mapStruct->targetMapList[j].name, conf); + } + printf("\n"); + } +} + +/* */ +void ClearMappedTargetCounters(ANNSet *annSet) { + int i; + + for (i = 0; i < annSet->mapStruct->mappedTargetNum; ++i) { + memset(&annSet->mapStruct->targetMapList[i].maxResults[1], 0, sizeof(int) * annSet->mapStruct->mappedTargetNum); + memset(&annSet->mapStruct->targetMapList[i].sumResults[1], 0, sizeof(int) * annSet->mapStruct->mappedTargetNum); + annSet->mapStruct->targetMapList[i].sampNum = 0; + } +} + +/* cz277 - 150811 */ +/* */ +IntVec ParseMacroSettings(char *setting) { + char buf[MAXSTRLEN]; + char *segPtr = NULL, *chrPtr = NULL; + IntVec cntVec = NULL; + char **subStrs = NULL; + int i; + + /* 1. copy the string to do counting */ + strcpy(buf, setting); + /* counting ; */ + segPtr = strtok(buf, ";"); + i = 0; + while (segPtr != NULL) { + segPtr = strtok(NULL, ";"); + i += 1; + } + cntVec = CreateIntVec(&gstack, i); + ZeroIntVec(cntVec); + subStrs = (char **) New(&gstack, i * sizeof(char *)); + /* 2. copy each substring */ + strcpy(buf, setting); + segPtr = strtok(buf, ";"); + i = 0; + while (segPtr != NULL) { + subStrs[i] = CopyString(&gstack, segPtr); + segPtr = strtok(NULL, ";"); + ++i; + } + /* 3. do the substring :, counting */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + chrPtr = strchr(subStrs[i - 1], ':'); + segPtr = strtok(subStrs[i - 1], ":,"); + cntVec[i] = 0; + while (segPtr != NULL) { + segPtr = strtok(NULL, ":,"); + cntVec[i]++; + } + if (chrPtr == NULL) + cntVec[i] *= -1; + } + /* 4. release temp structure */ + Dispose(&gstack, cntVec); + + return cntVec; +} + +/* set the update flag for each ANN layer */ +/* 'w': weights, 'b': bias */ +/* 'i': input activation, 'o': output activation */ +/* '0': init */ +static void SetANNLayerUpdateField(LELink layerElem, char *updateStr) { + int i, j; + + if (strcmp(updateStr, "i") == 0) { + layerElem->trainInfo->initFlag = TRUE; + } + else { + if (layerElem->wghtMat != NULL) + layerElem->wghtMat->updateflag = FALSE; + if (layerElem->biasVec != NULL) + layerElem->biasVec->updateflag = FALSE; + if (layerElem->actfunVecs != NULL) + for (i = 1; i <= layerElem->actfunParmNum; ++i) + layerElem->actfunVecs[i]->updateflag = FALSE; + for (i = 0; i < strlen(updateStr); ++i) { + switch (updateStr[i]) { + case 'a': + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->updateflag = TRUE; + break; + case 'b': + if (layerElem->biasVec != NULL) + layerElem->biasVec->updateflag = TRUE; + break; + case 'n': + if (layerElem->wghtMat != NULL) + layerElem->wghtMat->updateflag = FALSE; + if (layerElem->biasVec != NULL) + layerElem->biasVec->updateflag = FALSE; + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->updateflag = FALSE; + break; + case 'i': + HError(-1, "SetANNLayerUpdateField: 'i' ignored"); + break; + case 'w': + if (layerElem->wghtMat != NULL) + layerElem->wghtMat->updateflag = TRUE; + break; + default: + HError(7092, "SetANNLayerUpdateField: Unknown update flag %c", updateStr[i]); + } + } + } +} + +/* set the update flags of the ANN models */ +void SetANNUpdateFlag(HMMSet *hset) { + int i, j, cnt; + LabId id; + ADLink annDef; + LELink layerElem; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + ANNSet *annSet; + char *ANNUpdateFlagStr; + + annSet = hset->annSet; + ANNUpdateFlagStr = GetANNUpdateFlagStr(); + /* init flags of all layers */ + /*curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + layerElem->trainInfo->updateFlag = BIASUK | ACTFUNUK | WEIGHTUK; + layerElem->trainInfo->initFlag = FALSE; + } + curAI = curAI->next; + }*/ + /* process each referred ANN */ + if (strcmp(ANNUpdateFlagStr, "") == 0) + return; + + annDef = NULL; + cntVec = ParseMacroSettings(ANNUpdateFlagStr); + if (IntVecSize(cntVec) > 1) + for (i = 2; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] < 0) + HError(7077, "SetANNUpdateFlag: Only 1st ANN reference could be anonymous"); + strcpy(buf, ANNUpdateFlagStr); + bufPtr = strtok(buf, ";:,"); + for (i = 1; i <= IntVecSize(cntVec); ++i) { + cnt = abs(cntVec[i]); + if (cntVec[i] < 0) + annDef = annSet->defsHead->annDef; + else { + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'N', id)) != NULL) + annDef = (ADLink) m->structure; + else + HError(7077, "SetANNUpdateFlag: Missing ANN macro name %s", bufPtr); + bufPtr = strtok(NULL, ";:,"); + --cnt; + } + for (j = 0; j < cnt; ++j) { + if (j < annDef->layerNum) { + layerElem = annDef->layerList[j]; + SetANNLayerUpdateField(layerElem, bufPtr); + } + bufPtr = strtok(NULL, ";:,"); + } + } +} + +/* cz277 - 150820 */ +static Boolean ParseBooleanValue(char *strval) { + if (strcasecmp(strval, "TRUE") == 0 || strcasecmp(strval, "T") == 0) + return TRUE; + else if (strcasecmp(strval, "FALSE") == 0 || strcasecmp(strval, "F") == 0) + return FALSE; + else + HError(-7075, "ParseBooleanValue: Unknown Boolean flag %s, return TRUE as default", strval); + return FALSE; +} + +/* cz277 - 150820 */ +void SetNMatUpdateFlag(HMMSet *hset) { + int i; + LabId id; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *matrixUpdateFlagStr; + NMatBundle *bundle=NULL; + + matrixUpdateFlagStr = GetNMatUpdateFlagStr(); + if (strcmp(matrixUpdateFlagStr, "") == 0) + return; + + cntVec = ParseMacroSettings(matrixUpdateFlagStr); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetNMatUpdateFlag: No matrix macro can be anonymous"); + strcpy(buf, matrixUpdateFlagStr); + bufPtr = strtok(buf, ";:,"); + /* process each matrix */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + /* get the macro */ + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'M', id)) != NULL) + bundle = (NMatBundle *) m->structure; + else + HError(7077, "SetNMatUpdateFlag: Missing matrix macro %s", bufPtr); + /* set the update flag */ + bufPtr = strtok(NULL, ";:,"); + bundle->updateflag = ParseBooleanValue(bufPtr); + bufPtr = strtok(NULL, ";:,"); + } +} + +/* cz277 - 150820 */ +void SetNVecUpdateFlag(HMMSet *hset) { + int i; + LabId id; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *vectorUpdateFlagStr; + NVecBundle *bundle=NULL; + + vectorUpdateFlagStr = GetNVecUpdateFlagStr(); + if (strcmp(vectorUpdateFlagStr, "") == 0) + return; + + cntVec = ParseMacroSettings(vectorUpdateFlagStr); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetNVecUpdateFlag: No vector macro can be anonymous"); + strcpy(buf, vectorUpdateFlagStr); + bufPtr = strtok(buf, ";:,"); + /* process each vector */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + /* get the macro */ + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'V', id)) != NULL) + bundle = (NVecBundle *) m->structure; + else + HError(7077, "SetNVecUpdateFlag: Missing vector macro %s", bufPtr); + /* set the update flag */ + bufPtr = strtok(NULL, ";:,"); + bundle->updateflag = ParseBooleanValue(bufPtr); + bufPtr = strtok(NULL, ";:,"); + } +} + +/* cz277 - 150811 */ +void SetupNMatRPLInfo(HMMSet *hset) { + int i, n; + LabId id; + NMatBundle *bundle; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *maskStrNMatRPLInfo; + char *inDirStrNMatRPLInfo; + char *extStrNMatRPLInfo; + char *outDirStrNMatRPLInfo; + RILink curRPLInfo = NULL; + RILink headRPLInfo = NULL; + + curRPLInfo = GetHeadNMatRPLInfo(); + /* 1. check the masks */ + maskStrNMatRPLInfo = GetMaskStrNMatRPLInfo(); + if (strcmp(maskStrNMatRPLInfo, "") == 0) + return; + cntVec = ParseMacroSettings(maskStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, maskStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each NMatrix */ + for (i = 1, n = 0; i <= IntVecSize(cntVec); ++i) { + bundle = NULL; + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'M', id)) != NULL) { + bundle = (NMatBundle *) m->structure; + if (bundle->variables == NULL) + HError(7000, "SetupNMatRPLInfo: NMatrix not properly set"); + } + else + HError(-7035, "SetupNMatRPLInfo: Cannot find NMatrix macro %s, ignored", bufPtr); + bufPtr = strtok(NULL, ";:,"); + if (bundle != NULL) { + ++n; + /* allocate a node for RPLInfo */ + if (curRPLInfo == NULL) { + headRPLInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = headRPLInfo; + } + else { + curRPLInfo->nextInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = curRPLInfo->nextInfo; + } + memset(curRPLInfo, 0, sizeof(RPLInfo)); + /* set the macro name */ + curRPLInfo->inRPLMask = CopyString(&gcheap, bufPtr); + curRPLInfo->id = id; + curRPLInfo->curNMat = bundle; + SetNMatBundleByNMatBundle(curRPLInfo->curNMat, &curRPLInfo->savNMat); + /*curRPLInfo->curNMat = bundle->variables; + curRPLInfo->savNMat.rowNum = bundle->variables->rowNum; + curRPLInfo->savNMat.colNum = bundle->variables->colNum; + curRPLInfo->savNMat.matElems = bundle->variables->matElems;*/ + } + bufPtr = strtok(NULL, ";:,"); + } + /* 2. check the in dirs */ + inDirStrNMatRPLInfo = GetInDirStrNMatRPLInfo(); + if (strcmp(inDirStrNMatRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(inDirStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, inDirStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 3. check the exts */ + extStrNMatRPLInfo = GetExtStrNMatRPLInfo(); + if (strcmp(extStrNMatRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(extStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, extStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 4. check the out dirs */ + outDirStrNMatRPLInfo = GetOutDirStrNMatRPLInfo(); + if (strcmp(outDirStrNMatRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(outDirStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, outDirStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 5. set the link back */ + SetHeadNMatRPLInfo(headRPLInfo); + SetNumNMatRPLInfo(n); +} + +/* cz277 - 150811 */ +void SetupNVecRPLInfo(HMMSet *hset) { + int i, n; + LabId id; + NVecBundle *bundle; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *maskStrNVecRPLInfo; + char *inDirStrNVecRPLInfo; + char *extStrNVecRPLInfo; + char *outDirStrNVecRPLInfo; + RILink curRPLInfo = NULL; + RILink headRPLInfo = NULL; + + curRPLInfo = GetHeadNVecRPLInfo(); + /* 1. check the masks */ + maskStrNVecRPLInfo = GetMaskStrNVecRPLInfo(); + if (strcmp(maskStrNVecRPLInfo, "") == 0) + return; + cntVec = ParseMacroSettings(maskStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, maskStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each NVector */ + for (i = 1, n = 0; i <= IntVecSize(cntVec); ++i) { + bundle = NULL; + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'V', id)) != NULL) { + bundle = (NVecBundle *) m->structure; + if (bundle->variables == NULL) + HError(7000, "SetupNVecRPLInfo: NVector not properly set"); + } + else + HError(-7035, "SetupNVecRPLInfo: Cannot find NVector macro %s, ignored", bufPtr); + bufPtr = strtok(NULL, ";:,"); + if (bundle != NULL) { + ++n; + /* allocate a node for RPLInfo */ + if (curRPLInfo == NULL) { + headRPLInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = headRPLInfo; + } + else { + curRPLInfo->nextInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = curRPLInfo->nextInfo; + } + /* initialise the RPLInfo */ + memset(curRPLInfo, 0, sizeof(RPLInfo)); + curRPLInfo->inRPLMask = CopyString(&gcheap, bufPtr); + curRPLInfo->id = id; + curRPLInfo->curNVec = bundle; + + SetNVecBundleByNVecBundle(curRPLInfo->curNVec, &curRPLInfo->savNVec); + /*curRPLInfo->curNVec = bundle->variables; + curRPLInfo->savNVec.vecLen = bundle->variables->vecLen; + curRPLInfo->savNVec.vecElems = bundle->variables->vecElems;*/ + } + bufPtr = strtok(NULL, ";:,"); + } + /* 2. check the in dirs */ + inDirStrNVecRPLInfo = GetInDirStrNVecRPLInfo(); + if (strcmp(inDirStrNVecRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(inDirStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, inDirStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 3. check the exts */ + extStrNVecRPLInfo = GetExtStrNVecRPLInfo(); + if (strcmp(extStrNVecRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(extStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, extStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 4. check the out dirs */ + outDirStrNVecRPLInfo = GetOutDirStrNVecRPLInfo(); + if (strcmp(outDirStrNVecRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(outDirStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, outDirStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 5. set the link back */ + SetHeadNVecRPLInfo(headRPLInfo); + SetNumNVecRPLInfo(n); +} + /* ------------------------- End of HModel.c --------------------------- */ diff --git a/HTKLib/HModel.h b/HTKLib/HModel.h old mode 100644 new mode 100755 index edc6b14..862f4b2 --- a/HTKLib/HModel.h +++ b/HTKLib/HModel.h @@ -3,36 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ -/* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HModel.h HMM Model Definition Data Type */ +/* File: HModel.h HMM model definition data type */ /* ----------------------------------------------------------- */ -/* !HVER!HModel: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HModel: 3.5.0 [CUED 12/10/15] */ #ifndef _HMODEL_H_ #define _HMODEL_H_ @@ -41,21 +41,29 @@ extern "C" { #endif +/*#include "HANNet.h"*/ /* cz277 - ANN: ANN defs and types */ +/*#include "HMath.h"*/ /* cz277 - ANN */ +/*#include "HLabel.h"*/ /* cz277 - ANN */ + /* The following types define the in-memory representation of a HMM. All HMM's belong to a HMMSet which includes a macro table for rapidly mapping macro/hmm names into structures. */ -#define MACHASHSIZE 250007 /* Size of each HMM Set macro hash table */ -#define PTRHASHSIZE 513 /* Size of each HMM Set ptr map hash table */ -#define MINMIX 1.0E-5 /* Min usable mixture weight */ +#define MACHASHSIZE 250007 /* Size of each HMM Set macro hash table */ +#define PTRHASHSIZE 513 /* Size of each HMM Set ptr map hash table */ +#define MINMIX 1.0E-5 /* Min usable mixture weight */ #define LMINMIX -11.5129254649702 /* log(MINMIX) */ +/* cz277 - ANN */ +#define MAXINPUSE 10 /* maximum times of the parmkind feature used */ -#define MINDLOGP 0.000001 /* prob = exp(shortform/DLOGSCALE) */ -#define DLOGSCALE -2371.8 /* = 32767/ln(MINDLOGP) */ +#define MINDLOGP 0.000001 /* prob = exp(shortform/DLOGSCALE) */ +#define DLOGSCALE -2371.8 /* = 32767/ln(MINDLOGP) */ #define DLOGZERO 32767 +#define MAXNTOKENARG 256 /* cz277 - ANN: max number of args could be appended to a token */ + #define MixFloor(hset) ( MINMIX ) #ifdef WIN32 @@ -79,9 +87,13 @@ typedef struct _MMFInfo{ enum _DurKind {NULLD, POISSOND, GAMMAD, RELD, GEND}; typedef enum _DurKind DurKind; -enum _HSetKind {PLAINHS, SHAREDHS, TIEDHS, DISCRETEHS}; +enum _HSetKind {PLAINHS, SHAREDHS, TIEDHS, DISCRETEHS, HYBRIDHS, ANNHS}; /* cz277 - ANN: TODO: MIXEDHS */ typedef enum _HSetKind HSetKind; +/* cz277 - ANN: identifier for the type of state density functions */ +enum _HSDensKind {GMMDK, ANNDK}; +typedef enum _HSDensKind HSDensKind; + typedef struct { SVector mean; /* mean vector */ CovKind ckind; /* kind of covariance */ @@ -121,9 +133,14 @@ typedef struct { /* A Tied Mixture "Codebook" */ } TMixRec; typedef struct { /* 1 of these per stream */ - int nMix; /* num mixtures in this stream */ - MixtureVector spdf; /* Mixture Vector */ - Ptr hook; /* general hook */ + HSDensKind densKind; /* cz277 - ANN: density kind */ + LELink targetSrc; /* cz277 - ANN: (ANNDK) the source of this state density */ + int targetIdx; /* cz277 - ANN: (ANNDK) the index of the target */ + float targetPen; /* cz277 - ANN: (ANNDK) the penalty to this state */ + double occAcc; /* cz277 - ANN: (ANNDK) the field used to accumulate the occupancies */ + int nMix; /* (GMMDK) num mixtures in this stream */ + MixtureVector spdf; /* (GMMDK) Mixture Vector */ + Ptr hook; /* (GMMDK) general hook */ }StreamElem; typedef struct { @@ -134,6 +151,7 @@ typedef struct { int nUse; /* usage counter */ Ptr hook; /* general hook */ int stateCounter; /* # of state occurrences */ + TargetMap *stateMap; /* cz277 - ANN the mapping of this state */ } StateInfo; typedef struct { /* 1 of these per state */ @@ -276,6 +294,12 @@ typedef struct { have 0 or more logHMM macros referencing it. */ +/* + cz277 - ANN + Extended Macro: + e feature k ANNlayer n ANNmodel +*/ + typedef struct _MacroDef *MLink; typedef struct _MacroDef{ @@ -337,6 +361,18 @@ typedef struct _HMMSet{ /* Added to support delayed loading of the semi-tied transform */ char *semiTiedMacro; /* macroname of semi-tied transform */ + /* cz277 - ANN */ + FeaMix *feaMix[SMAX]; /* the feature mixture to the GMM-HMMs, could be NULL */ + ANNSet *annSet; /* the pointer to ANNSet instance */ + int nInp[SMAX]; /* the usage count of the input feature (inpElem length) */ + FELink inpElem[SMAX][MAXINPUSE]; /* the FeaElem pointer list for the input features */ + int FTypeMacroNum; /* number of F type macro */ + int LTypeMacroNum; /* number of L type macro */ + int NTypeMacroNum; /* number of N type macro */ + int MTypeMacroNum; + int VTypeMacroNum; + + StateInfo **stateInfoList[SMAX]; /* used to convert target index to stream element for each stream */ } HMMSet; /* --------------------------- Initialisation ---------------------- */ @@ -457,6 +493,7 @@ ReturnStatus MakeOneHMM(HMMSet *hset, char *hname); to create a singleton HMM set */ +/*ReturnStatus LoadMacroFiles(HMMSet *hset);*/ ReturnStatus LoadHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt); /* Load any preloaded MMF files. Scan the physical list of hset and @@ -664,6 +701,68 @@ XFormKind Str2XFormKind(char *str); /* EXPORT-> Str2AdaptKind: parse the string into the correct xform kind */ AdaptKind Str2AdaptKind(char *str); +/* cz277 - ANN */ +LabId GetNextANNMacroName(char *invoker, HMMSet *hset, char type); +Boolean CmpFeaElem(FELink lhFEL, FELink rhFEL); +LELink GenBlankLayer(MemHeap *heap); +LELink GenNewPerceptronLayer(HMMSet *hset, int nodeNum, int inputDim, char *wghtName, char *biasName); +void InitANNSet(HMMSet *hset); +void FreeANNSet(HMMSet *hset); +void ShowANNSet(HMMSet *hset); +/*ReturnStatus CheckTrainInfo(ANNSet *annSet);*/ +void InitTrainInfo(HMMSet *hset, Boolean initLabMats, Boolean initLRInfo, Boolean initAuxInfo, Boolean initStruct); +void InitErrMix(HMMSet *hset); +void CheckANNConsistency(HMMSet *hset); +void InitXYBatch(HMMSet *hset); +ReturnStatus SaveANNUpdate(HMMSet *hset, char *fname, Boolean binary); +ReturnStatus SaveANNNegLR(HMMSet *hset, char *fname, Boolean binary); +ReturnStatus SaveANNStore(HMMSet *hset, char *fname, Boolean binary); +ReturnStatus SaveANNDefs(HMMSet *hset, char *fname, Boolean binary); + +ActFunKind Str2ActFunKind(char *str); + +void SetupStateInfoList(HMMSet *hset); +ReturnStatus SetupTargetMapList(HMMSet *hset, char *mapFN, int mappedTargetNum); +void UpdateTargetMapStats(ANNSet *annSet, int refPos, int hypPosSum); +void InitMapVec(HMMSet *hset); +IntVec GetMapVec(HMMSet *het, int streamIdx); +void ClearMappedTargetCounters(ANNSet *annSet); +void ShowMapConfusionMatrices(ANNSet *annSet, float minConf); +/* cz277 - 1007 */ +FeaMix *GetDefaultANNFeaMix(HMMSet *hset, LELink srcLayer); +/* cz277 - xform */ +void SetNVecBundleByNVecBundle(NVecBundle *sbundle, NVecBundle *tbundle); +void SetNMatBundleByNMatBundle(NMatBundle *sbundle, NMatBundle *tbundle); +void AugHostNVecBundleByNVecBundle(MemHeap *x, NVecBundle *sbundle, NVecBundle *tbundle); +void AugHostNMatBundleByNMatBundle(MemHeap *x, NMatBundle *sbundle, NMatBundle *tbundle); +NMatBundle *FetchNMatBundle(HMMSet *hset, char *macroname); +NVecBundle *FetchNVecBundle(HMMSet *hset, char *macroname); +NVecBundle *LoadOneNVecRPL(HMMSet *hset, char *path, char *fname, char *macroname); +NMatBundle *LoadOneNMatRPL(HMMSet *hset, char *path, char *fname, char *macroname); +void SaveOneNMatRPL(HMMSet *hset, NMatBundle *bundle, char *fname, Boolean binary); +void SaveOneNVecRPL(HMMSet *hset, NVecBundle *bundle, char *fname, Boolean binary); + +/* cz277 - many */ +void ShowANNStructDetails(HMMSet *hset); +/* cz277 - many */ +void ResetDrvContext(HMMSet *hset); +void SetDrvContext(HMMSet *hset); +void FindANNCycles(HMMSet *hset); + +/* cz277 - 150811 */ +Boolean CheckActFunParameters(LELink layerElem); +IntVec ParseMacroSettings(char *setting); +void SetANNUpdateFlags(HMMSet *hset); +/*void SetLayerUpdateFlag(HMMSet *hset); +void SetActFunUpdateFlag(HMMSet *hset);*/ +void SetNMatUpdateFlag(HMMSet *hset); +void SetNVecUpdateFlag(HMMSet *hset); +void SetupNMatRPLInfo(HMMSet *hset); +void SetupNVecRPLInfo(HMMSet *hset); +LayerKind Str2LayerKind(char *str); +void InitMapStruct(HMMSet *hset); +void SetANNUpdateFlag(HMMSet *hset); + #ifdef __cplusplus } #endif diff --git a/HTKLib/HNCache.c b/HTKLib/HNCache.c new file mode 100755 index 0000000..68ae83a --- /dev/null +++ b/HTKLib/HNCache.c @@ -0,0 +1,2000 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNCache.c ANN model data cache */ +/* ----------------------------------------------------------- */ + +char *hncache_version = "!HVER!HNCache: 3.5.0 [CUED 12/10/15]"; +char *hncache_vc_id = "$Id: HNCache.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +#include +#include "config.h" +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HAudio.h" +#include "HParm.h" +#include "HLabel.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HUtil.h" +#include "HAdapt.h" +#include "HFB.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HLM.h" +#include "HLat.h" +#include "HNCache.h" +#include + +/* ------------------------------ Trace Flags ------------------------------ */ + +static int trace = 0; + +#define T_TOP 0001 +#define T_CCH 0002 +#define T_RPL 0004 +#define MAX(a,b) ((a)>(b) ? (a):(b)) + + +/* --------------------------- Memory Management --------------------------- */ + +static MemHeap pbufStack; +static MemHeap transStack; +/* static MemHeap latHeap; */ + +/* ----------------------------- Configuration ------------------------------*/ + + +static ConfParam *cParm[MAXGLOBS]; /* config parameters */ +static int nParm = 0; + +static size_t defaultCacheSamples = 100000; /* the number of samples in cached; 1 sample by defult */ +/*static size_t defaultCacheSize = 134217728;*/ /* the size of the total size of the cache data block, in bytes; */ +/*static size_t batchSamples = 1;*/ /* the number of samples in batch; 1 sample by default */ +static VisitKind defaultVisitKind = FRMVK; /* the indicator for visiting order; frame level randomization by default */ +static ShuffKind shuffKind = KNUTHRSK; /* the way of shuffle the train set cache */ +static unsigned int shuffSeed = 0; /* the seed for generating random integers for shuffling the list */ +/*static char *updtFlagStr = NULL;*/ /* the string pointer indicating the layers to update */ +static size_t allCacheSamp = 0; /* the size of all data caches */ +static Boolean need2Unload = TRUE; /* the flag for whether the memory can hold all samples */ + +static int epochIdx = 1; /* the epoch number used by QuickNetShuffle */ +static int QN_outsegno = 0; /* the output segment number used by QuickNetShuffle */ +static const size_t QN_XORTable[32] = {0x1, 0x1, 0x3, 0x6, 0xc, 0x14, 0x30, 0x60, 0xb8, 0x110, 0x240, 0x500, 0xca0, 0x1b00, 0x3500, 0x6000, 0xb400, 0x12000, 0x20400, 0x72000, 0x90000, 0x140000, 0x300000, 0x420000, 0xd80000, 0x1200000, 0x3880000, 0x7200000, 0x9000000, 0x14000000, 0x32800000, 0x48000000}; /* the XOR table acquired from QuickNet (in QN_seqgen.cc) */ + +/* cz277 - mtload */ +static Boolean extThreadLoad = FALSE; + +static void UnloadOneUtt(DataCache *cache, int dstPos); + + +/* get the batch size */ +/*int GetNBatchSamples(void) { + return batchSamples; +}*/ + +/* set the batch size */ +/*void SetNBatchSamples(int userBatchSamples) { + batchSamples = userBatchSamples; +}*/ + +/* get current cache size */ +size_t GetDefaultNCacheSamples(void) { + return defaultCacheSamples; +} + +/* get current cache visiting kind */ +VisitKind GetDefaultVisitKind(void) { + return defaultVisitKind; +} + +/* set epoch index as a random seed */ +void SetEpochIndex(int curEpochIdx) { + epochIdx = curEpochIdx; +} + + +/* accumulate total cache size */ +void AccAllCacheSamples(size_t curCacheSamp) { + allCacheSamp += curCacheSamp; +} + +/* set the need2unload flag */ +void SetNeed2UnloadFlag(void) { + if (allCacheSamp < defaultCacheSamples) + need2Unload = FALSE; +} + +/* do knuth shuffling */ +static inline void KnuthShuffle(void *list, size_t stPos, size_t edPos, int unitLen) { + size_t i, randPos, n, range; + void *srcAddr, *dstAddr; + char buf[MAXSTRLEN]; /* the temp structure */ + + /* stPos, stPos + 1, ..., edPos - 1*/ + n = edPos - stPos; + /* set the range of the random value */ + range = n; /* for default KNUTHFSK */ + for (i = n - 1; i > 0; --i) { + /* set the range of the random value */ + if (shuffKind == KNUTHRSK) { + range = i + 1; + } + /* get the random position to switch */ + randPos = rand() % range; + /* compute the address of the source and destinate items */ + srcAddr = list + (stPos + i) * unitLen; + dstAddr = list + (stPos + randPos) * unitLen; + /* swap the values */ + memcpy(buf, srcAddr, unitLen); + memcpy(srcAddr, dstAddr, unitLen); + memcpy(dstAddr, buf, unitLen); + } +} + +/* copied from QuickNet (in QN_seqgen.cc) */ +static inline unsigned int GetLog2Ceil(unsigned int val) { + unsigned int mask, clear; + int topbits, count, j; + + mask = 0xffff0000u; + topbits = 16; + count = 0; + val -= 1; + for (j = 0; j < 4; ++j) { + clear = val & mask; + if (!clear) { + count += topbits; + val <<= topbits; + } + topbits >>= 1; + mask <<= topbits; + } + clear = val & 0xc0000000; + if (((int) clear) >= 0) { + ++count; + } + if (clear == 0) { + ++count; + } + return 32 - count; +} + +/* do QuickNet shuffling, copied from QuickNet (in QN_seqgen.cc) */ +static inline void QuickNetShuffle(void *list, int stPos, int edPos, int unitLen) { + int i, n; + void *srcVals, *srcAddr, *dstAddr; + unsigned int maxVal, xorVal, nxtVal, curVal, newSeed; + + n = edPos - stPos; + maxVal = n; + xorVal = QN_XORTable[GetLog2Ceil(maxVal + 1)]; + if (maxVal < 1 && maxVal > 0x7fffffff) { + HError(8920, "QuickNetShuffle: maxVal out of range"); + } + newSeed = QN_outsegno + (12345 * epochIdx) + shuffSeed; + nxtVal = (unsigned int) (newSeed % maxVal) + 1; + srcVals = (void *) New(&gstack, unitLen * n); + memcpy(srcVals, list + stPos * unitLen, unitLen * n); + + for (i = 0; i < n; ++i) { + curVal = nxtVal; + do { + if (nxtVal & 1) { + nxtVal = (nxtVal >> 1) ^ xorVal; + } + else { + nxtVal = nxtVal >> 1; + } + } while (nxtVal > maxVal); + curVal -= 1; + /* rearrange the value */ + srcAddr = srcVals + ((int) curVal) * unitLen; + dstAddr = list + (stPos + i) * unitLen; + memcpy(dstAddr, srcAddr, unitLen); + } + + Dispose(&gstack, srcVals); +} + +/* shuffle a segment */ +static inline void ShuffleSegment(void *list, size_t stPos, size_t edPos, int unitLen) { + switch (shuffKind) { + case KNUTHFSK: + case KNUTHRSK: + KnuthShuffle(list, stPos, edPos, unitLen); + break; + case QUICKNETSK: + QuickNetShuffle(list, (int) stPos, (int) edPos, unitLen); + break; + default: + HError(8991, "ShuffleSegment: Unknown shuffle kind"); + } +} + +/* */ +void InitNCache(void) +{ + int intVal; + char buf[MAXSTRLEN]; + Boolean boolVal; + + Register(hncache_version, hncache_vc_id); + nParm = GetConfig("HNCACHE", TRUE, cParm, MAXGLOBS); + + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) { + trace = intVal; + } + if (GetConfInt(cParm, nParm, "DATACACHESIZE", &intVal)) { + defaultCacheSamples = intVal; + } + if (GetConfStr(cParm, nParm, "DATAACCESSKIND", buf)) { + if (strcmp(buf, "FRAMERAND") == 0) + defaultVisitKind = FRMVK; + else if (strcmp(buf, "UTTERANCERAND") == 0) + defaultVisitKind = UTTVK; + else if (strcmp(buf, "PARALLELSTREAMORIGIN") == 0) + defaultVisitKind = PLNONEVK; + else if (strcmp(buf, "PARALLELSTREAMRAND") == 0) + defaultVisitKind = PLUTTVK; + else if (strcmp(buf, "ORIGINAL") == 0) + defaultVisitKind = NONEVK; + else + HError(8921, "InitNCache: Unknown data access kind"); + /*if (strcmp(buf, "FRAMERAND") == 0) { + defaultVisitKind = FRMVK; + } + else if (strcmp(buf, "UTTRAND") == 0) { + defaultVisitKind = UTTVK; + } + else if (strcmp(buf, "HIERAND") == 0) { + defaultVisitKind = UTTFRMVK; + } + else if (strcmp(buf, "PIPLORIG") == 0) { + defaultVisitKind = PLNONEVK; + } + else if (strcmp(buf, "PIPLRAND") == 0) { + defaultVisitKind = PLUTTVK; + } + else if (strcmp(buf, "HIEPIPLRAND") == 0) { + defaultVisitKind = PLUTTFRMVK; + } + else if (strcmp(buf, "ORIGINAL") == 0) { + defaultVisitKind = NONEVK; + } + else { + HError(9999, "InitNCache: Unknown visit kind"); + }*/ + } + if (GetConfStr(cParm, nParm, "SHUFFLEKIND", buf)) { + if (strcmp(buf, "KNUTHFIXED") == 0) { + shuffKind = KNUTHFSK; + } + else if (strcmp(buf, "KNUTHRAND") == 0) { + shuffKind = KNUTHRSK; + } + else if (strcmp(buf, "QUICKNET") == 0) { + shuffKind = QUICKNETSK; + } + else { + HError(8921, "InitNCache: Unknown shuffle kind"); + } + } + if (GetConfStr(cParm, nParm, "RANDSEED", buf)) { + if (strcmp(buf, "CURRENTTIME") == 0) { + shuffSeed = time(NULL); + } + else { + shuffSeed = (unsigned int) atol(buf); + } + srand(shuffSeed); /* set the seed */ + } + /* cz277 - mtload */ + if (GetConfBool(cParm, nParm, "EXTRATHREADLOADING", &boolVal)) { + extThreadLoad = boolVal; + HError(-8921, "InitNCache: EXTRATHREADLOADING is disabled"); + } + } + + /* initialise the stacks */ + CreateHeap(&pbufStack, "pbufStore", MSTAK, 1, 0.5, 1000, 10000); + CreateHeap(&transStack, "labStore", MSTAK, 1, 0.5, 1000, 10000); + /*CreateHeap(&latHeap, "latStore", CHEAP, 1, 0, 1000000, 10000000);*/ + + if (TRUE) { + /* GPU/MKL/CPU */ /* discard: should be set when compiling */ + /* THREADS */ + /* SGD/HF */ + /* LEARNING RATE SCHEDULE */ + /* RELATED STUFFS */ + } +} + +/* use to create a cache */ +/* if labelInfo == NULL, then no label is available */ +DataCache *CreateCache(MemHeap *heap, FILE *scpFile, int scpCnt, HMMSet *hset, Observation *obs, int streamIdx, size_t cacheSamples, VisitKind visitKind, XFInfo *xfInfo, LabelInfo *labelInfo, Boolean saveUttName) { + int i; + DataCache *cache; + + /* check the data heap type */ + if (heap->type != CHEAP) { + HError(8992, "CreateCache: Only CHEAP is supported for cache"); + } + /* check the correctness of the cache */ + if (obs == NULL) { + HError(8900, "CreateCache: NULL observation pointer"); + } + if ((obs->pk & BASEMASK) == DISCRETE || (obs->pk & HASVQ)) { + HError(8901, "CreateCache: VQ feature is not supported"); + } + if (streamIdx <= 0 || streamIdx > obs->swidth[0]) { + HError(8990, "CreateCache: Illegal stream index"); + } + /* initiate the cache structure first */ + cache = (DataCache *) New(heap, sizeof(DataCache)); + /* 0. set cmem and revisit */ + cache->cmem = heap; + cache->revisit = FALSE; + /* 1. set frmDim */ + cache->frmDim = obs->swidth[streamIdx]; + /* 2. set cacheSamples */ + cache->cacheSamples = MAX(cacheSamples, defaultCacheSamples); + /* 3. set tUttNum */ + cache->tUttNum = scpCnt; + /* 4. set nxtUttPos */ + cache->nxtUttPos = 0; + /* 5. initialise uttElems */ + cache->uttElems = (UttElem *) New(cache->cmem, cache->tUttNum * sizeof(UttElem)); + memset(cache->uttElems, 0, cache->tUttNum * sizeof(UttElem)); + /* 6. set visitKind */ + cache->visitKind = visitKind; + /* 7. stUttPos == edUttPos means nothing loaded yet */ + cache->stUttPos = 0; + cache->edUttPos = 0; + /* 8. initialise uttOrder */ + cache->uttOrder = (int *) New(cache->cmem, cache->tUttNum * sizeof(int)); + /* 9. set frmNum and tFrmNum */ + cache->frmNum = 0; + cache->tFrmNum = 0; + /* 10. initialise frmOrder */ + cache->fvLen = 0; + cache->frmOrder = NULL; + /* 11. set order ptr */ + /*cache->orderPtr = -1;*/ + cache->orderPtr = 0; + /* 12. initialise the frmPtrs */ + cache->batchSamples = GetNBatchSamples(); + if (visitKind == FRMVK) { + cache->ptrNum = 0; + } + else if (visitKind == PLNONEVK || visitKind == PLUTTVK || visitKind == PLUTTFRMVK) { + /* TODO: add some safety check for batch and cache size */ + cache->ptrNum = cache->batchSamples; + } + else { + cache->ptrNum = 1; + } + cache->frmPtrs = (FrmIndex *) New(cache->cmem, cache->ptrNum * sizeof(FrmIndex)); + for (i = 0; i < cache->ptrNum; ++i) { + cache->frmPtrs[i].uttIdx = -1; + cache->frmPtrs[i].frmIdx = -1; + } + /* 13. basic label structure */ + /*cache->labelInfo = labelInfo;*/ + if (labelInfo != NULL) { + cache->labelInfo = (LabelInfo *) New(cache->cmem, sizeof(LabelInfo)); + memcpy(cache->labelInfo, labelInfo, sizeof(LabelInfo)); + } + else { + cache->labelInfo = NULL; + } + /* 14. initialise batLen and frmBatch */ + cache->batLen = 0; + cache->frmBatch = (FrmIndex *) New(cache->cmem, cache->batchSamples * sizeof(FrmIndex)); + /* cz277 - semi */ + /*if (visitKind == PLNONEVK || visitKind == PLUTTVK || visitKind == PLUTTFRMVK) { + cache->CMDVecPL = (int *) New(cache->cmem, cache->batchSamples * sizeof(int)); + } + else { + cache->CMDVecPL = NULL; + }*/ + if (visitKind == FRMVK) { + cache->CMDVecPL = NULL; + } + else { + cache->CMDVecPL = (int *) New(cache->cmem, cache->batchSamples * sizeof(int)); + } + + /* set the auxiliary structures */ + /* 1. set script file */ + cache->scpFile = scpFile; + /* 2. set the HMMSet pointer */ + cache->hmmSet = hset; + /* 3. initilise parmBuf */ + /*cache->parmBuf = NULL;*/ + /* 4. set obs */ + cache->obs = obs; + /* 5. set streamIdx */ + cache->streamIdx = streamIdx; + /* set outLayer and labMat */ + cache->outLayer = hset->annSet->outLayers[streamIdx]; + /*cache->labMatMapSum = NULL;*/ + if ((labelInfo != NULL) && (labelInfo->labelKind & FEALK) != 0) { + cache->labVec = NULL; + cache->labMat = cache->outLayer->trainInfo->labMat; + } + else if ((labelInfo != NULL) && (labelInfo->labelKind & LABLK) != 0) { + cache->labVec = CreateIntVec(&gcheap, cache->batchSamples); + cache->labMat = cache->outLayer->trainInfo->labMat; + } + else { + cache->labVec = NULL; + cache->labMat = NULL; + } + /* 6. set saveUttName */ + /*if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK && saveUttName) + HError(9999, "CreateCache: SaveUttName is only possible to be true for UTT series");*/ + cache->saveUttName = saveUttName; + /* 7. set xfInfo */ + cache->xfInfo = xfInfo; + + return cache; +} + +/* update the cache, when doing HMMSet reload */ +void ResetCacheHMMSetCfg(DataCache *cache, HMMSet *hset) { + if (cache->hmmSet != hset) + HError(8990, "ResetCacheConfig: New hset address does not equal to previous"); + /* reset hmmSet */ + /* cache->hmmSet = hset; */ + /* reset outLayer */ + cache->outLayer = hset->annSet->outLayers[cache->streamIdx]; + /* reset labMat */ + cache->labMat = cache->outLayer->trainInfo->labMat; +} + +/* A function to release all current loaded utterances */ +static void CleanCache(DataCache *cache) { + int i; + + for (i = cache->stUttPos; i < cache->edUttPos; ++i) + UnloadOneUtt(cache, i); +} + +/* reset to reuse the cache */ +void ResetCache(DataCache *cache) { + /* set revisit */ + cache->revisit = TRUE; + /* release the rest loaded utterances */ + if (need2Unload) { + CleanCache(cache); + } + /* reset frame items */ + if (cache->frmOrder != NULL) { + Dispose(cache->cmem, cache->frmOrder); + cache->frmOrder = NULL; + cache->fvLen = 0; + } + if (need2Unload) { + cache->frmNum = 0; + cache->tFrmNum = 0; + } + cache->batLen = 0; + /* reset utterance items */ + if (need2Unload) { + cache->nxtUttPos = 0; + } + /*memset(cache->uttElems, 0, cache->tUttNum * sizeof(UttElem));*/ + cache->stUttPos = 0; + cache->edUttPos = 0; + /* reset file handler */ + if (need2Unload) { + rewind(cache->scpFile); + } + /* initialise the cache */ + /*InitCache(cache);*/ +} + +/* A function to release the whole cache */ +void FreeCache(DataCache *cache) { + /* release the rest loaded utterances */ + CleanCache(cache); + /* release uttElems */ + Dispose(cache->cmem, cache->uttElems); + /* release uttOrder */ + Dispose(cache->cmem, cache->uttOrder); + /* release frmPtrs */ + Dispose(cache->cmem, cache->frmPtrs); + /* release frmBatch */ + Dispose(cache->cmem, cache->frmBatch); + /* cz277 - semi, release CMDVecPL */ + if (cache->CMDVecPL != NULL) { + Dispose(cache->cmem, cache->CMDVecPL); + } + /* release labelInfo */ + if (cache->labelInfo != NULL) { + Dispose(cache->cmem, cache->labelInfo); + } +} + +/* cz277 - 150811 */ +char *MakeNameNMatRPL(char *curSpkr, char *tgtMacro, char *RPLName) { + char buf[MAXSTRLEN]; + + strcpy(buf, tgtMacro); + strcat(buf, "+"); + strcat(buf, curSpkr); + strcpy(RPLName, buf); + + return RPLName; +} + +/* cz277 - 150811 */ +char *MakeNameNVecRPL(char *curSpkr, char *tgtMacro, char *RPLName) { + char buf[MAXSTRLEN]; + + strcpy(buf, tgtMacro); + strcat(buf, "+"); + strcat(buf, curSpkr); + strcpy(RPLName, buf); + + return RPLName; +} + +/* cz277 - xform */ +static void LoadOneUttNMatRPLs(HMMSet *hset, UttElem *uttElem) { + int i; + Boolean maskMatch; + char curSpkr[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NMatBundle *bundle; + + /* handle input replaceable parts */ + i = 0; + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + if (maskMatch == FALSE) + HError(8919, "LoadOneUttNMatRPLs: %s does not match %s", curRPLInfo->inRPLMask, uttElem->uttName); + MakeNameNMatRPL(curSpkr, curRPLInfo->id->name, curRPLInfo->cacheInSpkr); + MakeFN(curRPLInfo->cacheInSpkr, NULL, curRPLInfo->inRPLExt, curMacroName); + MakeFN(curSpkr, NULL, curRPLInfo->inRPLExt, curFN); + bundle = LoadOneNMatRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName); + if (bundle == NULL) + HError(8919, "LoadOneUttNMatRPLs: %s does not have replaceable matrix %s", uttElem->uttName, curMacroName); + AugHostNMatBundleByNMatBundle(hset->hmem, curRPLInfo->curNMat, bundle); + /*uttElem->curUttNMatRPLs[i] = LoadOneNMatRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName);*/ + uttElem->curUttNMatRPLs[i] = bundle; + if (uttElem->curUttNMatRPLs[i]->variables->rowNum != curRPLInfo->curNMat->variables->rowNum || + uttElem->curUttNMatRPLs[i]->variables->colNum != curRPLInfo->curNMat->variables->colNum) + HError(8922, "LoadOneUttNMatRPLs: %s matrix dim inconsistent %s", uttElem->uttName, curMacroName); + ++i; + curRPLInfo = curRPLInfo->nextInfo; + } +} + +static void LoadOneUttNVecRPLs(HMMSet *hset, UttElem *uttElem) { + int i; + Boolean maskMatch; + char curSpkr[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NVecBundle *bundle; + + /* handle input replaceable parts */ + i = 0; + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + if (maskMatch == FALSE) + HError(8919, "LoadOneUttNVecRPLs: %s does not match %s", curRPLInfo->inRPLMask, uttElem->uttName); + MakeNameNVecRPL(curSpkr, curRPLInfo->id->name, curRPLInfo->cacheInSpkr); + MakeFN(curRPLInfo->cacheInSpkr, NULL, curRPLInfo->inRPLExt, curMacroName); + MakeFN(curSpkr, NULL, curRPLInfo->inRPLExt, curFN); + bundle = LoadOneNVecRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName); + if (bundle == NULL) + HError(8919, "LoadOneUttNVecRPLs: %s does not have replaceable vector %s", uttElem->uttName, curMacroName); + AugHostNVecBundleByNVecBundle(hset->hmem, curRPLInfo->curNVec, bundle); + /*uttElem->curUttNVecRPLs[i] = LoadOneNVecRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName);*/ + uttElem->curUttNVecRPLs[i] = bundle; + if (uttElem->curUttNVecRPLs[i]->variables->vecLen != curRPLInfo->curNVec->variables->vecLen) + HError(8922, "LoadOneUttNVecRPLs: %s matrix dim inconsistent %s", uttElem->uttName, curMacroName); + ++i; + curRPLInfo = curRPLInfo->nextInfo; + } +} + + +/* cz277 - xform */ +void SaveAllNMatRPLs(HMMSet *hset, FILE *script) { + Boolean maskMatch; + char uttName[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NMatBundle *bundle; + + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + strcpy(curRPLInfo->cacheInSpkr, ""); + curRPLInfo = curRPLInfo->nextInfo; + } + /* for each word in the scp file, output when speaker change happens */ + rewind(script); + while (GetNextScpWord(script, uttName) != NULL) { + /* output the replaceable matrices */ + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curRPLInfo->curInSpkr, uttName); + if (maskMatch == FALSE) + HError(8919, "SaveAllNMatRPLs: Input mask %s does not match the name %s", curRPLInfo->inRPLMask, uttName); + if (strcmp(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr) == 0) { + MakeNameNMatRPL(curRPLInfo->curInSpkr, curRPLInfo->id->name, curMacroName); + bundle = LoadOneNMatRPL(hset, NULL, NULL, curMacroName); + MakeFN(curRPLInfo->curInSpkr, curRPLInfo->outRPLDir, curRPLInfo->outRPLExt, curFN); + SaveOneNMatRPL(hset, bundle, curFN, curRPLInfo->saveBinary); + strcpy(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr); + } + curRPLInfo = curRPLInfo->nextInfo; + } + } +} + +void SaveAllNVecRPLs(HMMSet *hset, FILE *script) { + Boolean maskMatch; + char uttName[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NVecBundle *bundle; + + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + strcpy(curRPLInfo->cacheInSpkr, ""); + curRPLInfo = curRPLInfo->nextInfo; + } + /* for each word in the scp file, output when speaker change happens */ + rewind(script); + while (GetNextScpWord(script, uttName) != NULL) { + /* output the replaceable matrices */ + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curRPLInfo->curInSpkr, uttName); + if (maskMatch == FALSE) + HError(8919, "SaveAllNVecRPLs: Input mask %s does not match the name %s", curRPLInfo->inRPLMask, uttName); + if (strcmp(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr) == 0) { + MakeNameNVecRPL(curRPLInfo->curInSpkr, curRPLInfo->id->name, curMacroName); + bundle = LoadOneNVecRPL(hset, NULL, NULL, curMacroName); + MakeFN(curRPLInfo->curInSpkr, curRPLInfo->outRPLDir, curRPLInfo->outRPLExt, curFN); + SaveOneNVecRPL(hset, bundle, curFN, curRPLInfo->saveBinary); + strcpy(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr); + } + curRPLInfo = curRPLInfo->nextInfo; + } + } +} + +/* cz277 - xform */ +void InstallOneUttNMatRPLs(UttElem *uttElem) { + int i; + RPLInfo *curRPLInfo; + char curSpkr[MAXSTRLEN], curFN[MAXSTRLEN]; + + i = 0; + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + MakeFN(curSpkr, curRPLInfo->inRPLDir, curRPLInfo->inRPLExt, curFN); + if (trace & T_RPL) + printf("Using replaceable matrix for %s from %s\n", curRPLInfo->id->name, curFN); + SetNMatBundleByNMatBundle(uttElem->curUttNMatRPLs[i], curRPLInfo->curNMat); + curRPLInfo = curRPLInfo->nextInfo; + ++i; + } +} + +void InstallOneUttNVecRPLs(UttElem *uttElem) { + int i; + RPLInfo *curRPLInfo; + char curSpkr[MAXSTRLEN], curFN[MAXSTRLEN]; + + i = 0; + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + MakeFN(curSpkr, curRPLInfo->inRPLDir, curRPLInfo->inRPLExt, curFN); + if (trace & T_RPL) + printf("Using replaceable vector for %s from %s\n", curRPLInfo->id->name, curFN); + SetNVecBundleByNVecBundle(uttElem->curUttNVecRPLs[i], curRPLInfo->curNVec); + curRPLInfo = curRPLInfo->nextInfo; + ++i; + } +} + +void ResetNMatRPL() { + RILink curRPLInfo; + + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + if (curRPLInfo->curNMat->variables->matElems != curRPLInfo->savNMat.variables->matElems) + SetNMatBundleByNMatBundle(&curRPLInfo->savNMat, curRPLInfo->curNMat); + curRPLInfo = curRPLInfo->nextInfo; + } +} + +void ResetNVecRPL() { + RILink curRPLInfo; + + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + if (curRPLInfo->curNVec->variables->vecElems != curRPLInfo->savNVec.variables->vecElems) + SetNVecBundleByNVecBundle(&curRPLInfo->savNVec, curRPLInfo->curNVec); + curRPLInfo = curRPLInfo->nextInfo; + } +} + +/* load one utterance into cache, at dstPos (usually nxtUttPos) */ +static ReturnStatus LoadOneUtt(DataCache *cache, int dstPos) { + int i, j, len, dim, sIdx, lsIdx = 0, transcnt; /* cz277 - trans */ + long stIdx, edIdx, curIdx; + char feaBuf[MAXSTRLEN], spkBuf[MAXSTRLEN], labBuf[MAXSTRLEN], hmmBuf[MAXSTRLEN]; + char fnBuf[MAXSTRLEN], pathBuf[MAXSTRLEN], latBuf[MAXSTRLEN]; + FILE *filePtr; + Boolean isPipe, isPhoneLab; /* cz277 - trans */ + Observation *obs; + UttElem *uttElem; + float *dstPtr; + Vector x; + Transcription *trans; + LLink llink; + MLink macDef; + StreamElem *streamElem; + HLink hlink; + ParmBuf parmBuf; + BufferInfo pbInfo; + LabId hmmId = NULL, lhmmId; /* cz277 - trans */ + Vector tmpVec; + /* cz277 - trans */ + TrAcc *ta; + + /* check the destinate position */ + if (dstPos >= cache->tUttNum) + return FAIL; + /* if no word to read in the script */ + if (GetNextScpWord(cache->scpFile, feaBuf) == NULL) + HError(8913, "LoadOneUtt: Fail to read the next word in the script"); + /* monitor speaker change */ + if (cache->xfInfo != NULL) + UpdateSpkrStats(cache->hmmSet, cache->xfInfo, feaBuf); + /* reset the heap for the next utterance */ + ResetHeap(&pbufStack); + /* open the next utterance */ + parmBuf = OpenBuffer(&pbufStack, feaBuf, 0, UNDEFF, TRI_UNDEF, TRI_UNDEF); + if (!parmBuf) + HError(8910, "LoadOneUtt: Open input data failed"); + /* prepare to load the data */ + uttElem = &cache->uttElems[dstPos]; + if (cache->saveUttName) + uttElem->uttName = CopyString(cache->cmem, feaBuf); + uttElem->uttLen = ObsInBuffer(parmBuf); + uttElem->frmUsed = 0; /* the usage counter of the frames */ + /* load all frames into cache */ + len = uttElem->uttLen; + dim = cache->frmDim; + obs = cache->obs; + uttElem->frmMat = (float *) New(cache->cmem, len * dim * sizeof(float)); + dstPtr = uttElem->frmMat; + for (i = 0; i < len; ++i) { + ReadAsTable(parmBuf, i, obs); + x = obs->fv[cache->streamIdx]; + /* TODO: apply compFX form */ + /* ApplyCompXForm ??? */ + for (j = 1; j <= dim; ++j, ++dstPtr) { /* just copy the data */ + if (isnan(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has nan value", uttElem->uttName, i, j); + if (isinf(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has inf value", uttElem->uttName, i, j); + *dstPtr = x[j]; + } + } + /* cz277 - aug */ + /* load the augmented feature vectors */ + for (i = 1; i <= MAXAUGFEAS; ++i) { + uttElem->augFeaVec[i] = NULL; + if (cache->streamIdx == 1) { + tmpVec = GetAugFeaVector(parmBuf, i); + if (tmpVec != NULL) { + uttElem->augFeaVec[i] = CreateVector(cache->cmem, VectorSize(tmpVec)); + CopyVector(tmpVec, uttElem->augFeaVec[i]); + } + } + } + + /* close current buffer */ + CloseBuffer(parmBuf); + /* set frmOrder */ + if (cache->visitKind == PLUTTFRMVK || cache->visitKind == UTTFRMVK) { + /* initialise */ + uttElem->frmOrder = (int *) New(cache->cmem, len * sizeof(int)); + for (i = 0; i < len; ++i) + uttElem->frmOrder[i] = i; + /* shuffle the order array */ + ShuffleSegment(uttElem->frmOrder, 0, len, sizeof(int)); + } + else + uttElem->frmOrder = NULL; + /* update the frame count in cache */ + cache->frmNum += len; + cache->tFrmNum += len; + /* save the xforms */ + /*if (cache->xfInfo != NULL && cache->xfInfo->inXForm != NULL) { + uttElem->inXForm = (AdaptXForm *) New(cache->cmem, sizeof(AdaptXForm)); + memcpy(uttElem->inXForm, cache->xfInfo->inXForm, sizeof(AdaptXForm)); + } + else { + uttElem->inXForm = NULL; + } + if (cache->xfInfo != NULL && cache->xfInfo->paXForm != NULL) { + uttElem->paXForm = (AdaptXForm *) New(cache->cmem, sizeof(AdaptXForm)); + memcpy(uttElem->paXForm, cache->xfInfo->paXForm, sizeof(AdaptXForm)); + } + else { + uttElem->paXForm = NULL; + }*/ + /* cz277 - xform */ + uttElem->inXForm = cache->xfInfo->inXForm; + uttElem->paXForm = cache->xfInfo->paXForm; + /* cz277 - 150811 */ + uttElem->curUttNMatRPLs = NULL; + uttElem->curUttNVecRPLs = NULL; + i = GetNumNMatRPLInfo(); + j = GetNumNVecRPLInfo(); + if (i > 0) { + uttElem->curUttNMatRPLs = (NMatBundle **) New(cache->cmem, i * sizeof(NMatBundle *)); + memset(uttElem->curUttNMatRPLs, 0, i * sizeof(NMatBundle *)); + LoadOneUttNMatRPLs(cache->hmmSet, uttElem); + } + if (j > 0) { + uttElem->curUttNVecRPLs = (NVecBundle **) New(cache->cmem, j * sizeof(NVecBundle *)); + memset(uttElem->curUttNVecRPLs, 0, j * sizeof(NVecBundle *)); + LoadOneUttNVecRPLs(cache->hmmSet, uttElem); + } + + /* set the labels */ + if (cache->labelInfo != NULL) { + /* process feature files */ + uttElem->flabMat = NULL; + if ((cache->labelInfo->labelKind & FEALK) != 0) { /* load feature files */ + if (GetNextScpWord(cache->labelInfo->scpFLab, labBuf) == NULL) + HError(8913, "LoadOneUtt: Fail to acquire next feature type label path"); + parmBuf = OpenBuffer(&pbufStack, labBuf, 0, UNDEFF, TRI_UNDEF, TRI_UNDEF); + if (!parmBuf) + HError(8910, "LoadOneUtt: Open feature type label data failed"); + if (uttElem->uttLen != ObsInBuffer(parmBuf)) + HError(8924, "LoadOneUtt: Inconsistent utterance lengths %s vs %s", feaBuf, labBuf); + dim = cache->labelInfo->dimFLab; + uttElem->flabMat = (float *) New(cache->cmem, len * dim * sizeof(float)); + dstPtr = uttElem->flabMat; + obs = cache->labelInfo->obsFLab; + for (i = 0; i < len; ++i) { + ReadAsTable(parmBuf, i, obs); + x = obs->fv[cache->streamIdx]; + for (j = 1; j <= dim; ++j, ++dstPtr) { + if (isnan(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has nan value", labBuf, i, j); + if (isinf(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has inf value", labBuf, i, j); + *dstPtr = x[j]; + } + } + CloseBuffer(parmBuf); + } + /* process lab files */ + uttElem->labIdxes = NULL; + if ((cache->labelInfo->labelKind & LABLK) != 0) { /* load lab files */ + if (cache->labelInfo->labFileMask != NULL) { + if (!MaskMatch(cache->labelInfo->labFileMask, spkBuf, feaBuf)) { + HError(8919, "LoadOneUtt: Mask %s has no match with segment %s", cache->labelInfo->labFileMask, feaBuf); + } + MakeFN(spkBuf, cache->labelInfo->labDir, cache->labelInfo->labExt, labBuf); + } + else { + MakeFN(feaBuf, cache->labelInfo->labDir, cache->labelInfo->labExt, labBuf); + } + ResetHeap(&transStack); + trans = LOpen(&transStack, labBuf, UNDEFF); + /* convert trans to labIdxes */ + uttElem->labIdxes = (int *) New(cache->cmem, len * sizeof(int)); + i = 0; + for (llink = trans->head->head->succ; llink->succ != NULL; llink = llink->succ) { + /* cz277 - trans */ + lhmmId = hmmId; + lsIdx = sIdx; + + ExtractState(llink->labid->name, hmmBuf, &sIdx); /* support hmm state by hacking labid */ + if (sIdx == 0) { + hmmId = llink->labid; + /* cz277 - trans */ + isPhoneLab = TRUE; + } + else { + hmmId = GetLabId(hmmBuf, FALSE); + /* cz277 - trans */ + isPhoneLab = FALSE; + } + if (hmmId == NULL) { + HError(8925, "LoadOneUtt: Failed to find model for label \"%s\" given in the input MLF file", hmmBuf); + } + if ((macDef = FindMacroName(cache->hmmSet, 'l', hmmId)) == NULL) { + HError(8925, "LoadOneUtt: Unknown label %s", hmmId->name); + } + hlink = (HLink) macDef->structure; + if (sIdx == 0) { /* if it is a phone label */ + /* check whether all states of that hmm share the same ANN target */ + for (j = 3; j < hlink->numStates; ++j) { + if ((hlink->svec[2].info->pdf[cache->streamIdx].targetSrc != hlink->svec[j].info->pdf[cache->streamIdx].targetSrc) || + (hlink->svec[2].info->pdf[cache->streamIdx].targetIdx != hlink->svec[j].info->pdf[cache->streamIdx].targetIdx)) { + HError(8925, "LoadOneUtt: Phone label in the label file does not match the state level definition"); + } + } + sIdx = 2; + } + else if (sIdx <= 1 || sIdx >= hlink->numStates) { + HError(8925, "LoadOneUtt: Illegal state index in the label file"); + } + /* get the stream element pointer */ + streamElem = &hlink->svec[sIdx].info->pdf[cache->streamIdx]; + /* check the output layer source */ + if (streamElem->targetSrc != cache->hmmSet->annSet->outLayers[cache->streamIdx]) { + HError(8926, "LoadOneUtt: Only one output layer is allowed in one stream"); + } + /* get the frame indexes */ + GetBufferInfo(parmBuf, &pbInfo); + stIdx = (long) (llink->start / pbInfo.tgtSampRate + 0.5); + edIdx = (long) (llink->end / pbInfo.tgtSampRate + 0.5); + if (stIdx > edIdx) { + HError(8927, "LoadOneUtt: Empty segment"); + } + /* cz277 - trans */ + if ((cache->labelInfo->uFlags & UPTRANS) != 0) { + ta = (TrAcc *) GetHook(hlink->transP); + if (isPhoneLab) { + transcnt = (int) ((edIdx - stIdx) / (hlink->numStates - 2.0) + 0.5); + transcnt -= 1; + lsIdx = 1; + for (j = 2; j <= hlink->numStates; ++j) { + ta->occ[lsIdx] += 1; + ta->tran[lsIdx][j] += 1; + if (transcnt > 0) { + ta->occ[j] += transcnt; + ta->tran[j][j] += transcnt; + } + lsIdx = j; + } + } + else { + if (lhmmId != hmmId) { + lsIdx = 1; + } + ta->occ[lsIdx] += 1; + ta->tran[lsIdx][sIdx] += 1; + transcnt = edIdx - stIdx - 1; + ta->occ[sIdx] += transcnt; + if (transcnt > 0) { + ta->tran[sIdx][sIdx] += transcnt; + } + } + } + + if ((cache->labelInfo->uFlags & UPTARGETPEN) != 0) { + streamElem->occAcc += edIdx - stIdx; + } + for (curIdx = stIdx; curIdx < edIdx; ++curIdx, ++i) { + if (curIdx != i) { + HError(8927, "LoadOneUtt: Discontinuous Utterance"); + } + uttElem->labIdxes[i] = streamElem->targetIdx - 1; /* targetIdx >= 1, labIdxes >= 0 */ + } + } + if (i != uttElem->uttLen) { + HError(8924, "LoadOneUtt: %s Feature and Utterance lengths (%i, %i) do not match", uttElem->uttName, i, uttElem->uttLen); + } + } + /* process lattice files */ + if (((cache->labelInfo->labelKind & LATLK) != 0) && (cache->streamIdx == 1)) { /* load lattice files */ + /*CreateHeap(&uttElem->latStack, "latStore", MSTAK, 1, 1.0, 5000, 500000);*/ + uttElem->numInDen = NULL; + for (i = 0; i < MAXLATSUTT; ++i) { + uttElem->denLats[i] = NULL; + uttElem->numLats[i] = NULL; + } + /* set basic lattice file mask */ + if (cache->labelInfo->latFileMask != NULL) { + if (!MaskMatch(cache->labelInfo->latFileMask, latBuf, feaBuf)) { + HError(8928, "LoadOneUtt: Mask %s has no match with segment %s", cache->labelInfo->latFileMask, feaBuf); + } + } + else { + strcpy(latBuf, feaBuf); + } + /* load denorminator lattices */ + if (cache->labelInfo->nDenLats > 0) { + for (i = 0; i < cache->labelInfo->nDenLats; ++i) { + if (cache->labelInfo->denLatSubDirPat[0]) { + if (!MaskMatch(cache->labelInfo->denLatSubDirPat, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has not match with segment %s", cache->labelInfo->denLatSubDirPat, latBuf); + } + MakeFN(spkBuf, cache->labelInfo->denLatDir[i], NULL, pathBuf); + } + else { + strcpy(pathBuf, cache->labelInfo->denLatDir[i]); + } + if (cache->labelInfo->latMaskDen != NULL) { + if (!MaskMatch(cache->labelInfo->latMaskDen, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has not match with segment %s", cache->labelInfo->latMaskDen, latBuf); + } + MakeFN(spkBuf, pathBuf, NULL, fnBuf); + strcpy(pathBuf, fnBuf); + } + if (cache->labelInfo->useLLF) { + uttElem->denLats[i] = GetLattice(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + /*GetLatticeNoRet(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE, &uttElem->denLats[i]);*/ + } + else { + MakeFN(latBuf, pathBuf, cache->labelInfo->latExt, fnBuf); + filePtr = FOpen(fnBuf, NetFilter, &isPipe); + if (!filePtr) { + HError(8910, "LoadOneUtt: Could not open file %s", fnBuf); + } + /* printf("Reading lattice from file: %s\n", fnBuf); fflush(stdout); */ + uttElem->denLats[i] = ReadLattice(filePtr, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + /*uttElem->denLats[i] = ReadLattice(filePtr, &uttElem->latStack, cache->labelInfo->vocab, FALSE, TRUE);*/ + FClose(filePtr, isPipe); + } + } + } + /* load numerator lattices */ + if (cache->labelInfo->nNumLats > 0) { + uttElem->numInDen = (Boolean *) New(cache->cmem, cache->labelInfo->nNumLats * sizeof(Boolean)); + /*uttElem->numInDen = (Boolean *) New(&uttElem->latStack, cache->labelInfo->nNumLats * sizeof(Boolean));*/ + /*memset(uttElem->numInDen, 1, cache->labelInfo->nNumLats * sizeof(Boolean));*/ + for (i = 0; i < cache->labelInfo->nNumLats; ++i) { + if (cache->labelInfo->numLatSubDirPat[0]) { + if (!MaskMatch(cache->labelInfo->numLatSubDirPat, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has no match with segment %s", cache->labelInfo->numLatSubDirPat, latBuf); + } + MakeFN(spkBuf, cache->labelInfo->numLatDir[i], NULL, pathBuf); + } + else { + strcpy(pathBuf, cache->labelInfo->numLatDir[i]); + } + if (cache->labelInfo->latMaskNum != NULL) { + if (!MaskMatch(cache->labelInfo->latMaskNum, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has not match with segment %s", cache->labelInfo->latMaskNum, latBuf); + } + MakeFN(spkBuf, pathBuf, NULL, fnBuf); + strcpy(pathBuf, fnBuf); + } + if (cache->labelInfo->useLLF) { + uttElem->numLats[i] = GetLattice(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + /*GetLatticeNoRet(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE, &uttElem->numLats[i]);*/ + } + else { + MakeFN(latBuf, pathBuf, cache->labelInfo->latExt, fnBuf); + filePtr = FOpen(fnBuf, NetFilter, &isPipe); + if (!filePtr) { + HError(8910, "LoadOneUtt: Could not open file %s", fnBuf); + } + uttElem->numLats[i] = ReadLattice(filePtr, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + FClose(filePtr, isPipe); + } + /* to include this num lattice as a den lattice or not */ + uttElem->numInDen[i] = TRUE; + if (cache->labelInfo->incNumInDen == TRUE) { + for (j = 0; j < cache->labelInfo->nDenLats; ++j) { + if (LatInLat(uttElem->numLats[i], uttElem->denLats[j])) { + uttElem->numInDen[i] = FALSE; + break; + } + } + } + else { + uttElem->numInDen[i] = FALSE; + } + } + } + } + } + + return SUCCESS; +} + +/* cz277 - mtload */ +/* fill the entire cache in one go */ +static int FillCacheSGT(DataCache *cache) { + int newUttCnt = 0; + + if (cache->revisit == TRUE && need2Unload == FALSE) { + return newUttCnt; + } + + /* load utterance by utterance until the cache is full */ + while (cache->nxtUttPos < cache->tUttNum && cache->frmNum < cache->cacheSamples) { + /* load the next utterance */ + if (LoadOneUtt(cache, cache->nxtUttPos++) < SUCCESS) { + HError(8913, "FillCacheSGT: Load next utterance failed"); + } + else { + ++newUttCnt; + } + } + return newUttCnt; +} + +/* cz277 - mtload */ +/*static void *FillCacheEXT(void *arg) { + int newUttCnt = 0; + DataCache *cache; + + cache = (DataCache *) arg; + if (cache->revisit == TRUE && need2Unload == FALSE) + pthread_exit(NULL); + + while (cache->nxtUttPos < cache->tUttNum && cache->frmNum < cache->cacheSamples) { + if (LoadOneUtt(cache, cache->nxtUttPos++) < SUCCESS) { + HError(8913, "FillCacheEXT: Load next utterance failed"); + } + else { + ++newUttCnt; + } + } + pthread_exit(NULL); +}*/ + +/* cz277 - mtload */ +void LoadCacheData(DataCache *cache) { + /*int ret; + + if (extThreadLoad == TRUE) { + cache->firstLoad = TRUE; + ret = pthread_create(&cache->extThread, NULL, FillCacheEXT, (void *) cache); + if (ret != 0) { + HError(8929, "LoadCacheData: Fail to create the extra thread for cache loading"); + } + } + else { + ret = FillCacheSGT(cache); + }*/ + FillCacheSGT(cache); + +} + +/* need to make ensure that all frames have been used */ +static void UnloadOneUtt(DataCache *cache, int dstPos) { + UttElem *uttElem; + int i; + + uttElem = &cache->uttElems[dstPos]; + /* check if all frames have been used */ + if (uttElem->frmUsed != uttElem->uttLen) + HError(8993, "UnloadOneUtt: all frames should be used once before unload"); + /* if has been unloaded, it has no need to unload */ + if (uttElem->frmMat == NULL) + return; + /* update the total number of frame cached */ + cache->frmNum -= uttElem->uttLen; + /* release the space for frame matrix */ + Dispose(cache->cmem, uttElem->frmMat); + /*free(uttElem->frmMat);*/ + uttElem->frmMat = NULL; + /* cz277 - aug */ + /* release the space for augmented feature vectors */ + for (i = 1; i <= MAXAUGFEAS; ++i) + if (uttElem->augFeaVec[i] != NULL) + Dispose(cache->cmem, uttElem->augFeaVec[i]); + /* release the space for utterance name */ + if (uttElem->uttName != NULL) + Dispose(cache->cmem, uttElem->uttName); + /* release the space for frame order array */ + if (uttElem->frmOrder != NULL) { + Dispose(cache->cmem, uttElem->frmOrder); + uttElem->frmOrder = NULL; + } + /* cz277 - 150811 */ + if (uttElem->curUttNMatRPLs != NULL) + Dispose(cache->cmem, uttElem->curUttNMatRPLs); + if (uttElem->curUttNVecRPLs != NULL) + Dispose(cache->cmem, uttElem->curUttNVecRPLs); + /* unload the label */ + if (cache->labelInfo != NULL) { + if ((cache->labelInfo->labelKind & FEALK) != 0) + Dispose(cache->cmem, uttElem->flabMat); + if ((cache->labelInfo->labelKind & LABLK) != 0) + Dispose(cache->cmem, uttElem->labIdxes); + /* dispose the xforms */ + /*if (uttElem->inXForm != NULL) { + Dispose(cache->cmem, uttElem->inXForm); + } + if (uttElem->paXForm != NULL) { + Dispose(cache->cmem, uttElem->paXForm); + }*/ + if ((cache->labelInfo->labelKind & LATLK) != 0) { + /* dispose the lattices */ + for (i = 0; i < cache->labelInfo->nNumLats; ++i) + FreeLattice(uttElem->numLats[i]); + for (i = 0; i < cache->labelInfo->nDenLats; ++i) + FreeLattice(uttElem->denLats[i]); + if (uttElem->numInDen != NULL) + Dispose(cache->cmem, uttElem->numInDen); + } + } +} + +static ReturnStatus UpdateUttOrder(DataCache *cache) { + /* if no newly loaded utterances to be indexed */ + if (cache->edUttPos == cache->nxtUttPos) { /* nxtUttPos stops at tUttNum */ + return FAIL; + } + /* update cache->stUttPos */ + cache->stUttPos = cache->edUttPos; + /* update cache->edUttPos */ + cache->edUttPos = cache->nxtUttPos; + + /* shuffle the indexes if needed */ + if (cache->visitKind == UTTFRMVK || cache->visitKind == UTTVK || cache->visitKind == PLUTTVK || cache->visitKind == PLUTTFRMVK) { + ShuffleSegment(cache->uttOrder, cache->stUttPos, cache->edUttPos, sizeof(int)); + } + + return SUCCESS; +} + +/* useful for FRMVK only */ +/* when usinf this, the rest frames in previous cache are assumed to + have been loaded into the mini batch, so no need to take care of + previous frames +*/ +static ReturnStatus UpdateFrmOrder(DataCache *cache) { + size_t i, j, k; + + /* first, make sure frame visit index is needed */ + if (cache->visitKind != FRMVK) { + return FAIL; + } + /* second, get the frame visit length */ + cache->fvLen = 0; + for (i = cache->stUttPos; i < cache->edUttPos; ++i) { + cache->fvLen += cache->uttElems[i].uttLen; + } + /* third, malloc the data */ + if (cache->frmOrder != NULL) { + Dispose(cache->cmem, cache->frmOrder); + } + cache->frmOrder = (FrmIndex *) New(cache->cmem, cache->fvLen * sizeof(FrmIndex)); + /* fourth, initialise frmVisit */ + for (i = cache->stUttPos, k = 0; i < cache->edUttPos; ++i) { + for (j = 0; j < cache->uttElems[i].uttLen; ++j, ++k) { + cache->frmOrder[k].uttIdx = i; + cache->frmOrder[k].frmIdx = j; + } + } + /* shuffle the frames in the entire index */ + ShuffleSegment(cache->frmOrder, 0, cache->fvLen, sizeof(FrmIndex)); + /* reset orderPtr */ + cache->orderPtr = 0; + + return SUCCESS; +} + +/* initialise the cache, is used only once */ +void InitCache(DataCache *cache) { + int i; + + /* init cache order */ + for (i = 0; i < cache->tUttNum; ++i) { + cache->uttOrder[i] = i; + } + /* cz277 - mtload */ + /* fill the buffer first */ + FillCacheSGT(cache); + /* initialise the uttOrder */ + UpdateUttOrder(cache); + /* init orderPtr */ + cache->orderPtr = 0; + /* initialise frmOrder (optional) and the pointers */ + switch (cache->visitKind) { + case FRMVK: + UpdateFrmOrder(cache); + break; + case NONEVK: + case UTTFRMVK: + case UTTVK: + cache->frmPtrs[0].uttIdx = cache->uttOrder[cache->orderPtr++]; + cache->frmPtrs[0].frmIdx = 0; + break; + case PLNONEVK: + case PLUTTFRMVK: + case PLUTTVK: + for (i = 0; i < cache->ptrNum; ++i) { + /* in case there are not enough utterances in the cache */ + if (cache->orderPtr < cache->edUttPos) { + cache->frmPtrs[i].uttIdx = cache->uttOrder[cache->orderPtr++]; + cache->frmPtrs[i].frmIdx = 0; + } + else { + cache->frmPtrs[i].uttIdx = -1; + cache->frmPtrs[i].frmIdx = -1; + } + } + break; + default: + HError(8991, "InitCache: Unknown visiting order"); + break; + } + /* cz277 - mtload */ + /*if (extThreadLoad == TRUE) { + memset(&cache->extThread, 0, sizeof(pthread_t)); + cache->firstLoad = FALSE; + }*/ +} + +/* only useful for visitKinds other than FRMVK */ +/* frmIdx == cache->uttElems[uttIdx].uttLen will never happen */ +/* if fail to acquire the next utterance, uttIdx == -1 */ +static inline void UpdateFrmPtr(DataCache *cache, FrmIndex *frmPtr) { + int uttIdx; + + /* set each frmPtr */ + uttIdx = frmPtr->uttIdx; + if (uttIdx >= 0 && (frmPtr->frmIdx + 1 < cache->uttElems[uttIdx].uttLen)) { /* get the next frame from the same utterance */ + ++frmPtr->frmIdx; + } + else { /* uttIdx < 0 || frmPtr->frmIdx + 1 == cache->uttElems[uttIdx].uttLen, need to load a new utterance */ + if (cache->orderPtr == cache->tUttNum) { /* no available utterance */ + frmPtr->uttIdx = -1; + frmPtr->frmIdx = -1; + } + else { + if (cache->orderPtr == cache->edUttPos) { /* need to rebuild the order */ + UpdateUttOrder(cache); + } + if (cache->orderPtr < cache->edUttPos) { /* if UpdateUttOrder() succeeded */ + frmPtr->uttIdx = cache->uttOrder[cache->orderPtr++]; + frmPtr->frmIdx = 0; + } + else { /* if no new utt in the cache, disable this frmPtr */ + frmPtr->uttIdx = -1; + frmPtr->frmIdx = -1; + } + } + } +} + + +/* cz277 - split */ +/* copy a frame with its context expansion to form a extended frame */ +static inline void CopyExtFrame2Batch(UttElem *uttElem, int curIdx, FELink feaElem, NFloat *dstPtr) { + int i, srcIdx; + float *srcPtr; +#ifdef DOUBLEANN + int j; +#endif + + /* do context expansion */ + for (i = 1; i <= feaElem->ctxMap[0]; ++i) { + /* cz277 - xform */ + /* no frame could exceed the boundary */ + /*srcIdx = curIdx + feaElem->ctxMap[i]; + if (srcIdx < 0) { + srcIdx = 0; + } + else if (srcIdx >= uttElem->uttLen) { + srcIdx = uttElem->uttLen - 1; + }*/ + srcIdx = ClipInt(0, uttElem->uttLen - 1, curIdx + feaElem->ctxMap[i]); + + /* compute the source address */ + srcPtr = uttElem->frmMat + srcIdx * feaElem->srcDim + feaElem->dimOff; +#ifdef DOUBLEANN + /* copy the frame vector */ + for (j = 0; j < feaElem->feaDim; ++j, ++srcPtr, ++dstPtr) { + /*if (isnan(*srcPtr)) + HError(9999, "CopyExtFrame2Batch: %s, frame no. %d, dim %d has NaN value", uttElem->uttName, curIdx, j); + if (isinf(*srcPtr)) + HError(9999, "CopyExtFrame2Batch: %s, frame no. %d, dim %d has inf value", uttElem->uttName, curIdx, j);*/ + *dstPtr = *srcPtr; + /* TODO: GPU support */ + } +#else + memcpy(dstPtr, srcPtr, feaElem->feaDim * sizeof(float)); + dstPtr += feaElem->feaDim; +#endif + } +} + + +/* fill the batch in the FRM series way */ +static inline Boolean FillBatchFRM(DataCache *cache, int nSamples) { + int i; + Boolean finish = FALSE; + + for (i = 0; i < nSamples; ++i) { + if (cache->orderPtr == cache->fvLen) { /* if need to update frmOrder */ + if (cache->edUttPos == cache->tUttNum) { /* if no more utterance available */ + break; + } + else { /* load more utterance and build new frmOrder */ + if (UpdateUttOrder(cache) == SUCCESS) + UpdateFrmOrder(cache); + else + break; /* will return FALSE, but cache->batLen < batchSamples */ + } + } + /* copy the frame */ + memcpy(&cache->frmBatch[cache->batLen++], &cache->frmOrder[cache->orderPtr++], sizeof(FrmIndex)); + /* update the pointers */ + } + /* if all data are finished */ + if (cache->edUttPos == cache->tUttNum && cache->orderPtr == cache->fvLen) { + finish = TRUE; + } + + return finish; +} + +/* fill the batch in the UTT series way */ +/* load a maximum *uttCnt + 1 utterances into the batch */ +static inline Boolean FillBatchUTT(DataCache *cache, int nSamples, int *uttCnt) { + int i, uttIdx, frmIdx; + UttElem *uttElem; + Boolean finish = FALSE; + + for (i = 0; i < nSamples; ++i) { + /* get current uttIdx and frmIdx */ + uttIdx = cache->frmPtrs[0].uttIdx; + frmIdx = cache->frmPtrs[0].frmIdx; + uttElem = &cache->uttElems[uttIdx]; + /* if need to get the true frame index */ + if (uttElem->frmOrder != NULL) { + frmIdx = uttElem->frmOrder[frmIdx]; + } + /* cz277 - semi */ + if (cache->frmPtrs[0].frmIdx == 0) { + cache->CMDVecPL[i] = 0; + } + else { + cache->CMDVecPL[i] = -1; + } + /* copy the frame */ + memcpy(&cache->frmBatch[cache->batLen++], &cache->frmPtrs[0], sizeof(FrmIndex)); + /* get the FrmIndex for the next frame */ + UpdateFrmPtr(cache, &cache->frmPtrs[0]); + /* indicate fail to acquire the next utterance or the end of the file */ + if (cache->frmPtrs[0].uttIdx < 0) { + --(*uttCnt); + if (cache->orderPtr == cache->tUttNum && frmIdx == uttElem->uttLen - 1) { /* frmIdx before UpdateFrmPtr() */ + finish = TRUE; + break; + } + else { + HError(8913, "FillBatchUTT: Fail to acquire the next frame"); + } + } + else if (cache->frmPtrs[0].uttIdx != uttIdx) { /* switch to a new utterance */ + if (*uttCnt > 0) { + --(*uttCnt); + } + if (*uttCnt == 0) { /* if underfill is allowed and the specified number of utterances have been loaded */ + break; + } + } + } + + return finish; +} + +/* fill the batch in the PLUTT series way */ +static inline Boolean FillBatchPLUTT(DataCache *cache, int nSamples) { + int i, uttIdx, frmIdx, sampCnt, off; + UttElem *uttElem; + Boolean finish = TRUE; + + /* update the (-1, -1) pointers and generate CMDVecPL */ + for (i = cache->batLen, off = 0; i < cache->ptrNum; ++i) { + /* try to update frmPtr[i] */ + while ((i + off < cache->ptrNum) && (cache->frmPtrs[i + off].uttIdx < 0)) { + /* try to assign a new utterance to previous empty frmPtr */ + UpdateFrmPtr(cache, &cache->frmPtrs[i + off]); + if (cache->frmPtrs[i + off].uttIdx < 0) + ++off; + else + break; + } + /* if need to shift frmPtrs */ + if (off > 0) { + if (i + off < cache->ptrNum) { /* cache->frmPtrs[i + off].uttIdx >= 0 */ + cache->frmPtrs[i] = cache->frmPtrs[i + off]; + cache->CMDVecPL[i] = i + off; + } + else { /* if no rest pointer has uttIdx > 0 */ + for (; i < cache->ptrNum; ++i) { + cache->frmPtrs[i].uttIdx = -1; + cache->frmPtrs[i].frmIdx = -1; + cache->CMDVecPL[i] = -1; /* do nothing */ + } + break; + } + } + else { /* off == 0 */ + if (cache->frmPtrs[i].frmIdx == 0) + cache->CMDVecPL[i] = 0; /* clean the context */ + else + cache->CMDVecPL[i] = -1; /* do nothing */ + } + } + /* copy to the batch */ + for (i = cache->batLen, sampCnt = 0; (i < cache->ptrNum) && (cache->frmPtrs[i].uttIdx >= 0); ++i, ++sampCnt) { + /* get current uttIdx and frmIdx */ + uttIdx = cache->frmPtrs[i].uttIdx; + frmIdx = cache->frmPtrs[i].frmIdx; + /* if there's available frame by this frmPtr */ + uttElem = &cache->uttElems[uttIdx]; + /* get the true frame index */ + if (uttElem->frmOrder != NULL) { + frmIdx = uttElem->frmOrder[frmIdx]; + } + /* copy the frame */ + memcpy(&cache->frmBatch[cache->batLen++], &cache->frmPtrs[i], sizeof(FrmIndex)); + /* get the FrmIndex for the next frame */ + UpdateFrmPtr(cache, &cache->frmPtrs[i]); + /* check if there's more frame in the utterance when no more utterance is available */ + if (finish && cache->frmPtrs[i].uttIdx >= 0) /* means need one more batch (uttIdx updated in UpdateFrmPtr())*/ + finish = FALSE; + if (sampCnt == nSamples) + break; + } + if (finish) { + for (; i < cache->ptrNum; ++i) { + if (cache->frmPtrs[i].uttIdx >= 0) { + finish = FALSE; + break; + } + } + } + + return finish; +} + +/* cz277 - mtload */ +/* update the cache status, release useless utterances and fill the cache */ +int UnloadCacheData(DataCache *cache) { + int i, rmvUttCnt = 0; + FrmIndex *frmPtr; + UttElem *uttElem; + + /* update the cache content */ + if (cache->batLen > 0) { + frmPtr = &cache->frmBatch[0]; + for (i = 0; need2Unload && i < cache->batLen; ++i, ++frmPtr) { + /* get the right UttElem */ + uttElem = &cache->uttElems[frmPtr->uttIdx]; + /* update the reference */ + ++uttElem->frmUsed; + /* to check if the space could be released */ + if (uttElem->frmUsed == uttElem->uttLen) { + /* could unload current utterance */ + UnloadOneUtt(cache, frmPtr->uttIdx); + ++ rmvUttCnt; + } + } + /* reset the batch length */ + cache->batLen = 0; + } + + return rmvUttCnt; +} + + +/* cz277 - split */ +/* fill the feature batch according to specified context map and frmBatch */ +/* return the number of frame in the batch */ +/*static inline int GetDataFromCacheOLD(DataCache *cache, FELink feaElem, int offset) { + int i, uttIdx, frmIdx, extDim; + NFloat *feaPtr; + UttElem *uttElem; + + feaPtr = feaBat + offset; + extDim = feaElem->extDim; + for (i = offset; i < cache->batLen; ++i, feaPtr += extDim) { + uttIdx = cache->frmBatch[i].uttIdx; + frmIdx = cache->frmBatch[i].frmIdx; + uttElem = &cache->uttElems[uttIdx]; + CopyExtFrame2Batch(uttElem, frmIdx, feaElem, feaPtr); + } + + return cache->batLen; +}*/ + +/* cz277 - many */ +static inline int GetDataFromCache(DataCache *cache, FELink feaElem, int offset) { + int i, j, n, uttIdx, frmIdx, extDim; + NFloat *feaPtr; + UttElem *uttElem; + + n = IntVecSize(feaElem->ctxPool); + /* set the pointers */ + extDim = feaElem->extDim; + /* fetch each extended frame */ + for (i = 1; i <= n; ++i) { + feaPtr = feaElem->feaMats[i]->matElems + offset; + for (j = offset; j < cache->batLen; ++j, feaPtr += extDim) { + uttIdx = cache->frmBatch[j].uttIdx; + frmIdx = cache->frmBatch[j].frmIdx + feaElem->ctxPool[i]; /* cz277 - many */ + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + /* make and copy the extended frame */ + CopyExtFrame2Batch(uttElem, frmIdx, feaElem, feaPtr); + } + } + + return cache->batLen; +} + + +/* cz277 - aug */ +/* TODO:? copy feature elements to the batch?? */ +/* fill the feature batch according to frmBatch */ +/*static inline int GetAugFeaFromCacheOLD(DataCache *cache, FELink feaElem, NFloat *feaBat) { + int i, j, uttIdx; + NFloat *feaPtr; + UttElem *uttElem; + + feaPtr = feaBat; + for (i = 0; i < cache->batLen; ++i) { + uttIdx = cache->frmBatch[i].uttIdx; + uttElem = &cache->uttElems[uttIdx]; + if (VectorSize(uttElem->augFeaVec[feaElem->augFeaIdx]) != feaElem->feaDim) { + HError(9999, "GetAugFeaFromCache: Augmented feature %d dimension does not match the feature element dimension", feaElem->augFeaIdx); + } + for (j = 1; j < feaElem->ctxMap[0]; ++j, feaPtr += feaElem->feaDim) { + memcpy(feaPtr, &uttElem->augFeaVec[feaElem->augFeaIdx][1], feaElem->feaDim * sizeof(float)); + } + } + + return cache->batLen; +}*/ + +/* cz277 - aug */ +/* cz277 - many */ +/* fill the feature batch according to frmBatch */ +static inline int GetAugFeaFromCache(DataCache *cache, FELink feaElem, int offset) { + int i, j, uttIdx; + NFloat *feaPtr; + UttElem *uttElem; + + feaPtr = feaElem->feaMats[1]->matElems + offset; + for (i = 0; i < cache->batLen; ++i) { + uttIdx = cache->frmBatch[i].uttIdx; + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + if (VectorSize(uttElem->augFeaVec[feaElem->augFeaIdx]) != feaElem->feaDim) { + HError(8922, "GetAugFeaFromCache: Augmented feature %d dim does't match the feature element dim", feaElem->augFeaIdx); + } + for (j = 1; j <= feaElem->ctxMap[0]; ++j, feaPtr += feaElem->feaDim) { + memcpy(feaPtr, &uttElem->augFeaVec[feaElem->augFeaIdx][1], feaElem->feaDim * sizeof(float)); + } + } + + return cache->batLen; +} + +/* fill the label batch according to frmBatch and labelKind */ +static inline void GetHardLabelFromCache(DataCache *cache, int tgtDim, NFloat *labBat, int offset) { + int i, uttIdx, frmIdx, tgtIdx; + NFloat *labPtr; + UttElem *uttElem; + + if ((cache->labelInfo->labelKind & LABLK) == 0) { + HError(8901, "GetHardLabelFromCache: Function does not support current label kind"); + } + + labPtr = labBat + offset; + for (i = offset; i < cache->batLen; ++i, labPtr += tgtDim) { + uttIdx = cache->frmBatch[i].uttIdx; + frmIdx = cache->frmBatch[i].frmIdx; + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + tgtIdx = uttElem->labIdxes[frmIdx]; + cache->labVec[i + 1] = tgtIdx; /* fill labVec */ + if (tgtIdx < 0 || tgtIdx >= tgtDim) + HError(8993, "GetHardLabelFromCache: Label index out of range"); + memset(labPtr, 0.0, tgtDim * sizeof(NFloat)); + labPtr[tgtIdx] = 1.0; + } +} + +/* fill the label batch according to frmBatch and labelKind */ +/* return the number of frame in the batch */ +static inline int GetFeatureLabelFromCache(DataCache *cache, int tgtDim, NFloat *labBat, int offset) { + int i, uttIdx, frmIdx; + NFloat *labPtr; + UttElem *uttElem; + float *flabPtr; +#ifdef DOUBLEANN + int j; +#endif + + if ((cache->labelInfo->labelKind & FEALK) == 0) { + HError(8901, "GetFeatureLabelFromCache: Function does not support current label kind"); + return -1; + } + if (cache->labelInfo->dimFLab != tgtDim) { + HError(8930, "GetFeatureLabelFromCache: Inconsistent dimensions between feature type label and output layer"); + return -1; + } + + labPtr = labBat + offset; + for (i = offset; i < cache->batLen; ++i, labPtr += tgtDim) { + uttIdx = cache->frmBatch[i].uttIdx; + frmIdx = cache->frmBatch[i].frmIdx; + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + flabPtr = &uttElem->flabMat[frmIdx * tgtDim]; +#ifdef DOUBLEANN + for (j = 0; j < tgtDim; ++j) + labPtr[j] = flabPtr[j]; +#else + memcpy(labPtr, flabPtr, tgtDim * sizeof(float)); +#endif + } + + return cache->batLen; +} + + +/* return the name of the utterance that the frame in frmPtrs[0] is associated with */ +char *GetCurUttName(DataCache *cache) { + if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK) { + return NULL; + } + return cache->uttElems[cache->frmPtrs[0].uttIdx].uttName; +} + +/* return the length of the utterance that the frame in frmPtrs[0] is associated with */ +int GetCurUttLen(DataCache *cache) { + if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK) { + return -1; + } + return cache->uttElems[cache->frmPtrs[0].uttIdx].uttLen; +} + +UttElem *GetCurUttElem(DataCache *cache) { + if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK) { + HError(8901, "GetCurUttElem: Function only support utterance based visiting"); + } + if (cache->streamIdx != 1) { + HError(8992, "GetCurUttElem: Lattices can only be visited through the cache of 1st stream"); + } + + return &cache->uttElems[cache->frmPtrs[0].uttIdx]; +} + +/* get the inXForm and paXForm associated with current utterance */ +FBLatInfo *LoadXFormsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo) { + + fbInfo->inXForm = uttElem->inXForm; + fbInfo->paXForm = uttElem->paXForm; + return fbInfo; +} + +/* get the numerator lattices associated with current utterance */ +FBLatInfo *LoadNumLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo) { + int i; + + for (i = 0; (i < MAXLATSUTT) && (uttElem->numLats[i] != NULL); ++i) { + FBLatAddLattice(fbInfo, uttElem->numLats[i]); + } + return fbInfo; +} + +/* get the denorminator lattices associated with current utterance */ +FBLatInfo *LoadDenLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo) { + int i; + + for (i = 0; (i < MAXLATSUTT) && (uttElem->denLats[i] != NULL); ++i) { + FBLatAddLattice(fbInfo, uttElem->denLats[i]); + } + for (i = 0; (i < MAXLATSUTT) && (uttElem->numLats[i] != NULL); ++i) { + if (uttElem->numInDen[i]) { + FBLatAddLattice(fbInfo, uttElem->numLats[i]); + } + } + return fbInfo; +} + +/* fill all cache related batches as well as the label batch (if needed) */ +/* underfill is only useful for UTT series and PLUTT series VisitKind */ +/* for UTT, unfilled batch happens at the end of a utterance */ +/* for PLUTT, unfilled batch happens at the end of all data (insufficient utts for the frmPtrs) */ +/* return TRUE if no more data available; nSamples returns the number of samples loaded */ +Boolean FillAllInpBatch(DataCache *cache, int *nSamples, int *uttCnt) { + int i, nInp, tgtDim; + Boolean finish = FALSE; + FELink *inpElem; + NFloat *batPtr; +#ifdef CUDA + int j,n; +#endif + + /* init nSamples */ + *nSamples = 0; + nInp = cache->hmmSet->nInp[cache->streamIdx]; + inpElem = cache->hmmSet->inpElem[cache->streamIdx]; + tgtDim = cache->outLayer->nodeNum; + + /* cz277 - mtload */ + /*if (extThreadLoad == TRUE && cache->firstLoad == TRUE) + if (pthread_join(cache->extThread, NULL) != 0) + HError(8929, "FillAllInpBatch: Error when joining the extra thread for loading cache");*/ + + /* check whether need to release the data and reload again */ + /* update the cache status if needed */ + if (cache->batLen > 0) { + /* cz277 - mtload */ + UnloadCacheData(cache); + FillCacheSGT(cache); + + UpdateUttOrder(cache); + if (cache->visitKind == FRMVK) + UpdateFrmOrder(cache); + } + /* fill the internal batch */ + switch (cache->visitKind) { + case FRMVK: + finish = FillBatchFRM(cache, cache->batchSamples - (*nSamples)); + break; + case NONEVK: + case UTTFRMVK: + case UTTVK: + finish = FillBatchUTT(cache, cache->batchSamples - (*nSamples), uttCnt); + break; + case PLNONEVK: + case PLUTTFRMVK: + case PLUTTVK: + finish = FillBatchPLUTT(cache, cache->batchSamples - (*nSamples)); + break; + default: + HError(8991, "FillAllInpBatch: Unknown visiting order"); + } + /* fill each input batches */ + for (i = 0; i < nInp; ++i) { + if (inpElem[i]->inputKind == INPFEAIK) + GetDataFromCache(cache, inpElem[i], (*nSamples) * inpElem[i]->extDim); + else if (inpElem[i]->inputKind == AUGFEAIK) /* cz277 - aug */ + GetAugFeaFromCache(cache, inpElem[i], (*nSamples) * inpElem[i]->extDim); + else + HError(8992, "FillAllInpBatch: Can only have INPFEAIK and AUGFEAIK from host memory"); +#ifdef CUDA + n = IntVecSize(inpElem[i]->ctxPool); + for (j = 1; j <= n; ++j) /* cz277 - many */ + SyncNMatrixHost2Dev(inpElem[i]->feaMats[j]); +#endif + } + /* fill the label batch if needed */ + if (cache->labMat != NULL) { + batPtr = cache->labMat->matElems + (*nSamples) * tgtDim; + if (cache->labelInfo->labelKind & FEALK) + GetFeatureLabelFromCache(cache, tgtDim, batPtr, 0); + else if (cache->labelInfo->labelKind & LABLK) + GetHardLabelFromCache(cache, tgtDim, batPtr, 0); + else + HError(8992, "FillAllInpBatch: Label kind does not support cache label matrix"); +#ifdef CUDA + SyncNMatrixHost2Dev(cache->labMat); +#endif + } + /* update nSamples */ + *nSamples += cache->batLen; + /* only applicable to UTT and PLUTT series */ + if (*uttCnt == 0) + *uttCnt = -1; + + return finish; +} + +/* update the log prior list */ +void UpdateTargetLogPrior(DataCache *cache, float offset) { + /*HMMSet *hset;*/ + MLink m, mret; + HLink hmm; + StreamElem *streamElem; + int h, s; + double tOcc = 0.0; + + /*if (!cache->labelInfo->countOcc) {*/ + if ((cache->labelInfo->uFlags & UPTARGETPEN) == 0) { + return; + } + + /*hset = (HMMSet *) cache->hmmSet;*/ + /* first, check each state */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = cache->hmmSet->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (s = 2; s < hmm->numStates; ++s) { + streamElem = &hmm->svec[s].info->pdf[cache->streamIdx]; + if (streamElem->occAcc <= 0.0) { + mret = FindMacroStruct(cache->hmmSet, 's', hmm->svec[s].info); + if (mret == NULL) + HError(-8931, "UpdateTargetPen: HMM State %s[%d] has no training samples", m->id->name, s); + else + HError(-8931, "UpdateTargetPen: HMM State %s has no training samples", mret->id->name); + } + } + } + } + } + /* then accumulate the total occupancies */ + tOcc = 0.0; + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = cache->hmmSet->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (s = 2; s < hmm->numStates; ++s) { + streamElem = &hmm->svec[s].info->pdf[cache->streamIdx]; + if (streamElem->occAcc > 0.0) { + tOcc += streamElem->occAcc; + streamElem->targetPen = streamElem->occAcc; + streamElem->occAcc = -1.0; + } + } + } + } + } + /* at last, compute log(P(s)) + offset and clear occAcc counters */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = cache->hmmSet->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (s = 2; s < hmm->numStates; ++s) { + streamElem = &hmm->svec[s].info->pdf[cache->streamIdx]; + if (streamElem->occAcc < 0.0) { + streamElem->occAcc = streamElem->targetPen; + streamElem->targetPen = (float) ((-1.0) * log(streamElem->targetPen / tOcc) + offset); + } + } + } + } + } +} + + + diff --git a/HTKLib/HNCache.h b/HTKLib/HNCache.h new file mode 100755 index 0000000..50bcab3 --- /dev/null +++ b/HTKLib/HNCache.h @@ -0,0 +1,221 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNCache.h ANN model data cache */ +/* ----------------------------------------------------------- */ + +/* !HVER!HNCache: 3.5.0 [CUED 12/10/15] */ + +#ifndef _HNCACHE_H_ +#define _HNCACHE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "HMem.h" +#include "HParm.h" +#include + +/* ------------------------- Trace Flags ------------------------- */ + +/* + The following types define the in-memory representation of a ANN +*/ + +/* ------------------------- Predefined Types ------------------------- */ + +#define MAXLATSUTT 1 +#define MAXAUGFEAS 5 + +/* ------------------------- ANN Definition ------------------------- */ + + +/* FRMVK (DataCache.frmOrder): DataCache.frmOrder != NULL, DataCache.frmPtr.frmOrderPtr, UttElem.frmOrder == NULL */ +/* NONEVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +/* PLNONEVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.ptrNum * DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +/* PLUTTVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.ptrNum * DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +/* PLUTTFRMVK (DataCache.uttOrder & UttElem.frmOrder): DataCache.frmOrder == NULL, DataCache.ptrNum * DataCache.uttOrderPtr, UttElem.frmOrder != NULL */ +/* UTTFRMVK (DataCache.uttOrder & UttElem.frmOrder): DataCache.frmOrder == NULL, DataCache.uttOrderPtr, UttElem.frmOrder != NULL */ +/* UTTVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +enum _VisitKind {FRMVK, NONEVK, PLNONEVK, PLUTTVK, PLUTTFRMVK, UTTFRMVK, UTTVK}; +typedef enum _VisitKind VisitKind; + +enum _ShuffKind {KNUTHFSK, KNUTHRSK, QUICKNETSK}; +typedef enum _ShuffKind ShuffKind; + +enum _LabelKind {NULLLK = 0, FEALK = 1, LABLK = 2, LATLK = 4}; +typedef enum _LabelKind LabelKind; + +typedef struct _UttElem { + char *uttName; /* the name of the utterance, could be NULL (by saveUttName) */ + int uttLen; /* the length (frame number) of this utterance */ + int frmUsed; /* the number of frames processed */ + float *frmMat; /* the frame matrix; could be NULL if utterance not loaded */ + float *flabMat; /* cz277 - FEALAB */ + Vector augFeaVec[MAXAUGFEAS + 1]; /* specify the maximum number of augmented feature vectors */ + int *frmOrder; /* the frame visiting order within the utterance */ + int *labIdxes; /* the vector with the indexes for all frames, could be NULL */ + Lattice *denLats[MAXLATSUTT]; + Lattice *numLats[MAXLATSUTT]; + Boolean *numInDen; + AdaptXForm *inXForm; + AdaptXForm *paXForm; + /* cz277 - xform */ + NMatBundle **curUttNMatRPLs; + NVecBundle **curUttNVecRPLs; +} UttElem; + +typedef struct _FrmIndex { + int uttIdx; /* the index of the relevant utterance in the array */ + int frmIdx; /* the index of current frame vector in the relevant utterance */ +} FrmIndex; + +typedef struct _LabelInfo { + LabelKind labelKind; /* the kind of the label */ + char *labFileMask; /* mast for reading labels */ + char *labDir; /* label file directory */ + char *labExt; /* label file extension */ + /*Boolean countOcc;*/ /* whether count state occupancies or not */ + char *latFileMask; /* lattice file mask, could be NULL */ + char *latMaskNum; /* numerator lattice file mask, could be NULL */ + char **numLatDir; /* numerator lattice directories */ + int nNumLats; /* number of numerator lattice directories */ + char *numLatSubDirPat; /* sub directory for numerator lattices */ + char *latMaskDen; /* denominator lattice file mask, could be NULL */ + char **denLatDir; /* denorminatory lattice directories */ + int nDenLats; /* number of denominator lattice directories */ + char *denLatSubDirPat; /* sub directory for denominator lattices */ + char *latExt; /* lattice extension */ + FILE *scpFLab; + int dimFLab; /* cz277 - FEALAB */ + /*ParmBuf pbufFLab;*/ /* cz277 - FEALAB */ + Observation *obsFLab; /* cz277 - FEALAB */ + Boolean incNumInDen; + Boolean useLLF; /* whether use LLF or not */ + Vocab *vocab; /* word list or directory pointer (Vocab *) */ + UPDSet uFlags; +} LabelInfo; + +typedef struct _DataCache { + /* basic elements */ + MemHeap *cmem; /* the memory heap for this data cache */ + Boolean revisit; /* whether the cache has been revisit or not */ + size_t cacheSamples; /* the approx number of samples stored in this cache */ + int frmDim; /* the frame dimension */ + int tUttNum; /* the total number of utterances */ + /* storage structure */ + int nxtUttPos; /* the position of the next unloaded utterance */ + UttElem *uttElems; /* the utterance information list */ + /* visit order kind */ + VisitKind visitKind; /* the identifier for the random visiting method */ + /* utterance level visiting order */ + int stUttPos; /* the start position of the utterance visiting index */ + int edUttPos; /* the end position of the utterance visiting index */ + int *uttOrder; /* the indicator for the visiting order */ + /* frame level visiting order */ + size_t frmNum; /* the number of frames in cache */ + size_t tFrmNum; /* the total number of frames */ + size_t fvLen; /* the actual length of frmVisit */ + FrmIndex *frmOrder; /* the indicator for the frame visiting order for FRMVK only */ + /* visiting pointers */ + size_t orderPtr; /* could point to the next element in either uttOrder or frmOrder */ + int ptrNum; /* the number of pointers in cache.frmPtr */ + FrmIndex *frmPtrs; /* NULL if FRMVK */ + /* label structure */ + LabelInfo *labelInfo; /* the pointer to the label information, NULL if no label is available */ + /* structure for internal batch (without context expansion) */ + int batLen; /* the number of frames in the batch (frmBatch) */ + FrmIndex *frmBatch; /* the internal batch of frmIndex */ + int *CMDVecPL; /* the list for PL* visiting order, [..., -2]: do nothing; -1: clear; [0, batchSize): move to */ + /* auxiliary elements */ + FILE *scpFile; /* the handler of the associated file */ + HMMSet *hmmSet; /* the hmmset associated to this cache (HMMSet *) */ + /*ParmBuf parmBuf;*/ /* the parm buf */ + Observation *obs; /* the auxiliary structure for loading frame into cache */ + int streamIdx; /* the stream index of the input feature */ + LELink outLayer; /* the link to the out layer associated with this cache */ + NMatrix *labMat; /* the label matrix associated with this data cache */ + IntVec labVec; /* the vector contains the index of the reference targets */ + Boolean saveUttName; /* whether saves each utterance name or not */ + int batchSamples; /* the mini-batch size associated with this cache */ + XFInfo *xfInfo; + pthread_t extThread; /* cz277 - mtload */ + Boolean firstLoad; /* cz277 - mtload */ +} DataCache; + +/* ------------------------ Global Settings ------------------------- */ + +int GetNMKLThreads(void); +size_t GetDefaultNCacheSamples(void); +VisitKind GetDefaultVisitKind(void); +void SetEpochIndex(int curEpochIdx); +void AccAllCacheSamples(size_t curCacheSamp); +void SetNeed2UnloadFlag(void); + +void InitNCache(void); +DataCache *CreateCache(MemHeap *heap, FILE *scpFile, int scpCnt, HMMSet *hset, Observation *obs, int streamIdx, size_t cacheSamples, VisitKind visitKind, XFInfo *xfInfo, LabelInfo *labelInfo, Boolean saveUttName); +void InitCache(DataCache *cache); +Boolean FillAllInpBatch(DataCache *cache, int *nSamples, int *uttCnt); +/* cz277 - mtload */ +void UpdateCacheStatus(DataCache *cache); +void LoadCacheData(DataCache *cache); +int UnloadCacheData(DataCache *cache); + +char *GetCurUttName(DataCache *cache); +int GetCurUttLen(DataCache *cache); +UttElem *GetCurUttElem(DataCache *cache); +FBLatInfo *LoadXFormsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo); +FBLatInfo *LoadNumLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo); +FBLatInfo *LoadDenLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo); +void UpdateTargetLogPrior(DataCache *cache, float offset); + +void ResetCache(DataCache *cache); +void FreeCache(DataCache *cache); +void ResetCacheHMMSetCfg(DataCache *cache, HMMSet *hset); + +char *MakeNameNMatRPL(char *curSpkr, char *tgtMacro, char *RPLName); +char *MakeNameNVecRPL(char *curSpkr, char *tgtMacro, char *RPLName); +void SaveAllNMatRPLs(HMMSet *hset, FILE *script); +void SaveAllNVecRPLs(HMMSet *hset, FILE *script); +void InstallOneUttNMatRPLs(UttElem *uttElem); +void InstallOneUttNVecRPLs(UttElem *uttElem); +void ResetNMatRPL(void); +void ResetNVecRPL(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* _HNCACHE_H_ */ + +/* ------------------------- End of HNCache.h ------------------------- */ diff --git a/HTKLib/HNet.c b/HTKLib/HNet.c old mode 100644 new mode 100755 index 04f344f..c8f5491 --- a/HTKLib/HNet.c +++ b/HTKLib/HNet.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HNet.c Network and Lattice Functions */ +/* File: HNet.c Network and lattice functions */ /* ----------------------------------------------------------- */ -char *hnet_version = "!HVER!HNet: 3.4.1 [CUED 12/03/09]"; -char *hnet_vc_id = "$Id: HNet.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hnet_version = "!HVER!HNet: 3.5.0 [CUED 12/10/15]"; +char *hnet_vc_id = "$Id: HNet.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -42,6 +45,7 @@ char *hnet_vc_id = "$Id: HNet.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -58,6 +62,9 @@ static int trace=0; static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; +/* cz277 - ANN */ +static MemHeap netstak; + /* --------------------------- Global Flags -------------------------- */ Boolean forceCxtExp=FALSE; @@ -108,6 +115,10 @@ char *subLatEnd="!)_SUBLAT",subLatEndBuf[MAXSTRLEN]; Set these strings as the start and end sublattice markers */ +/* sxz20: for logical label*/ +/* if TRUE, logical hmm name will be used in phone-marked lattices*/ +static Boolean markLogHmm = FALSE; + /* --------------------------- Initialisation ---------------------- */ /* EXPORT->InitNet: register module & set configuration parameters */ @@ -134,7 +145,12 @@ void InitNet(void) if (GetConfBool(cParm,nParm,"REMDUPPRON",&b)) remDupPron = b; if (GetConfBool(cParm,nParm,"MARKSUBLAT",&b)) sublatmarkers = b; if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; + + /* sxz20: config this in lib/settings/scoremark.cfg, HNET:MARKLOGHMM=T */ + if (GetConfBool(cParm,nParm,"MARKLOGHMM",&b)) markLogHmm = b; } + /* cz277 - ANN */ + CreateHeap(&netstak, "HNet Stack", MSTAK, 1, 0.0, 100000, ULONG_MAX); } /* ------------------------ Lattice Creation ------------------------- */ @@ -297,12 +313,63 @@ Lattice *NewILattice(MemHeap *heap,int nn,int na,Lattice *info) return(lat); } +/* cz277 - ANN */ /* EXPORT->FreeLattice: free memory used by a lattice structure */ -void FreeLattice(Lattice *lat) +/*void FreeLattice(Lattice *lat) { Dispose(lat->heap,lat); +}*/ +void FreeLattice(Lattice *lat) { + int i; + LArc *la; + LNode *ln; + + /* dispose the lattice arcs */ + for (i = 0, la = lat->larcs; i < lat->na; ++i, la = NextLArc(lat, la)) { + if (la->nAlign != 0) { + Dispose(lat->heap, la->lAlign); + } + } + Dispose(lat->heap, lat->larcs); + /* dispose the lattice nodes */ + for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) { + if (ln->tag != NULL) { + Dispose(lat->heap, ln->tag); + } + if (ln->sublat != NULL) { + FreeLattice(ln->sublat->lat); + /* TODO: to process sublat->chain ?? */ + /* TODO: to process sublat->next ?? */ + } + } + /* dispose subList & refList */ + if (lat->subList != NULL) { + /* TODO: to process lat->subList ?? */ + } + if (lat->refList != NULL) { + /* TODO: to process lat->refList ?? */ + } + + /* dispose the char *s */ + if (lat->net != NULL) + Dispose(lat->heap, lat->net); + if (lat->hmms != NULL) + Dispose(lat->heap, lat->hmms); + if (lat->vocab != NULL) + Dispose(lat->heap, lat->vocab); + if (lat->utterance != NULL) + Dispose(lat->heap, lat->utterance); + + /* TODO: to process lat->chain ?? */ + if (lat->chain != NULL) { + FreeLattice(lat->chain); + } + + /* dispose the lattice itself */ + Dispose(lat->heap, lat); } + /* ------------------------ Lattice Output ------------------------- */ #define SUBLATHASHSIZE 101 @@ -311,7 +378,7 @@ void FreeLattice(Lattice *lat) /* add (if not found) or check (if found) the new subLat definition. */ static Lattice *GetSubLat(LabId subLatId,Lattice *subLat) { - int h; + unsigned long int h; Lattice *cur,*nxt; static Lattice **subLatHashTab = NULL; @@ -330,7 +397,7 @@ static Lattice *GetSubLat(LabId subLatId,Lattice *subLat) subLatHashTab=NULL; return(NULL); } - h=(((unsigned) subLatId)%SUBLATHASHSIZE); + h=(((unsigned long int) subLatId)%SUBLATHASHSIZE); for (cur=subLatHashTab[h];cur!=NULL;cur=cur->chain) if (cur->subLatId==subLatId) break; if (subLat!=NULL) { @@ -475,8 +542,9 @@ static int QSCmpArcs(const void *v1,const void *v2) else return(j); } +/* cz277 - scale conf score */ /* OutputIntField: output integer as text or binary */ -static void OutputIntField(char field,int val,Boolean bin, + void OutputIntField(char field,int val,Boolean bin, char *form,FILE *file) { fprintf(file,"%c%c",field,bin?'~':'='); @@ -487,8 +555,9 @@ static void OutputIntField(char field,int val,Boolean bin, fprintf(file," "); } +/* cz277 - scale conf score */ /* OutputFloatField: output float as text or binary */ -static void OutputFloatField(char field,float val,Boolean bin, +void OutputFloatField(char field,float val,Boolean bin, char *form,FILE *file) { fprintf(file,"%c%c",field,bin?'~':'='); @@ -534,8 +603,8 @@ ReturnStatus WriteOneLattice(Lattice *lat,FILE *file,LatFormat format) LArc *la; /* Rather than return an error assume labels on nodes !! */ - order=(int *) New(&gstack, sizeof(int)*(lat->nnna ? lat->na+1 : lat->nn+1)); - rorder=(int *) New(&gstack, sizeof(int)*lat->nn); + order=(int *) New(&netstak, sizeof(int)*(lat->nnna ? lat->na+1 : lat->nn+1)); + rorder=(int *) New(&netstak, sizeof(int)*lat->nn); if (lat->subLatId) fprintf(file,"SUBLAT=%s\n",lat->subLatId->name); @@ -622,7 +691,7 @@ ReturnStatus WriteOneLattice(Lattice *lat,FILE *file,LatFormat format) if (lat->subLatId) fprintf(file,".\n\n"); - Dispose(&gstack,order); + Dispose(&netstak,order); slat=NULL; return(SUCCESS); } @@ -875,353 +944,357 @@ static int ReadAlign(Lattice *lat,LArc *la,char *buf) } /* ReadOneLattice: Read (one level) of lattice from file */ -Lattice *ReadOneLattice(Source *src, MemHeap *heap, Vocab *voc, - Boolean shortArc, Boolean add2Dict) -{ - int i,s,e,n,v=0,nn,na; - Lattice *lat; - LNode *ln; - LArc *la; - Word wordId; - double time,aclike,lmlike; - double prlike; - char nbuf[132],vbuf[132],*ptr,ntype,del; +Lattice *ReadOneLattice(Source *src, MemHeap *heap, Vocab *voc, Boolean shortArc, Boolean add2Dict) +{ + int i, s, e, n, v = 0, nn, na; + Lattice *lat; + LNode *ln; + LArc *la; + Word wordId; + double time, aclike, lmlike; + double prlike; + char nbuf[132], vbuf[132], *ptr, ntype, del; #define DBUFLEN 4096 - char dbuf[DBUFLEN]; - double lmscl=1.0, lmpen=0.0, acscl=1.0, prscl=1.0; - float logbase = 1.0, tscale = 1.0; - - char *uttstr,*lmnstr,*vocstr,*hmmstr,*sublatstr,*tag; - SubLatDef *subLatId = NULL; - - lat = (Lattice *) New(heap,sizeof(Lattice)); - lat->heap=heap; lat->subLatId=NULL; lat->chain=NULL; - lat->voc=voc; lat->refList=NULL; lat->subList=NULL; - - /* Initialise default header values */ - nn=0;na=0; uttstr=lmnstr=vocstr=hmmstr=sublatstr=NULL; - /* Process lattice header */ - while((ptr=GetNextFieldName(nbuf,&del,src))) { - if (nbuf[0]=='\n') { - if (na != 0 && nn != 0) break; - } - else if (strlen(ptr)==1) { - ntype=*ptr; - switch(ntype) { - case 'N': - nn=GetIntField('N',del,vbuf,src); - break; - case 'L': - na=GetIntField('L',del,vbuf,src); + char dbuf[DBUFLEN]; + double lmscl = 1.0, lmpen = 0.0, acscl = 1.0, prscl = 1.0; + float logbase = 1.0, tscale = 1.0; + + char *uttstr, *lmnstr, *vocstr, *hmmstr, *sublatstr, *tag; + SubLatDef *subLatId = NULL; + + lat = (Lattice *) New(heap,sizeof(Lattice)); + lat->heap = heap; lat->subLatId = NULL; lat->chain = NULL; + lat->voc = voc; lat->refList = NULL; lat->subList = NULL; + + /* Initialise default header values */ + nn = 0;na = 0; uttstr = lmnstr = vocstr = hmmstr = sublatstr = NULL; + /* Process lattice header */ + while ((ptr = GetNextFieldName(nbuf, &del, src))) { + if (nbuf[0] == '\n') { + if (na != 0 && nn != 0) + break; + } + else if (strlen(ptr) == 1) { + ntype = *ptr; + switch(ntype) { + case 'N': + nn = GetIntField('N', del, vbuf, src); + break; + case 'L': + na = GetIntField('L', del, vbuf, src); + break; + default: + GetFieldValue(0, src, 0); + break; + } + } + else { + if (!strcmp(ptr, "UTTERANCE")) + GetFieldValue(vbuf, src, 0), uttstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "SUBLAT")) + GetFieldValue(vbuf, src, 0), sublatstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "vocab")) + GetFieldValue(vbuf, src, 0), vocstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "hmms")) + GetFieldValue(vbuf, src, 0), hmmstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "lmname")) + GetFieldValue(vbuf, src, 0), lmnstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "wdpenalty")) + lmpen = GetFltField('p', del, vbuf, src); + else if (!strcmp(ptr, "lmscale")) + lmscl = GetFltField('s', del, vbuf, src); + else if (!strcmp(ptr, "prscale")) + prscl = GetFltField('s', del, vbuf, src); + else if (!strcmp(ptr, "acscale")) + acscl = GetFltField('a', del, vbuf, src); + else if (!strcmp(ptr, "base")) + logbase = GetFltField('b', del, vbuf, src); + else if (!strcmp(ptr, "tscale")) + tscale = GetFltField('t', del, vbuf, src); + else + GetFieldValue(NULL, src, 0); + } + } + + if (ptr == NULL) { + /* generic memory clearing routine */ + Dispose(heap, lat); + HRError(8250, "ReadLattice: Premature end of lattice file before header"); + return (NULL); + } + + /* Initialise lattice based on header information */ + lat->nn = nn; + lat->na = na; + lat->utterance = uttstr; lat->vocab = vocstr; lat->hmms = hmmstr; + lat->net = lmnstr; lat->lmscale = lmscl; lat->wdpenalty = lmpen; + lat->acscale = acscl; + lat->logbase = logbase; + lat->tscale = tscale; + lat->framedur = 0; + lat->prscale = prscl; + + if (logbase < 0.0) + HError (8251, "ReadLattice: Illegal log base in lattice"); + + /* Set format to indicate type and default word label position */ + lat->format = (shortArc ? HLAT_SHARC | HLAT_ALABS : HLAT_ALABS); + + /* Presence of SUBLAT=id string indicates more to come */ + lat->subList = NULL; lat->chain = NULL; + if (sublatstr != NULL) + lat->subLatId = GetLabId(sublatstr, TRUE); + else + lat->subLatId = NULL; + + /* Allocate and initiailise nodes/arcs */ + lat->lnodes = (LNode *) New(heap, sizeof(LNode) * nn); + if (shortArc) + lat->larcs = (LArc *) New(heap, sizeof(LArc_S) * na); + else + lat->larcs = (LArc *) New(heap, sizeof(LArc) * na); + + for (i = 0, ln = lat->lnodes; i < nn; i++, ln++) { + ln->hook = NULL; + ln->pred = NULL; + ln->foll = NULL; + ln->score = 0.0; + } + for (i = 0, la = lat->larcs; i < na; i++, la = NextLArc(lat,la)) { + la->lmlike = 0.0; + la->start = la->end = NNODE; + la->farc = la->parc = NARC; + } + if (!shortArc) { + for(i = 0, la = lat->larcs; i < na; i++, la = NextLArc(lat, la)) { + la->aclike = la->prlike = la->score = 0.0; + la->nAlign = 0; + la->lAlign = NULL; + } + } + + do { + if ((ptr = GetNextFieldName(nbuf, &del, src)) == NULL) break; - default: - GetFieldValue(0,src,0); + /* Recognised line types have only one character names */ + if (strlen(ptr) == 1) + ntype=*ptr; + else + ntype = 0; + if (ntype == '.') { + ptr = NULL; break; - } - } - else { - if (!strcmp(ptr,"UTTERANCE")) - GetFieldValue(vbuf,src,0),uttstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"SUBLAT")) - GetFieldValue(vbuf,src,0),sublatstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"vocab")) - GetFieldValue(vbuf,src,0),vocstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"hmms")) - GetFieldValue(vbuf,src,0),hmmstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"lmname")) - GetFieldValue(vbuf,src,0),lmnstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"wdpenalty")) - lmpen=GetFltField('p',del,vbuf,src); - else if (!strcmp(ptr,"lmscale")) - lmscl=GetFltField('s',del,vbuf,src); - else if (!strcmp(ptr,"prscale")) - prscl=GetFltField('s',del,vbuf,src); - else if (!strcmp(ptr,"acscale")) - acscl=GetFltField('a',del,vbuf,src); - else if (!strcmp(ptr,"base")) - logbase=GetFltField('b',del,vbuf,src); - else if (!strcmp(ptr,"tscale")) - tscale=GetFltField('t',del,vbuf,src); - else - GetFieldValue(NULL,src,0); - } - } - - if(ptr == NULL){ - /* generic memory clearing routine */ - Dispose(heap, lat); - HRError(8250,"ReadLattice: Premature end of lattice file before header"); - return(NULL); - } - - /* Initialise lattice based on header information */ - lat->nn=nn; - lat->na=na; - lat->utterance=uttstr;lat->vocab=vocstr;lat->hmms=hmmstr; - lat->net=lmnstr;lat->lmscale=lmscl;lat->wdpenalty=lmpen; - lat->acscale = acscl; - lat->logbase = logbase; - lat->tscale = tscale; - lat->framedur=0; - lat->prscale=prscl; - - if (logbase < 0.0) - HError (8251, "ReadLattice: Illegal log base in lattice"); - - /* Set format to indicate type and default word label position */ - lat->format=(shortArc?HLAT_SHARC|HLAT_ALABS:HLAT_ALABS); - - /* Presence of SUBLAT=id string indicates more to come */ - lat->subList=NULL; lat->chain=NULL; - if (sublatstr!=NULL) lat->subLatId = GetLabId(sublatstr,TRUE); - else lat->subLatId = NULL; - - /* Allocate and initiailise nodes/arcs */ - lat->lnodes=(LNode *) New(heap, sizeof(LNode)*nn); - if (shortArc) - lat->larcs=(LArc *) New(heap, sizeof(LArc_S)*na); - else - lat->larcs=(LArc *) New(heap, sizeof(LArc)*na); - - for(i=0, ln=lat->lnodes; ihook=NULL; - ln->pred=NULL; - ln->foll=NULL; - ln->score=0.0; - } - for(i=0, la=lat->larcs; ilmlike=0.0; - la->start=la->end=NNODE; - la->farc=la->parc=NARC; - } - if (!shortArc) - for(i=0, la=lat->larcs; iaclike=la->prlike=la->score=0.0; - la->nAlign=0; - la->lAlign=NULL; - } - - do { - if ((ptr=GetNextFieldName(nbuf,&del,src)) == NULL) - break; - /* Recognised line types have only one character names */ - if (strlen(ptr)==1) - ntype=*ptr; - else - ntype=0; - if (ntype == '.') { - ptr = NULL; - break; - } - switch(ntype) { - case '\n': break; - case 'I': - n=GetIntField('I',del,vbuf,src); - if (n < 0 || n >= lat->nn){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain node %d",n); - return(NULL); - } - ln=lat->lnodes+n; - if (ln->hook!=NULL){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Duplicate info info for node %d",n); - return(NULL); - } - time=0.0;wordId=voc->nullWord;tag=NULL;v=-1; - while((ptr=GetNextFieldName(nbuf,&del,src)) != NULL) { - if (nbuf[0]=='\n') break; - else { - if (strlen(ptr)>=1) - ntype=*ptr; - else - ntype=0; - switch(ntype) { - case 't': - time=GetFltField('t',del,vbuf,src); - time *= tscale; - lat->format |= HLAT_TIMES; - break; - case 'W': - GetFieldValue(vbuf,src,0); - wordId=GetWord(voc,GetLabId(vbuf,add2Dict),add2Dict); - if (wordId==NULL){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Word %s not in dict",vbuf); - return(NULL); - } - break; - case 's': - GetFieldValue(vbuf,src,0); - tag=CopyString(heap,vbuf); - lat->format |= HLAT_TAGS; - break; - case 'L': - GetFieldValue(vbuf,src,0); - wordId=voc->subLatWord; - if((subLatId=AdjSubList(lat,GetLabId(vbuf,TRUE),NULL,+1))==NULL) { - HRError(8251,"ReadLattice: AdjSubLat failed"); - return(NULL); - } - - break; - case 'v': - lat->format |= HLAT_PRON; - v=GetIntField('v',del,vbuf,src); - break; - default: - GetFieldValue(0,src,0); - break; - } + } + switch (ntype) { + case '\n': + break; + case 'I': + n = GetIntField('I', del, vbuf, src); + if (n < 0 || n >= lat->nn) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain node %d", n); + return (NULL); + } + ln = lat->lnodes + n; + if (ln->hook != NULL) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Duplicate info info for node %d", n); + return (NULL); + } + time = 0.0; wordId = voc->nullWord; tag = NULL; v = -1; + while ((ptr = GetNextFieldName(nbuf, &del, src)) != NULL) { + if (nbuf[0] == '\n') + break; + else { + if (strlen(ptr) >= 1) + ntype = *ptr; + else + ntype = 0; + switch (ntype) { + case 't': + time = GetFltField('t', del, vbuf, src); + time *= tscale; + lat->format |= HLAT_TIMES; + break; + case 'W': + GetFieldValue(vbuf, src, 0); + wordId = GetWord(voc, GetLabId(vbuf, add2Dict), add2Dict); + if (wordId == NULL) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Word %s not in dict", vbuf); + return (NULL); + } + break; + case 's': + GetFieldValue(vbuf, src, 0); + tag = CopyString(heap, vbuf); + lat->format |= HLAT_TAGS; + break; + case 'L': + GetFieldValue(vbuf, src, 0); + wordId = voc->subLatWord; + if ((subLatId = AdjSubList(lat, GetLabId(vbuf, TRUE), NULL, +1)) == NULL) { + HRError(8251, "ReadLattice: AdjSubLat failed"); + return (NULL); + } + break; + case 'v': + lat->format |= HLAT_PRON; + v = GetIntField('v', del, vbuf, src); + break; + default: + GetFieldValue(0, src, 0); + break; + } + } + } + if (wordId != voc->nullWord) + lat->format &= ~HLAT_ALABS; + ln->time = time; + ln->word = wordId; + ln->tag = tag; + ln->v = v; + if (wordId == voc->subLatWord) + ln->sublat = subLatId; + else + ln->sublat = NULL; + ln->hook = ln; + nn--; + break; + case 'J': + n = GetIntField('I', del, vbuf, src); + if (n < 0 || n >= lat->na) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain arc %d", n); + return (NULL); + } + la = NumbLArc(lat, n); + if (la->start != NULL) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Duplicate info for arc %d", n); + return (NULL); + } + s = e = v = -1; wordId = NULL; aclike = lmlike = 0.0; + prlike = 0.0; + while ((ptr = GetNextFieldName(nbuf, &del, src))) { + if (nbuf[0] == '\n') + break; + else { + if (strlen(ptr)>=1) + ntype = *ptr; + else + ntype = 0; + switch (ntype) + { + case 'S': + s = GetIntField('S', del, vbuf, src); + if (s < 0 || s >= lat->nn) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain start node %d", s); + return (NULL); + } + break; + case 'E': + e = GetIntField('E', del, vbuf, src); + if (e < 0 || e >= lat->nn) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain end node %d", e); + return (NULL); + } + break; + case 'W': + GetFieldValue(vbuf, src, 0); + wordId = GetWord(voc, GetLabId(vbuf, add2Dict), add2Dict); + if (wordId == NULL || wordId == voc->subLatWord) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Word %s not in dict", vbuf); + return (NULL); + } + break; + case 'v': + lat->format |= HLAT_PRON; + v = GetIntField('v', del, vbuf, src); + break; + case 'a': + lat->format |= HLAT_ACLIKE; + aclike = GetFltField('a', del, vbuf, src); + aclike = ConvLogLikeFromBase(logbase, aclike); + break; + case 'l': + lat->format |= HLAT_LMLIKE; + lmlike = GetFltField('l', del, vbuf, src); + lmlike = ConvLogLikeFromBase(logbase, lmlike); + break; + case 'r': + lat->format |= HLAT_PRLIKE; + prlike = GetFltField('r', del, vbuf, src); + prlike = ConvLogLikeFromBase(logbase, prlike); + break; + case 'd': + lat->format |= HLAT_ALIGN; + GetFieldValue(dbuf, src, DBUFLEN); + if (!shortArc) + la->nAlign = ReadAlign(lat, la, dbuf); + break; + default: + GetFieldValue(0, src, 0); + break; + } + } } - } - if (wordId != voc->nullWord) - lat->format &= ~HLAT_ALABS; - ln->time=time; - ln->word=wordId; - ln->tag=tag; - ln->v=v; - if (wordId == voc->subLatWord) - ln->sublat = subLatId; - else - ln->sublat = NULL; - ln->hook=ln; - nn--; - break; - case 'J': - n=GetIntField('I',del,vbuf,src); - if (n<0 || n>=lat->na){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain arc %d",n); - return(NULL); - } - la=NumbLArc(lat,n); - if (la->start!=NULL){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Duplicate info for arc %d",n); - return(NULL); - } - s=e=v=-1; wordId=NULL; aclike=lmlike=0.0; - prlike=0.0; - while ((ptr=GetNextFieldName(nbuf,&del,src))) { - if (nbuf[0]=='\n') break; - else { - if (strlen(ptr)>=1) ntype=*ptr; - else ntype=0; - switch(ntype) - { - case 'S': - s=GetIntField('S',del,vbuf,src); - if (s<0 || s>=lat->nn){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain start node %d",s); - return(NULL); - } - break; - case 'E': - e=GetIntField('E',del,vbuf,src); - if (e<0 || e>=lat->nn){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain end node %d",e); - return(NULL); - } - break; - case 'W': - GetFieldValue(vbuf,src,0); - wordId=GetWord(voc,GetLabId(vbuf,add2Dict),add2Dict); - if (wordId==NULL || wordId==voc->subLatWord){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Word %s not in dict", - vbuf); - return(NULL); - } - break; - case 'v': - lat->format |= HLAT_PRON; - v=GetIntField('v',del,vbuf,src); - break; - case 'a': - lat->format |= HLAT_ACLIKE; - aclike=GetFltField('a',del,vbuf,src); - aclike = ConvLogLikeFromBase(logbase, aclike); - break; - case 'l': - lat->format |= HLAT_LMLIKE; - lmlike=GetFltField('l',del,vbuf,src); - lmlike = ConvLogLikeFromBase(logbase, lmlike); - break; - case 'r': - lat->format |= HLAT_PRLIKE; - prlike=GetFltField('r',del,vbuf,src); - prlike = ConvLogLikeFromBase(logbase, prlike); - break; - case 'd': - lat->format |= HLAT_ALIGN; - GetFieldValue(dbuf,src,DBUFLEN); - if (!shortArc) - la->nAlign=ReadAlign(lat,la,dbuf); - break; - default: - GetFieldValue(0,src,0); - break; - } + if (s < 0 || e < 0 || (wordId == NULL && (lat->format & HLAT_ALABS))) { + Dispose(heap, lat); + HRError(8250, "ReadLattice: Need to know S,E [and W] for arc %d", n); + return (NULL); } - } - if (s<0 || e<0 ||(wordId==NULL && (lat->format&HLAT_ALABS))){ - Dispose(heap, lat); - HRError(8250,"ReadLattice: Need to know S,E [and W] for arc %d",n); - return(NULL); - } - la->start=lat->lnodes+s; - la->end=lat->lnodes+e; - la->lmlike=lmlike; + la->start = lat->lnodes + s; + la->end = lat->lnodes + e; + la->lmlike = lmlike; - if ((lat->format&HLAT_ALABS) && la->end->word == voc->nullWord){ - la->end->word=wordId; - la->end->v = v; - } - if (wordId != NULL && la->end->word != wordId){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice arc (%d) W field (%s) different from node (%s)", n,wordId->wordName->name,la->end->word->wordName->name); - return(NULL); - } - - la->farc=la->start->foll; - la->parc=la->end->pred; - la->start->foll=la; - la->end->pred=la; - if (!shortArc) { - la->aclike=aclike; - la->prlike=prlike; - } - na--; - break; - default: - GetFieldValue(0,src,0); - while ((ptr=GetNextFieldName(nbuf,&del,src))) { - if (nbuf[0]=='\n') break; - else GetFieldValue(0,src,0); - } - break; - } - } - while(ptr != NULL); - if (na!=0 || (nn!=0 && nn!=lat->nn)){ - Dispose(heap, lat); - HRError(8250,"ReadLattice: %d Arcs unseen and %d Nodes unseen",na,nn); - return(NULL); - } - - if(CheckStEndNodes(lat)format & HLAT_ALABS) && la->end->word == voc->nullWord) { + la->end->word = wordId; + la->end->v = v; + } + if (wordId != NULL && la->end->word != wordId) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice arc (%d) W field (%s) different from node (%s)", n,wordId->wordName->name, la->end->word->wordName->name); + return(NULL); + } - for(i=0,ln=lat->lnodes;inn;i++,ln++) - ln->hook=NULL; - if (shortArc) lat->format&=~(HLAT_ACLIKE|HLAT_PRLIKE|HLAT_ALIGN); - return(lat); + la->farc = la->start->foll; + la->parc = la->end->pred; + la->start->foll = la; + la->end->pred = la; + if (!shortArc) { + la->aclike = aclike; + la->prlike = prlike; + } + na--; + break; + default: + GetFieldValue(0,src,0); + while ((ptr=GetNextFieldName(nbuf,&del,src))) { + if (nbuf[0]=='\n') break; + else GetFieldValue(0,src,0); + } + break; + } + } while (ptr != NULL); + if (na != 0 || (nn != 0 && nn != lat->nn)) { + Dispose(heap, lat); + HRError(8250, "ReadLattice: %d Arcs unseen and %d Nodes unseen", na, nn); + return (NULL); + } + if (CheckStEndNodes(lat) < SUCCESS) { + Dispose(heap, lat); + HRError(8250, "ReadLattice: Start/End nodes incorrect", na, nn); + return (NULL); + } + for(i = 0, ln = lat->lnodes; i < lat->nn; i++, ln++) + ln->hook = NULL; + if (shortArc) + lat->format &= ~(HLAT_ACLIKE | HLAT_PRLIKE | HLAT_ALIGN); + return (lat); } @@ -1493,7 +1566,7 @@ Lattice *ExpandMultiLevelLattice(MemHeap *heap, Lattice *lat, Vocab *voc) nNodes = nArcs = 0; ExpandedLatticeSize(lat,&nNodes,&nArcs); - newlat = NewLattice(&gstack,nNodes,nArcs); + newlat = NewLattice(&netstak,nNodes,nArcs); newlat->voc = lat->voc; newArcs = newNodes = 0; CopyLattice(lat,newlat,&newNodes,&newArcs,FALSE); /* copy the top level */ @@ -1502,7 +1575,7 @@ Lattice *ExpandMultiLevelLattice(MemHeap *heap, Lattice *lat, Vocab *voc) final = NewILattice(heap,nNodes,nArcs,lat); newArcs = newNodes = 0; CopyLattice(newlat,final,&newNodes,&newArcs,TRUE); /* remove NULL id nodes */ - Dispose(&gstack,newlat); + Dispose(&netstak,newlat); final->subList=NULL; /* Actually unnecessary */ @@ -1613,7 +1686,7 @@ NodeId FindLatEnd(Lattice *lat) static void PrintNode(NetNode *node,HMMSet *hset) { - printf("Node[%05d] ",(((unsigned) node)/sizeof(NetNode))%100000); + printf("Node[%05lu] ",(((unsigned long int) node)/sizeof(NetNode))%100000); if (node->type & n_hmm) printf("{%s}\n",HMMPhysName(hset,node->info.hmm)); else if (node->type == n_word && node->info.pron==NULL) { @@ -1641,8 +1714,8 @@ static void PrintLinks(NetLink *links,int nlinks) int i; for (i=0; i [%05d] == %7.3f\n",i, - (((unsigned) links[i].node)/sizeof(NetNode)%100000), + printf(" %-2d: -> [%05lu] == %7.3f\n",i, + (((unsigned long int) links[i].node)/sizeof(NetNode)%100000), links[i].like); fflush(stdout); } @@ -1927,7 +2000,7 @@ static int DefineContexts(HMMSetCxtInfo *hci) hci->sRight=TRUE; } } - temp=(int *) New(&gstack,sizeof(int)*hci->nci);temp--; + temp=(int *) New(&netstak,sizeof(int)*hci->nci);temp--; for (c=1;c<=hci->nci;c++) temp[c]=0; /* Otherwise scan for all contexts that appear */ @@ -1945,7 +2018,7 @@ static int DefineContexts(HMMSetCxtInfo *hci) for (c=1;c<=hci->nci;c++) if (temp[c]!=0) hci->cis[c]=NULL; - Dispose(&gstack,temp+1); + Dispose(&netstak,temp+1); for (c=1,h=1;c<=hci->nci;c++,h++) { for (;h<=hci->nci;h++) if (hci->cis[h]!=NULL) break; @@ -1999,7 +2072,7 @@ static NetNode *FindWordNode(MemHeap *heap,Pron pron, NetNode *node; hash=0; - un.ptrs[0]=pron;un.ptrs[1]=pInst;un.ptrs[2]=(Ptr)type; + un.ptrs[0]=pron;un.ptrs[1]=pInst;un.ptrs[2]=(Ptr)(unsigned long int)type; for (i=0;i<12;i++) hash=((hash<<8)+un.chars[i])%WNHASHSIZE; @@ -2027,9 +2100,8 @@ static NetNode *FindWordNode(MemHeap *heap,Pron pron, } - /* Create NetNode (and optionally NetLinks as well) */ -static NetNode *NewNode(MemHeap *heap,HLink hmm,int nlinks) +static NetNode *NewNode(MemHeap *heap, HLink hmm, LabId lhmm, int nlinks) /* sxz20: added LabId lhmm */ { NetNode *node; @@ -2045,6 +2117,10 @@ static NetNode *NewNode(MemHeap *heap,HLink hmm,int nlinks) node->links=NULL; else node->links=(NetLink*) New(heap,sizeof(NetLink)*node->nlinks); + + /* sxz20 : attach the logical hmm name to the node */ + node->labid = lhmm; + return(node); } @@ -2097,6 +2173,58 @@ static HLink FindModel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) return((HLink) ml->structure); } +/* sxz20: find label matching context */ +static LabId FindLabel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) +{ + LabId labid; + MLink ml; + char buf[MAXSTRLEN]; + + /* Word internal hack */ + /* Cross word will need proper specification of context */ + /* as well as knowledge of which models are cd/ci. */ + + /* First try constructing the cd name */ + if (!allowCxtExp || (lc<=0 && rc<=0) || IsHCIContextInd(hci,name)) { + strcpy(buf,name->name); + labid=name; + } + else if ((lc==0 || forceRightBiphones || !hci->sLeft) && + rc>0 && !forceLeftBiphones) { + sprintf(buf,"%s+%s",name->name,ContextName(hci,rc)->name); + labid=GetLabId(buf,FALSE); + } + else if ((rc==0 || forceLeftBiphones || !hci->sRight) && + lc>0 && !forceRightBiphones) { + sprintf(buf,"%s-%s",ContextName(hci,lc)->name,name->name); + labid=GetLabId(buf,FALSE); + } + else if (!forceLeftBiphones && !forceRightBiphones) { + sprintf(buf,"%s-%s+%s",ContextName(hci,lc)->name, + name->name,ContextName(hci,rc)->name); + labid=GetLabId(buf,FALSE); + } + else{ + strcpy(buf, name->name); + labid=name; + } + ml=FindMacroName(hci->hset,'l',labid); + + if(ml!=NULL){ + return labid; /* sxz20 : return logical */ + } else if (ml==NULL && (((lc==0 && rc==0) || !forceCxtExp) || + (lc==0 || !forceLeftBiphones) || + (rc==0 || !forceRightBiphones))) { + ml=FindMacroName(hci->hset,'l',name); /* sxz20 : name may physical or CI */ + } + + if (ml==NULL) { + return(NULL); /*sxz20: error will be shown in GetHCILabel() */ + } else { + return name; /* sxz20: CI? how about physical model? */ + } +} + /* Determine if phone in position pos is independent of right context */ static Boolean IsRContextInd(HMMSetCxtInfo *hci,PronHolder *p,int pos,int xlc) { @@ -2176,6 +2304,19 @@ HLink GetHCIModel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) return(hmm); } +/* sxz20 : find label matching context */ +LabId GetHCILabel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) +{ + LabId labid; + + labid=FindLabel(hci,lc,name,rc); + if (labid==NULL) + HError(8231,"GetHCILabel: Cannot find hmm [%s-]%s[+%s]", + (lc>0?ContextName(hci,lc)->name:"???"),name->name, + (rc>0?ContextName(hci,rc)->name:"???")); + return(labid); +} + /* AddInitialFinal: Add links to/from initial/final net nodes */ static void AddInitialFinal(Lattice *wnet, Network *net,int xc) { @@ -2362,7 +2503,7 @@ static int InitPronHolders(Network *net,Lattice *lat,HMMSetCxtInfo *hci, HError(8220,"InitPronHolders: Word %s not defined in dictionary", thisWord->wordName->name); - pii=(PInstInfo *) New(&gstack,(thisWord->nprons+1)*(nAdd+1)*sizeof(PInstInfo)); + pii=(PInstInfo *) New(&netstak,(thisWord->nprons+1)*(nAdd+1)*sizeof(PInstInfo)); pii--; /* Scan current pronunciations and make modified ones */ for (j=1,thisPron=thisWord->pron,npii=0; thisPron!=NULL; @@ -2449,7 +2590,7 @@ static int InitPronHolders(Network *net,Lattice *lat,HMMSetCxtInfo *hci, wordNode->nlinks = 0; } } - Dispose(&gstack,++pii); + Dispose(&netstak,++pii); } if (t!=0) HError(-8221,"InitPronHolders: Total of %d duplicate pronunciations removed",t); @@ -2688,15 +2829,26 @@ void CreateWIModels(PronHolder *pInst,int p,int q, NetNode *node; HLink hmm; int j; + /* sxz20 */ + LabId lhmm = NULL; for(j=q-1;j>p;j--) { hmm=GetHCIModel(hci,FindLContext(hci,pInst,j,0), pInst->phones[j], FindRContext(hci,pInst,j,0)); + + /* sxz20 : find logical HMM LabId*/ + if(markLogHmm) + lhmm = GetHCILabel(hci, FindLContext(hci,pInst,j,0), + pInst->phones[j], + FindRContext(hci,pInst,j,0)); + if (hmm->transP[1][hmm->numStates]tee=FALSE; nwi++; - node=NewNode(net->heap,hmm,(pInst->chain==NULL?0:1)); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, (pInst->chain == NULL? 0: 1)); + /*node=NewNode(net->heap,hmm,(pInst->chain==NULL?0:1));*/ if (pInst->chain!=NULL) { nil++; node->links[0].node=pInst->chain; @@ -2712,16 +2864,24 @@ void CreateIEModels(Word thisWord,PronHolder *pInst,int p,int q, { NetNode *node,*wordNode; HLink hmm; + /* sxz20 */ + LabId lhmm = NULL; if (q==p) { /* One phone word */ hmm=GetHCIModel(hci,0,pInst->phones[0],0); + + /* sxz20 */ + if(markLogHmm) lhmm=GetHCILabel(hci,0,pInst->phones[0],0); + if (hmm->transP[1][hmm->numStates]tee=FALSE; wordNode = FindWordNode(NULL,pInst->pron,pInst,n_word); nin++; nil++; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node=NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ node->links[0].node=wordNode; node->links[0].like=pInst->fct; @@ -2730,14 +2890,18 @@ void CreateIEModels(Word thisWord,PronHolder *pInst,int p,int q, } else { /* End */ - hmm=GetHCIModel(hci,FindLContext(hci,pInst,q,0), - pInst->phones[q],0); + hmm=GetHCIModel(hci,FindLContext(hci,pInst,q,0), pInst->phones[q],0); + /* sxz20 */ + if(markLogHmm) lhmm = GetHCILabel(hci, FindLContext(hci, pInst, q, 0), pInst->phones[q], 0); + if (hmm->transP[1][hmm->numStates]tee=FALSE; wordNode = FindWordNode(NULL,pInst->pron,pInst,n_word); nfi++; nil++; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ node->links[0].node=wordNode; node->links[0].like=pInst->fct; @@ -2745,12 +2909,16 @@ void CreateIEModels(Word thisWord,PronHolder *pInst,int p,int q, pInst->nend=1; /* Start */ - hmm=GetHCIModel(hci,0,pInst->phones[p], - FindRContext(hci,pInst,p,0)); + hmm=GetHCIModel(hci,0,pInst->phones[p], FindRContext(hci,pInst,p,0)); + /* sxz20 */ + if(markLogHmm) lhmm = GetHCILabel(hci, 0, pInst->phones[p], FindRContext(hci, pInst, p, 0)); + if (hmm->transP[1][hmm->numStates]tee=FALSE; nin++; nil++; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ node->links[0].node=(pInst->chain?pInst->chain:pInst->ends); node->links[0].like=pInst->fct; pInst->starts=node; @@ -2779,6 +2947,8 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, Ptr tptr; Boolean tee,initTee,anyTee; int j,k,n; + /* sxz20 */ + LabId lhmm = NULL; /* Single phone word means that we need to */ /* build a complete cross-bar of contexts */ @@ -2788,18 +2958,30 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* Special case because one phone words so expensive */ if (IsHCIContextInd(hci,pInst->phones[p])) { hmm=GetHCIModel(hci,0,pInst->phones[p],0); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, 0, pInst->phones[p], 0); + if (hmm->transP[1][hmm->numStates]tee=FALSE; nin++; nil++; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 0); + /*node=NewNode(net->heap,hmm,0);*/ pInst->starts=node; /* As well as copies of final context free ones */ for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[n], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; ncf++; - dest=NewNode(net->heap,hmm,0); + /* sxz20 */ + dest = NewNode(net->heap, hmm, lhmm, 0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=pInst->chain;pInst->chain=dest; nil++; @@ -2841,8 +3023,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, pInst->chain=dest; ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[n], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ nil++; node->links[0].node=dest; node->links[0].like=pInst->fct; @@ -2876,8 +3064,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, else { ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[0],-1); + /* sxz20 */ + if(markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[0], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 0); + /*node=NewNode(net->heap,hmm,0);*/ /* Chain these after NULL node */ node->chain=pInst->starts; @@ -2888,8 +3082,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, for (n=1;nphones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[n], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; - dest=NewNode(net->heap,hmm,0); + /* sxz20 */ + dest = NewNode(net->heap, hmm, lhmm, 0); + /*dest=NewNode(net->heap,hmm,0);*/ node->nlinks=1; nil++; node->links=(NetLink*) New(net->heap, @@ -2917,6 +3117,10 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, if (pInst->rc[k]==NULL) continue; hmm=GetHCIModel(hci,0,pInst->phones[q],k); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,0,pInst->phones[q],k); + for(node=pInst->ends;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; @@ -2925,7 +3129,9 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, else tee=TRUE; /* Still could be save by final CF models */ /* Create new model */ nin++; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 0); + /*node=NewNode(net->heap,hmm,0);*/ node->chain=pInst->ends;pInst->ends=node; pInst->nend++; linkNode->nlinks++; @@ -2933,9 +3139,15 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* As well as copies of final context free ones */ for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest=NewNode(net->heap,hmm,lhmm,0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=pInst->chain;pInst->chain=dest; nil++; @@ -3023,7 +3235,11 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, else { ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[0],-1); - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[0],-1); + node=NewNode(net->heap,hmm,lhmm,0); + /*node=NewNode(net->heap,hmm,0);*/ pInst->lc[j]=node; /* Chain these after NULL node */ @@ -3035,8 +3251,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, for (n=1;nphones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest = NewNode(net->heap, hmm, lhmm, 0); + /*dest=NewNode(net->heap,hmm,0);*/ node->nlinks=1; nil++; node->links=(NetLink*) New(net->heap, @@ -3060,6 +3282,10 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, if (pInst->rc[k]==NULL) continue; hmm=GetHCIModel(hci,j,pInst->phones[q],k); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,j,pInst->phones[q],k); + for(node=pInst->ends;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; @@ -3069,7 +3295,9 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* Create new model */ nin++; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node=NewNode(net->heap,hmm,lhmm,0); + /*node=NewNode(net->heap,hmm,0);*/ node->chain=pInst->ends;pInst->ends=node; pInst->nend++; linkNode->nlinks++; @@ -3077,9 +3305,15 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* As well as copies of final context free ones */ for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest=NewNode(net->heap,hmm,lhmm,0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=pInst->chain;pInst->chain=dest; nil++; @@ -3141,39 +3375,53 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, static void CreateXEModels(PronHolder *pInst,int p, int q, Network *net,HMMSetCxtInfo *hci,MemHeap *heap) { - NetNode *node,*dest,*chainNode,*searchNode; + NetNode *node,*dest,*chainNode; NetLink *links; HLink hmm; Ptr tptr; Boolean tee,anyTee; int j,n; + /* sxz20 */ + LabId lhmm = NULL; /* Cross word context and more than one phone */ /* Last cd phone */ - chainNode=NULL;searchNode=NULL; + chainNode=NULL; tptr=New(heap,1); anyTee=FALSE; /* Haven't seen any final tee chains */ for(j=0;jxc;j++) { if (pInst->rc[j]==NULL) continue; hmm=GetHCIModel(hci,FindLContext(hci,pInst,q,-1), pInst->phones[q],j); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,FindLContext(hci,pInst,q,-1),pInst->phones[q],j); + for(node=pInst->ends;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; if (node==NULL) { if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + node=NewNode(net->heap,hmm,lhmm,0); + /*node=NewNode(net->heap,hmm,0);*/ node->chain=pInst->ends; pInst->ends=node; pInst->nend++; for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest=NewNode(net->heap,hmm,lhmm,0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=chainNode;chainNode=dest; nil++; @@ -3233,14 +3481,20 @@ static void CreateXEModels(PronHolder *pInst,int p, int q, if (pInst->lc[j]==NULL) continue; hmm=GetHCIModel(hci,j,pInst->phones[p], FindRContext(hci,pInst,p,-1)); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,j,pInst->phones[p],FindRContext(hci,pInst,p,-1)); + for(node=pInst->starts;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; if (node==NULL) { if (hmm->transP[1][hmm->numStates]heap,hmm, - (pInst->chain==NULL?pInst->nend:1)); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, (pInst->chain == NULL? pInst->nend: 1)); + /*node=NewNode(net->heap,hmm, + (pInst->chain==NULL?pInst->nend:1));*/ nil+=node->nlinks; node->chain=pInst->starts;pInst->starts=node; @@ -3263,8 +3517,14 @@ static void CreateXEModels(PronHolder *pInst,int p, int q, dest=node; ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,1); + /* sxz20 */ + node=NewNode(net->heap,hmm,lhmm,1); + /*node=NewNode(net->heap,hmm,1);*/ if (n!=0) { node->chain=chainNode; chainNode=node; diff --git a/HTKLib/HNet.h b/HTKLib/HNet.h old mode 100644 new mode 100755 index a13b2ff..aaad870 --- a/HTKLib/HNet.h +++ b/HTKLib/HNet.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HNet.h Network and Lattice Functions */ +/* File: HNet.h Network and lattice functions */ /* ----------------------------------------------------------- */ -/* !HVER!HNET: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HNet: 3.5.0 [CUED 12/10/15] */ /* Nets come in two forms. @@ -55,6 +58,9 @@ extern "C" { #endif +/* cz277 - ANN */ +#include "HDict.h" + /* ------------------------ Initialisation --------------------------- */ void InitNet(void); @@ -170,6 +176,8 @@ typedef struct larc float score; /* Field used for pruning/sorting */ LogFloat prlike; /* Pronunciation likelihood of arc */ + /* cz277 - scale conf score */ + Ptr hook; } LArc; @@ -386,6 +394,8 @@ struct _NetNode { NetInst *inst; /* Model Instance (if one exists, else NULL) */ NetNode *chain; int aux; + + LabId labid; /* sxz20: Logical HMM name */ }; struct _NetLink{ @@ -526,8 +536,16 @@ int AddHCIContext(HMMSetCxtInfo *hci,LabId labid); Return its context (possibly newly added). */ +/* cz277 - scale conf score */ +void OutputIntField(char field, int val, Boolean bin, char *form, FILE *file); +void OutputFloatField(char field, float val, Boolean bin, char *form, FILE *file); + + #ifdef __cplusplus } #endif #endif /* _HNET_H_ */ + +/* ------------------------- End of HNet.h ------------------------- */ + diff --git a/HTKLib/HParm.c b/HTKLib/HParm.c old mode 100644 new mode 100755 index f417b95..f5bc912 --- a/HTKLib/HParm.c +++ b/HTKLib/HParm.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HParm.c: Speech Parameter File Input/Output */ +/* File: HParm.c Speech parameter file input/output */ /* ----------------------------------------------------------- */ -char *hparm_version = "!HVER!HParm: 3.4.1 [CUED 12/03/09]"; -char *hparm_vc_id = "$Id: HParm.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hparm_version = "!HVER!HParm: 3.5.0 [CUED 12/10/15]"; +char *hparm_vc_id = "$Id: HParm.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -44,7 +47,9 @@ char *hparm_vc_id = "$Id: HParm.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" +#include "HUtil.h" #include "esignal.h" #ifdef UNIX #include @@ -70,7 +75,7 @@ extern Boolean vaxOrder; /* true if byteswapping needed to /* varScale stuff: acts as a cache to stop the scaling file being re-read on each file opening */ -static float varScale[100]; +static float varScale[1000]; static int varScaleDim=0; static char varScaleFN[MAXFNAMELEN] = "\0"; @@ -80,6 +85,7 @@ static ParmKind ForcePKind = ANON; /* force to output a customized parm kind to happy for all the parm kind types supported here */ static HMMSet *hset = NULL; /* hmmset to be used for frontend */ +static MemHeap hstak; /* cz277 - xform hcopy */ /* ------------------------------------------------------------------- */ /* @@ -167,7 +173,36 @@ typedef struct { char* varScaleMask; /* variance estimate file selection mask */ char* varScalePathMask; /* variance estimate file path selection mask */ char* sideXFormMask; /* side XForm mask */ - char* sideXFormExt; /* side XForm mask */ + char* sideXFormExt; /* side XForm mask */ + char* sideXFormDir; /* dir to find side XForm */ + /* from xl207, cz277 - gau */ + char* sideGMMMask; /* side XForm mask */ + char* sideGMMExt; /* side XForm mask */ + char* sideGMMDir; /* side XForm mask */ + char* sideGMMList; + char* sideGMMMMF; /* All the GMMs are in a single MMF and appropriately named */ + + /* cz277 - aug: only 5 are supported, could be extended later */ + char* augFea1DN; /* dir to find the files for augmented feature 1 */ + char* augFea1Mask; /* augmented feature 1 selection mask */ + char* augFea1PathMask; /* augmented feature 1 path selection mask */ + char* augFea2DN; /* dir to find the files for augmented feature 2 */ + char* augFea2Mask; /* augmented feature 2 selection mask */ + char* augFea2PathMask; /* augmented feature 2 path selection mask */ + char* augFea3DN; /* dir to find the files for augmented feature 3 */ + char* augFea3Mask; /* augmented feature 3 selection mask */ + char* augFea3PathMask; /* augmented feature 3 path selection mask */ + char* augFea4DN; /* dir to find the files for augmented feature 4 */ + char* augFea4Mask; /* augmented feature 4 selection mask */ + char* augFea4PathMask; /* augmented feature 4 path selection mask */ + char* augFea5DN; /* dir to find the files for augmented feature 5 */ + char* augFea5Mask; /* augmented feature 5 selection mask */ + char* augFea5PathMask; /* augmented feature 5 path selection mask */ + + /* from mjfg, cz277 - 141022 */ + char* appendXFormMask; /* append XForm mask */ + char* appendXFormExt; /* append XForm ext */ + int appendXFormSize; /* number of parameters to append */ VQTable vqTab; /* VQ table */ Matrix MatTran; /* Stores transformation matrix */ @@ -215,12 +250,25 @@ typedef struct { Vector varScale; /* var scaling vector */ Vector cMeanVector; /* vector loaded from cmean dir */ Vector varScaleVector; /* vector loaded from varscale dir */ + /* cz277 - aug */ + Vector augFea1Vector; /* vector loaded from augmented feature 1 */ + Vector augFea2Vector; /* vector loaded from augmented feature 2 */ + Vector augFea3Vector; /* vector loaded from augmented feature 3 */ + Vector augFea4Vector; /* vector loaded from augmented feature 4 */ + Vector augFea5Vector; /* vector loaded from augmented feature 5 */ + ParmKind matPK; int preFrames; int postFrames; Boolean preQual; InputXForm *xform; AdaptXForm *sideXForm; + /* from xl207, cz277 - gau */ + HMMSet *sideGMM; + StateInfo *siGMM; /* for when a GMM MMF is used for storage */ + char *sideGMMFn; + /* mjfg, cz277 - 141022 */ + AdaptXForm *appendXForm; }IOConfigRec; typedef IOConfigRec *IOConfig; @@ -298,7 +346,35 @@ typedef enum { VARSCALEPATHMASK, /* label mask to idenitfy the path of the variance estimate files */ SIDEXFORMMASK,/* mask for use with side-based xforms */ SIDEXFORMEXT, /* extension for use with side-based xforms */ - + SIDEXFORMDIR, /* directory to find side xform */ + /* from xl207, cz277 - gau */ + SIDEGMMMASK, /* mask for use with side-based GMM normalisation */ + SIDEGMMEXT, /* mask for use with side-based GMM normalisation */ + SIDEGMMDIR, /* mask for use with side-based GMM normalisation */ + SIDEGMMLIST, /* name of side-based GMM normalsisation */ + SIDEGMMMMF, /* all side-based GMM normalisation is in a single MMF (names appropriate) */ + /* cz277 - aug */ + AUGFEA1DIR, /* dir to find the augmented feature 1 file */ + AUGFEA1MASK, /* label mask to identify the augmented feature 1 file */ + AUGFEA1PATHMASK, /* label mask to identify the path of the augmented feature 1 files */ + AUGFEA2DIR, /* dir to find the augmented feature 2 file */ + AUGFEA2MASK, /* label mask to identify the augmented feature 2 file */ + AUGFEA2PATHMASK, /* label mask to identify the path of the augmented feature 2 files */ + AUGFEA3DIR, /* dir to find the augmented feature 3 file */ + AUGFEA3MASK, /* label mask to identify the augmented feature 3 file */ + AUGFEA3PATHMASK, /* label mask to identify the path of the augmented feature 3 files */ + AUGFEA4DIR, /* dir to find the augmented feature 4 file */ + AUGFEA4MASK, /* label mask to identify the augmented feature 4 file */ + AUGFEA4PATHMASK, /* label mask to identify the path of the augmented feature 4 files */ + AUGFEA5DIR, /* dir to find the augmented feature 5 file */ + AUGFEA5MASK, /* label mask to identify the augmented feature 5 file */ + AUGFEA5PATHMASK, /* label mask to identify the path of the augmented feature 5 files */ + + /* from mjfg, cz277 - 141022 */ + APPENDXFORMMASK,/* mask for use with append xforms */ + APPENDXFORMEXT, /* extension for use with append xforms */ + APPENDXFORMSIZE, /* size of the append xforms */ + /* MatTran file */ MATTRANFN, /* File name for MatTran file */ MATTRAN, @@ -328,7 +404,16 @@ static char * ioConfName[CFGSIZE] = { "DOUBLEFFT", "VARSCALEFN", "CMEANDIR" , "CMEANMASK", "CMEANPATHMASK", - "VARSCALEDIR", "VARSCALEMASK" , "VARSCALEPATHMASK" , "SIDEXFORMMASK", "SIDEXFORMEXT", + "VARSCALEDIR", "VARSCALEMASK" , "VARSCALEPATHMASK" , "SIDEXFORMMASK", "SIDEXFORMEXT", "SIDEXFORMDIR", + /* from xl207, cz277 - gau */ + "SIDEGMMMASK", "SIDEGMMEXT", "SIDEGMMDIR", "SIDEGMMLIST", "SIDEGMMMMF", + /* cz277 - aug */ + "AUGFEA1DIR", "AUGFEA1MASK", "AUGFEA1PATHMASK", "AUGFEA2DIR", "AUGFEA2MASK", "AUGFEA2PATHMASK", + "AUGFEA3DIR", "AUGFEA3MASK", "AUGFEA3PATHMASK", "AUGFEA4DIR", "AUGFEA4MASK", "AUGFEA4PATHMASK", + "AUGFEA5DIR", "AUGFEA5MASK", "AUGFEA5PATHMASK", + /* from mjfg, cz277 - 141022 */ + "APPENDXFORMMASK", "APPENDXFORMEXT", "APPENDXFORMSIZE", + "MATTRANFN", "MATTRAN", "THIRDWINDOW", "FOURTHWINDOW" }; @@ -359,8 +444,19 @@ static const IOConfigRec defConf = { NULL, /* VARSCALEFN */ NULL,NULL,NULL, /* CMEANDIR CMEANMASK CMEANPATHMASK */ NULL,NULL,NULL, /* VARSCALEDIR VARSCALEMASK VARSCALEPATHMASK */ - - NULL,NULL, /* SIDEXFORMMASK SIDEXFORMEXT*/ + NULL,NULL,NULL, /* SIDEXFORMMASK SIDEXFORMEXT SIDEXFORMDIR*/ + /* from xl207, cz277 - gau */ + NULL,NULL,NULL,NULL, /* SIDEGMMMASK SIDEGMMEXT SIDEGMMDIR SIDEGMMLIST */ + NULL, /* SIDEGMMMMF */ + /* cz277 - aug */ + NULL, NULL, NULL, /* AUGFEA1DIR, AUGFEA1MASK, AUGFEA1PATHMASK */ + NULL, NULL, NULL, /* AUGFEA2DIR, AUGFEA2MASK, AUGFEA2PATHMASK */ + NULL, NULL, NULL, /* AUGFEA3DIR, AUGFEA3MASK, AUGFEA3PATHMASK */ + NULL, NULL, NULL, /* AUGFEA4DIR, AUGFEA4MASK, AUGFEA4PATHMASK */ + NULL, NULL, NULL, /* AUGFEA5DIR, AUGFEA5MASK, AUGFEA5PATHMASK */ + + /* from mjfg, cz277 - 141022 */ + NULL,NULL,0, /* APPENDXFORMMASK APPENDXFORMEXT APPENDXFORMSIZE */ NULL, /* vqTab */ NULL, NULL, 2, 2 /* MATTRANFN, MATTRAN THIRDWIN FOURTHWIN */ @@ -543,6 +639,8 @@ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; static MemHeap parmHeap; /* HParm no longer uses gstack */ +/* from xl207, cz277 - gau */ +static MemHeap gmmStack; /* for the side GMMs */ static Boolean hparmBin=TRUE; /* HTK format files are binary */ @@ -660,10 +758,10 @@ void SetParmHMMSet(Ptr aset) by ensuring that the transforms have the same macroname. */ if (strcmp(hmm_xf->xformName,cfg_xf->xformName)) - HError(6396,"Incompatible XForm macros in MMF and config file %s and %s", + HError(-1,"Incompatible XForm macros in MMF and config file %s and %s", hmm_xf->xformName,cfg_xf->xformName); else if (cfg_xf != hmm_xf) - HRError(6396,"Assumed compatible XForm macro %s in files %s and %s", + HRError(-1,"Assumed compatible XForm macro %s in files %s and %s", hmm_xf->xformName,hmm_xf->fname,cfg_xf->fname); } else { /* @@ -731,13 +829,24 @@ static AdaptXForm *LoadSideXForm(IOConfig cf, char *fname) AdaptXForm *xf; char macroname[MAXSTRLEN]; char side[MAXSTRLEN]; + char xfname[MAXSTRLEN]; Boolean maskMatch; + if (hset == NULL) { /* cz277 - xform hcopy */ + CreateHeap(&hstak,"temporary HMM stack", MSTAK, 1, 1.0, 5000000, 50000000); + hset = (HMMSet*) New(&gcheap, sizeof(HMMSet) ); + CreateHMMSet(hset, &hstak, TRUE); + hset->swidth[0] = 1; + hset->hsKind = PLAINHS; + } + maskMatch = MaskMatch(cf->sideXFormMask,side, fname); if ((!maskMatch) && (fname != NULL)) HError(999,"Side xform mask %s does not match filename %s",cf->sideXFormMask,fname); MakeFN(side,NULL,cf->sideXFormExt,macroname); - xf = LoadOneXForm(hset,macroname,NULL); + MakeFN(side, cf->sideXFormDir, cf->sideXFormExt, xfname); /* cz277 - xform hcopy */ + /*xf = LoadOneXForm(hset,macroname,NULL);*/ + xf = LoadOneXForm(hset, macroname, xfname); if (xf == NULL) HError(999,"Cannot correctly load side transform %s",macroname); @@ -749,6 +858,70 @@ static AdaptXForm *LoadSideXForm(IOConfig cf, char *fname) return xf; } +/* from xl207, cz277 - gau */ +static HMMSet *LoadSideGMM(IOConfig cf, char *fname) +{ + char macroname[MAXSTRLEN]; + char side[MAXSTRLEN]; + Boolean maskMatch; + LabId id; + MLink m; + + maskMatch = MaskMatch(cf->sideGMMMask,side, fname); + if ((!maskMatch) && (fname != NULL)) + HError(999,"Side GMM mask %s does not match filename %s",cf->sideGMMMask,fname); + MakeFN(side,cf->sideGMMDir,cf->sideGMMExt,macroname); + if (strcmp(macroname,cf->sideGMMFn) != 0) { + printf("Loaded new side GMM %s\n",macroname); + if (cf->sideGMMMMF == NULL) { + if (cf->sideGMM->vecSize != 0) + ResetHMMSet(cf->sideGMM); + AddMMF(cf->sideGMM,macroname); + if (cf->sideGMMList != NULL) + MakeHMMSet(cf->sideGMM,cf->sideGMMList); + else + HError(999,"Must specify the model list sideGMMList as well"); + LoadHMMSet(cf->sideGMM,NULL,NULL); + if (cf->sideGMM->numStates != 1) + HError(999,"Only a GMM may be used for side normalisation"); + } else { + /* Need to set the stateInfo from the GMM MMF */ + id = GetLabId(macroname,FALSE); + m = FindMacroName(cf->sideGMM,'s',id); + if (id == NULL || m == NULL) { + HError(999,"LoadSideGMM: no macro %s, type s exists in GMM MMF %s",macroname,cf->sideGMMMMF); + } + cf->siGMM = (StateInfo *)(m->structure); + } + /* I think this is a memory leak - has it been fixed? */ + cf->sideGMMFn = CopyString(&gmmStack,macroname); + } + return cf->sideGMM; +} + +/* from mjfg, cz277 - 141022 */ +static AdaptXForm *LoadAppendXForm(IOConfig cf, char *fname) +{ + AdaptXForm *xf; + char macroname[MAXSTRLEN]; + char side[MAXSTRLEN]; + Boolean maskMatch; + + maskMatch = MaskMatch(cf->appendXFormMask,side, fname); + if ((!maskMatch) && (fname != NULL)) + HError(999,"Side xform mask %s does not match filename %s",cf->appendXFormMask,fname); + MakeFN(side,NULL,cf->appendXFormExt,macroname); + xf = LoadOneXForm(hset,macroname,NULL); + if (xf == NULL) + HError(999,"Cannot correctly load append transform %s",macroname); + + /* Check that this is a valid side XForm */ + if (xf->bclass->numClasses != 1) HError(999,"Can only use global bseclasses for appendXforms"); + if (xf->parentXForm != NULL) HError(999,"Cannot have parent xforms with appendXforms"); + + return xf; +} + static void ApplyXForm2Vector(LinXForm *linXForm, Vector mean) { Vector vec, bias; @@ -866,6 +1039,33 @@ static IOConfig ReadIOConfig(IOConfig p) case CMEANPATHMASK: p->cMeanPathMask = CopyString(&gcheap,GS(s)); break; case SIDEXFORMMASK: p->sideXFormMask = CopyString(&gcheap,GS(s)); break; case SIDEXFORMEXT: p->sideXFormExt = CopyString(&gcheap,GS(s)); break; + case SIDEXFORMDIR: p->sideXFormDir = CopyString(&gcheap,GS(s)); break; + /* from xl207, cz277 - gau */ + case SIDEGMMMASK: p->sideGMMMask = CopyString(&gcheap,GS(s)); break; + case SIDEGMMEXT: p->sideGMMExt = CopyString(&gcheap,GS(s)); break; + case SIDEGMMDIR: p->sideGMMDir = CopyString(&gcheap,GS(s)); break; + case SIDEGMMLIST: p->sideGMMList = CopyString(&gcheap,GS(s)); break; + case SIDEGMMMMF: p->sideGMMMMF = CopyString(&gcheap,GS(s)); break; + /* cz277 - aug */ + case AUGFEA1DIR: p->augFea1DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA1MASK: p->augFea1Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA1PATHMASK: p->augFea1PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA2DIR: p->augFea2DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA2MASK: p->augFea2Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA2PATHMASK: p->augFea2PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA3DIR: p->augFea3DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA3MASK: p->augFea3Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA3PATHMASK: p->augFea3PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA4DIR: p->augFea4DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA4MASK: p->augFea4Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA4PATHMASK: p->augFea4PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA5DIR: p->augFea5DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA5MASK: p->augFea5Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA5PATHMASK: p->augFea5PathMask = CopyString(&gcheap, GS(s)); break; + /* from mjfg, cz277 - 141022 */ + case APPENDXFORMMASK: p->appendXFormMask = CopyString(&gcheap,GS(s)); break; + case APPENDXFORMEXT: p->appendXFormExt = CopyString(&gcheap,GS(s)); break; + case APPENDXFORMSIZE: p->appendXFormSize = GI(s); break; case MATTRANFN: p->MatTranFN= CopyString(&gcheap, GS(s)); break; case THIRDWINDOW: p->thirdWin = GI(s); break; @@ -876,6 +1076,18 @@ static IOConfig ReadIOConfig(IOConfig p) if (p->MatTranFN != NULL){ LoadMat (&gcheap,p); } + + /* from xl207, cz277 - from gau */ + if ((p->sideGMMList != NULL) || (p->sideGMMMMF != NULL)) { + p->sideGMMFn = NewString(&gmmStack,MAXFNAMELEN); + p->sideGMM = (HMMSet *)New(&gmmStack,sizeof(HMMSet)); + CreateHMMSet(p->sideGMM,&gmmStack,TRUE); + if (p->sideGMMMMF != NULL) { + printf("Using GAUSS GMMs from %s\n",p->sideGMMMMF); + AddMMF(p->sideGMM,p->sideGMMMMF); + LoadHMMSet(p->sideGMM,NULL,NULL); + } + } if (p->varScaleFN != NULL){ LoadVarScale(&gcheap,p); @@ -910,6 +1122,8 @@ ReturnStatus InitParm(void) char buf[MAXSTRLEN]; CreateHeap(&parmHeap, "HPARM C Heap", MSTAK, 1, 1.0, 20000, 80000 ); + /* from xl207, cz277 - gau */ + CreateHeap(&gmmStack,"GMMStore", MSTAK, 1, 1.0, 5000, 50000); Register(hparm_version,hparm_vc_id); nParm = GetConfig("HPARM", TRUE, cParm, MAXGLOBS); @@ -977,7 +1191,7 @@ ReturnStatus SetChannel(char *confName) if (((curChan->cf).MatTranFN == NULL) && ((curChan->cf).xform != NULL)) (curChan->cf).MatTranFN = (defChan->cf).MatTranFN; /* This should be after setting the model up. Set input xform if HPARM1 is being used */ - if ((hset->xf == NULL) && (strcmp("HPARM1",buf)==0)) { + if ((hset != NULL) && (hset->xf == NULL) && (strcmp("HPARM1",buf)==0)) { hset->xf = (curChan->cf).xform; } else { /* commented out so that stored in header, rather than separately */ @@ -1086,7 +1300,7 @@ static char *pmkmap[] = {"WAVEFORM", "LPC", "LPREFC", "LPCEPSTRA", "LPDELCEP", "IREFC", "MFCC", "FBANK", "MELSPEC", "USER", "DISCRETE", "PLP", - "ANON"}; + "ANON", "ANN"}; /* cz277 - ANN */ /* EXPORT-> ParmKind2Str: convert given parm kind to string */ char *ParmKind2Str(ParmKind kind, char *buf) @@ -1279,6 +1493,50 @@ static void ApplyStaticMat(IOConfig cf, float *data, Matrix trans, int vSize, in cf->nUsed = mrows; } +/* from xl207, cz277 - gau */ +/* Apply the global feature transform */ +static void ApplyGMMNorm(IOConfig cf, float *data, HMMSet *hset, int vSize, int n, int step, int offset) +{ + int d,i,j,k; + float cum, *fp; + StreamElem *se; + MixtureElem *me; + StateInfo *si=NULL; + HMMScanState hss; + + HError(999,"Gaussianisation is disabled"); + d = hset->vecSize; + if (d != hset->swidth[0]) + HError(999,"Only GMMs with streams equal to the dimensions can be used"); + step = cf->nCols; + + if (cf->sideGMMMMF == NULL) { + /* extract the state */ + NewHMMScan(hset,&hss); + do { + while (GoNextState(&hss,TRUE)) + si = hss.si; + } while (GoNextHMM(&hss)); + EndHMMScan(&hss); + } else { /* MMF used for storage and StateInfo already selected */ + si = cf->siGMM; + } + + se = si->pdf+1; + for (i=0; ispdf.cpdf+1; + for (k=1;k<=se->nMix;k++,me++) + cum += me->weight * CumGauss(*fp,me->mpdf->mean[1],me->mpdf->cov.var[1]); + *fp = GaussInv(cum); + fp += step; + } + } + +} + /* ---------------- Data Sizing and Memory allocation --------------- */ /* MakeIOConfig: Create an IOConfig object. Initial values are copied @@ -1386,20 +1644,21 @@ static void ValidCodeParms(IOConfig cf) /* EXPORT->ValidConversion: checks that src -> tgt conversion is possible */ Boolean ValidConversion (ParmKind src, ParmKind tgt) { - static short xmap[13][13] = { - { 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0}, /* src = WAVEFORM */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPC */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPREFC */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPCEPSTRA */ - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPDELCEP */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = IREFC */ - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, /* src = MFCC */ - { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, /* src = FBANK */ - { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, /* src = MELSPEC */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, /* src = USER */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, /* src = DISCRETE */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, /* src = PLP */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = ANON */ + static short xmap[14][14] = { + { 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, /* src = WAVEFORM */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPC */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPREFC */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPCEPSTRA */ + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPDELCEP */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = IREFC */ + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, /* src = MFCC */ + { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1}, /* src = FBANK */ + { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1}, /* src = MELSPEC */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, /* src = USER */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1}, /* src = DISCRETE */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, /* src = PLP */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = ANON */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* cz277 - ANN */ }; if (src == tgt) return TRUE; if (xmap[src&BASEMASK][tgt&BASEMASK] == 0 ) return FALSE; @@ -1630,7 +1889,11 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, HError (6371, "AddQualifiers: HIGHDIFF=T not supported with source features that contain derivatives already"); - if ((cf->curPK == cf->tgtPK) && (cf->MatTranFN == NULL)) return; +/* cz277 - cmvnbug */ + /*if ((cf->curPK == cf->tgtPK) && (cf->MatTranFN == NULL) && (cf->varScale == NULL) && (cf->varScaleVector == NULL) && (cf->cMeanVector == NULL)) + return; +*/ + if (trace&T_QUA) printf("HParm: adding Qualifiers to %s ...",ParmKind2Str(cf->curPK,buf)); if (cf->MatTranFN != NULL) { /* Do the generic checks that the matrix is appropriate */ @@ -1706,9 +1969,10 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } /* Zero Mean the static coefficients if required */ - if ((cf->tgtPK&HASZEROM) && !(cf->curPK&HASZEROM)) { + /*if ((cf->tgtPK&HASZEROM) && !(cf->curPK&HASZEROM)) {*/ /* cz277 - cmvnbug */ /* if a global mean vector is not available */ if (cf->cMeanVector == 0) { + if ((cf->tgtPK&HASZEROM) && !(cf->curPK&HASZEROM)) { /* cz277 - cmvnbug */ if (cf->MatTranFN == NULL || (!cf->preQual)) { d = span[1]-span[0]+1; if (cf->tgtPK&HASZEROC && !(cf->curPK&HASNULLE)) /* zero mean c0 too */ @@ -1723,6 +1987,7 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, FZeroMean(data,d,nRows,cf->nCols); cf->curPK |= HASZEROM; + } /* cmvnbug */ } /* if a global cepstral mean file is available */ else { @@ -1739,7 +2004,7 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } cf->curPK |= HASZEROM; } - } + /*}*/ /* cz277 - cmvnbug */ if (UseOldXFormCVN){ @@ -1755,9 +2020,10 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } /* Scale the variances */ if (cf->varScaleFN) { - if ((VectorSize (cf->varScale) != cf->tgtUsed) && (highDiff != TRUE)) + if ((VectorSize (cf->varScale) != cf->tgtUsed) && (highDiff != TRUE)) { HError(6376 ,"AddQualifiers: Mismatch beteen varScale (%d) and target size %d", VectorSize (cf->varScale), cf->tgtUsed); + } if (trace&T_QUA) printf("\nHParm: variance normalisation for %d cols from %d rows", cf->tgtUsed, nRows); @@ -1786,18 +2052,43 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } } } - } - - else { + /* from xl207, cz277 - gau */ + /* Do any GMM normalisation */ + if ((cf->sideGMMList != NULL) || (cf->sideGMMMMF != NULL)) { + ApplyGMMNorm(cf,data,cf->sideGMM,cf->nCols,nRows,0,0); + } + + /* Now apply any side specific xforms */ + if (cf->sideXForm != NULL) { + if (cf->sideXForm->xformSet->numXForms == 1) { + xf = cf->sideXForm->xformSet->xforms[1]; + /* if (cf->varScaleFN) { */ + /* if (xf->vecSize != d) */ + /* HError(999,"Incompatible sizes %d and %d",xf->vecSize,d); */ + /* } */ + d = xf->vecSize; + tmp = CreateVector(&gstack,d); + step = cf->nCols; fp = data; + for (j=0;jvarScaleFN) { if (cf->varScaleVector == 0) { HError (6376, "AddQualifiers: no variance scaling vector found"); } d = VectorSize(cf->varScaleVector); - if (VectorSize (cf->varScale) != d) + if (VectorSize (cf->varScale) != d) { HError(6376 ,"AddQualifiers: Mismatch beteen varScale (%d) and target size %d", VectorSize (cf->varScale), d); + } if (trace&T_QUA) printf("\nHParm: variance normalisation for %d cols from %d rows", cf->tgtUsed, nRows); @@ -1811,14 +2102,27 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } } } + + if ((cf->MatTranFN != NULL) && (!cf->preQual)) { + if (cf->matPK != cf->curPK) { + /* Need to check that the correct qualifiers are used */ + HError(999,"Incorrect qualifiers in parameter type (%s %s)", + ParmKind2Str(cf->curPK,buff1),ParmKind2Str(cf->matPK,buff2)); + } + ApplyStaticMat(cf,data,cf->MatTran,cf->nCols,nRows,0,0); + pbuf->main.nRows -= (cf->postFrames + cf->preFrames); + cf->nSamples = pbuf->main.nRows; + } + /* from xl207, cz277 - gau */ + /* Do any GMM normalisation */ + if ((cf->sideGMMList != NULL) || (cf->sideGMMMMF != NULL)) { + ApplyGMMNorm(cf,data,cf->sideGMM,cf->nCols,nRows,0,0); + } + /* cz277 - 141022 */ /* Now apply any side specific xforms */ - if (cf->sideXForm != NULL) { + if ((cf->sideXForm != NULL) && ( cf->sideXForm->xformSet->numXForms == 1)) { xf = cf->sideXForm->xformSet->xforms[1]; - if (cf->varScaleFN) { - if (xf->vecSize != d) - HError(999,"Incompatible sizes %d and %d",xf->vecSize,d); - } d = xf->vecSize; tmp = CreateVector(&gstack,d); step = cf->nCols; fp = data; @@ -1830,17 +2134,42 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } FreeVector(&gstack,tmp); } - - if ((cf->MatTranFN != NULL) && (!cf->preQual)) { - if (cf->matPK != cf->curPK) { - /* Need to check that the correct qualifiers are used */ - HError(999,"Incorrect qualifiers in parameter type (%s %s)", - ParmKind2Str(cf->curPK,buff1),ParmKind2Str(cf->matPK,buff2)); + /* cz277 - 141022 */ + /* Finally append the append XForm */ + if (cf->appendXForm != NULL) { + Vector appendVec, bias; + int b,j,cnti,bsize; + Matrix A; + + xf = cf->appendXForm->xformSet->xforms[1]; + /* convert parametes to a vector and check */ + appendVec = CreateVector(&gstack,cf->appendXFormSize); + d = xf->vecSize; + for (b=1,cnti=1;b<=IntVecSize(xf->blockSize);b++) { + bsize = xf->blockSize[b]; + A = xf->xform[b]; + for (i=1;i<=bsize;i++) { + for (j=1;j<=bsize;j++,cnti++) + appendVec[cnti] = A[i][j]; + } } - ApplyStaticMat(cf,data,cf->MatTran,cf->nCols,nRows,0,0); - pbuf->main.nRows -= (cf->postFrames + cf->preFrames); - cf->nSamples = pbuf->main.nRows; - } + /* Append bias if required */ + bias = xf->bias; + if (bias != NULL) { + for (i=1;i<=d;i++,cnti++) + appendVec[cnti] = bias[i]; + } + if (cnti != cf->appendXFormSize+1) { + HError(999,"Incompatible append XForm size (%d %d)",cnti-1,cf->appendXFormSize); + } + step = cf->nCols; fp = data + step-cf->appendXFormSize; + for (j=0;jappendXFormSize;i++) *(fp+i) = appendVec[i+1]; + fp += step; + } + FreeVector(&gstack,appendVec); + } + } if (trace&T_QUA) @@ -2204,6 +2533,13 @@ static void SetUpForCoding(MemHeap *x, IOConfig cf, int frSize) else cf->tgtUsed = NumRows(cf->MatTran); } + + /* from mjfg, cz277 - 141022 */ + /* expand the size of the cfg to support the append transform */ + if (cf->appendXFormMask != NULL) { + cf->tgtUsed += cf->appendXFormSize; + } + cf->nCols=TotalComps(NumStatic(cf->nUsed,cf->curPK),cf->tgtPK); cf->nCols = (cf->nCols>cf->tgtUsed)?cf->nCols:cf->tgtUsed; cf->nCvrt = cf->nUsed; @@ -2579,15 +2915,14 @@ static void SetAudioSpDetParms(ParmBuf pbuf, float dur, Boolean warn) static void SetWaveSpDetParms(ParmBuf pbuf) { IOConfig cf = pbuf->cf; - Vector v,eFr; + Vector eFr; float mlRes[ml_cnt],x,m,e,range,off; - int i,j,n,nFr,nBl,xMin=32767,xMax=-32768; + int i,j,n,nFr,xMin=32767,xMax=-32768; short *data; long nSamp; off = 0.0; n=cf->frSize; - v=CreateVector(&gstack,cf->frSize); data = GetWaveDirect(pbuf->in.w,&nSamp); nFr = (nSamp-cf->frSize)/cf->frRate + 1; @@ -2606,7 +2941,7 @@ static void SetWaveSpDetParms(ParmBuf pbuf) off += m; } - off=off/nFr; nBl=nFr/ML_PARTS; + off=off/nFr; range=(xMax-xMin)/65536.0; CalcSilDetParms(pbuf,mlRes,eFr,off,range); @@ -2825,7 +3160,7 @@ void RunSilDet(ParmBuf pbuf,Boolean cleared) /* EXPORT ReadESIGPHeader: get header from Esignal pamameter file; return FALSE in case of failure */ -Boolean ReadESIGPHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadESIGPHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, short *kind, Boolean *bSwap, Boolean isPipe) { long hdrS; @@ -3348,6 +3683,77 @@ static void LoadVarScaleVector(MemHeap* x, IOConfig cf, char *fname) CloseSource (&src); } +/* cz277 - aug */ +/* load appropriate vectors for augmented features */ +static void LoadAugFeaVector(MemHeap *x, IOConfig config, char *fileName, char *augFeaDN, char *augFeaMask, char *augFeaPathMask, Vector *augFeaVecPtr) { + static char augFeaNamePrev[MAXFNAMELEN] = ""; + static Vector augFeaVector = NULL; + char augFeaName[MAXFNAMELEN]; + char pathName[MAXFNAMELEN]; + char buf1[MAXFNAMELEN], buf2[MAXFNAMELEN]; + Source source; + int dim; + + /* make the file name and open it */ + if (augFeaDN == 0 || augFeaMask == 0) { + HError(9999, "LoadAugFeaVector: Mask or dir missing"); + } + if (!MaskMatch(augFeaMask, augFeaName, fileName)) { + HError(9999, "LoadAugFeaVector: Non-matching mask %s", augFeaMask); + } + if (augFeaPathMask != 0) { + if (!MaskMatch(augFeaPathMask, pathName, fileName)) { + HError(9999, "LoadAugFeaVector: Non-matching path mask %s", augFeaPathMask); + } + MakeFN(pathName, augFeaDN, 0, buf2); + MakeFN(augFeaName, buf2, 0, buf1); + } + else { + MakeFN(augFeaName, augFeaDN, 0, buf1); + } + /* caching of vector */ + if (strcmp(buf1, augFeaNamePrev) == 0) { /* names match, old vector must be the same */ + *augFeaVecPtr = CreateVector(x, VectorSize(augFeaVector)); + CopyVector(augFeaVector, *augFeaVecPtr); + return; + } + else { + strcpy(augFeaNamePrev, buf1); + } + + /* read file header and the augFea vector kind */ + if (InitSource(buf1, &source, NoFilter) < SUCCESS) { + HError(9999, "LoadAugFeaVector: Can't open augmented feature file %s", buf1); + } + SkipComment(&source); + ReadString(&source, buf2); + if (strcmp(buf2, "") != 0) { + HError(9999, "LoadAugFeaVector: is missing, read %s", buf2); + } + ReadString(&source, buf2); + /* load augFea vector */ + while ((strcmp(buf2, "") != 0) && (!feof(source.f))) { + ReadString(&source, buf2); + } + if (feof(source.f)) { + HError(9999, "LoadAugFeaVector: is missing, read %s", buf2); + } + ReadInt(&source, &dim, 1, FALSE); + + /* cachubg of vector */ + if (augFeaVector) { + Dispose(&gcheap, augFeaVector); + } + augFeaVector = CreateVector(&gcheap, dim); + if (!ReadVector(&source, augFeaVector, FALSE)) { + HError(9999, "LoadAugFeaVector: Couldn't read augmented feature vector from file"); + } + + *augFeaVecPtr = CreateVector(x, dim); + CopyVector(augFeaVector, *augFeaVecPtr); + CloseSource(&source); +} + /* ---------- Parameter File Channel Operations ----------- */ #define CRCC_NONE 65535 @@ -3474,8 +3880,12 @@ static int GetParm(ParmBuf pbuf,int nFrame,void *data) r=n=0; size=(cf->srcUsed>cf->tgtUsed)?cf->srcUsed:cf->tgtUsed; - v=CreateVector(&gstack,size); - s=CreateShortVec(&gstack,size); + /* cz277 - mtload */ + /*v=CreateVector(&gstack,size); + s=CreateShortVec(&gstack,size);*/ + v = CreateVector(&gcheap, size); + s = CreateShortVec(&gcheap, size); + while (rinRow+r>=pbuf->lastRow) pbuf->chClear=TRUE; } - FreeShortVec(&gstack,s); - FreeVector(&gstack,v); + /* cz277 - mtload */ + /*FreeShortVec(&gstack,s); + FreeVector(&gstack,v);*/ + FreeShortVec(&gcheap, s); + FreeVector(&gcheap, v); + return(r); } @@ -3566,7 +3980,9 @@ static ReturnStatus OpenParmChannel(ParmBuf pbuf,char *fname, int *ret_val) FILE *f; long nSamples,sampPeriod; int initRows,i, tmp; - short sampSize,kind; + /*short sampSize,kind;*/ + short kind; + unsigned short sampSize; /* cz277 - cbu */ char b1[50],b2[50]; Boolean isEXF; char actfname[MAXFNAMELEN]; @@ -3630,12 +4046,12 @@ static ReturnStatus OpenParmChannel(ParmBuf pbuf,char *fname, int *ret_val) if (enIndex < 0) enIndex = nSamples-1; if (nSamples < enIndex - stIndex + 1) { - HRError(6313,"OpenParmChannel: EXF segment bigger than file"); - return (FAIL); + HRError(-6313,"OpenParmChannel: EXF segment [%d,%d] bigger than file [%d,%d]",stIndex,enIndex,0,nSamples-1); + enIndex=nSamples-1; } if (nSamples < enIndex + 1) { - HRError(6313,"OpenParmChannel: EXF segment bigger than file"); - return (FAIL); + HRError(-6313,"OpenParmChannel: EXF segment [%d,%d] bigger than file [%d,%d]",stIndex,enIndex,0,nSamples-1); + enIndex=nSamples-1; } preskip = stIndex * sampSize; @@ -4148,7 +4564,7 @@ static ReturnStatus OpenAsChannel(ParmBuf pbuf, int maxObs, { ChannelType chType; BufferInfo info; - int initRows; + int initRows=-1; long dBytes; char b1[50]; IOConfig cf = pbuf->cf; @@ -4372,20 +4788,70 @@ ParmBuf OpenBuffer(MemHeap *x, char *fn, int maxObs, FileFormat ff, /* side based normalisation -- #### should maybe be in OpenAsChannel? */ /* Load mean vector into pbuf->cf */ - if (HasZerom (pbuf->cf->tgtPK) && !HasZerom (pbuf->cf->srcPK) && - (pbuf->cf->cMeanDN || pbuf->cf->cMeanMask)) + /*if (HasZerom (pbuf->cf->tgtPK) && !HasZerom (pbuf->cf->srcPK) && + (pbuf->cf->cMeanDN || pbuf->cf->cMeanMask))*/ + /* cz277 - cmvnbug */ + if (pbuf->cf->cMeanDN || pbuf->cf->cMeanMask) { LoadCMeanVector (pbuf->mem, pbuf->cf, fn); - + } + /* Load variance estimate into pbuf->cf */ if (pbuf->cf->varScaleDN || pbuf->cf->varScaleMask) { LoadVarScaleVector (pbuf->mem, pbuf->cf, fn); } + /* from xl207, cz277 - gau */ + /* Load xform associated with this side if necessary */ + if (curChan->cf.sideGMMMask != NULL) { + LoadSideGMM(&(curChan->cf),fn); + pbuf->cf->sideGMM = curChan->cf.sideGMM; + pbuf->cf->siGMM = curChan->cf.siGMM; + } + /*if (pbuf->cf->sideXFormMask != NULL) { + pbuf->cf->sideXForm = LoadSideXForm(pbuf->cf,fn); + }*/ /* Load xform associated with this side if necessary */ if (pbuf->cf->sideXFormMask != NULL) { pbuf->cf->sideXForm = LoadSideXForm(pbuf->cf,fn); } + /* from mjfg, cz277 - 141022 */ + /* Load append xform associated with this side if necessary */ + if (pbuf->cf->appendXFormMask != NULL) { + pbuf->cf->appendXForm = LoadAppendXForm(pbuf->cf,fn); + } + + /* cz277 - aug */ + if (pbuf->cf->augFea1DN || pbuf->cf->augFea1Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea1DN, pbuf->cf->augFea1Mask, pbuf->cf->augFea1PathMask, &pbuf->cf->augFea1Vector); + } + else { + pbuf->cf->augFea1Vector = NULL; + } + if (pbuf->cf->augFea2DN || pbuf->cf->augFea2Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea2DN, pbuf->cf->augFea2Mask, pbuf->cf->augFea2PathMask, &pbuf->cf->augFea2Vector); + } + else { + pbuf->cf->augFea2Vector = NULL; + } + if (pbuf->cf->augFea3DN || pbuf->cf->augFea3Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea3DN, pbuf->cf->augFea3Mask, pbuf->cf->augFea3PathMask, &pbuf->cf->augFea3Vector); + } + else { + pbuf->cf->augFea3Vector = NULL; + } + if (pbuf->cf->augFea4DN || pbuf->cf->augFea4Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea4DN, pbuf->cf->augFea4Mask, pbuf->cf->augFea4PathMask, &pbuf->cf->augFea4Vector); + } + else { + pbuf->cf->augFea4Vector = NULL; + } + if (pbuf->cf->augFea5DN || pbuf->cf->augFea5Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea5DN, pbuf->cf->augFea5Mask, pbuf->cf->augFea5PathMask, &pbuf->cf->augFea5Vector); + } + else { + pbuf->cf->augFea5Vector = NULL; + } if(OpenAsChannel(pbuf,maxObs,fn,ff,silMeasure)cf->augFea1Vector; + case 2: + return parmBuf->cf->augFea2Vector; + case 3: + return parmBuf->cf->augFea3Vector; + case 4: + return parmBuf->cf->augFea4Vector; + case 5: + return parmBuf->cf->augFea5Vector; + default: + HError(9999, "GetAugFeaVector: Unavailable index of the augmented feature vector"); + } + + return NULL; +} + + /* EXPORT->OpenExtBuffer: open and return an input buffer */ ParmBuf OpenExtBuffer(MemHeap *x, char *fn, int maxObs, FileFormat ff, HParmSrcDef ext, @@ -4747,6 +5235,13 @@ ParmBuf EmptyBuffer(MemHeap *x, int size, Observation o, BufferInfo info) return pbuf; } +/* cz277 - ANN */ +/* need to be extended later */ +/*void CopyParmBufInfo(ParmBuf srcPBuf, ParmBuf dstPBuf) { + dstPBuf->chType = srcPBuf->chType; + dstPBuf->crcc = CRCC_NONE; +}*/ + /* EXPORT->WriteESIGPHeader: Write header info to ESIG parameter file f */ void WriteESIGPHeader(FILE *f, IOConfig cf, HTime sampPeriod, short sampSize, short pKind) { @@ -4942,13 +5437,12 @@ static void CalcCompress(ParmBuf pbuf, PBlock *pbInit,int nCols, Boolean irefc) static void CompressPBlock(ParmBuf pbuf, PBlock *pb, short *sp, int nCols) { IOConfig cf = pbuf->cf; - int i,nx,ix,count; + int i,nx,ix; float *fp,x; if (trace&T_CPX) printf("HParm: Compressing pblock: nRows=%d, nCols=%d\n", pb->nRows,nCols); - count = pb->nRows * cf->nCols; /* Convert floats to shorts */ fp = (float *)pb->data; for (i=0;inRows;i++) @@ -4968,7 +5462,9 @@ ReturnStatus SaveBuffer(ParmBuf pbuf, char *fname, FileFormat ff) FILE *f; IOConfig cf = pbuf->cf; Boolean bSwap,isPipe; - short sampSize,kind,*sp; + /*short sampSize,kind,*sp;*/ + short kind, *sp; + unsigned short sampSize; /* cz277 - cbu */ long nSamples,sampPeriod; char buf[50]; @@ -5088,6 +5584,7 @@ ReturnStatus SaveBuffer(ParmBuf pbuf, char *fname, FileFormat ff) pbFin->next=NULL; pbuf->main.next=pbInit; } + return(SUCCESS); } diff --git a/HTKLib/HParm.h b/HTKLib/HParm.h old mode 100644 new mode 100755 index cf7cfae..d8046b3 --- a/HTKLib/HParm.h +++ b/HTKLib/HParm.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HParm.h: Speech Parameter Input/Output */ +/* File: HParm.h Speech Parameter Input/Output */ /* ----------------------------------------------------------- */ -/* !HVER!HParm: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HParm: 3.5.0 [CUED 12/10/15] */ #ifndef _HPARM_H_ #define _HPARM_H_ @@ -41,6 +44,9 @@ extern "C" { #endif +#include "HWave.h" /* cz277 - ANN */ +#include "HAudio.h" /* cz277 - ANN */ + enum _BaseParmKind{ WAVEFORM, /* Raw speech waveform (handled by HWave) */ LPC,LPREFC,LPCEPSTRA,LPDELCEP, /* LP-based Coefficients */ @@ -51,7 +57,8 @@ enum _BaseParmKind{ USER, /* Arbitrary user specified data */ DISCRETE, /* Discrete VQ symbols (shorts) */ PLP, /* Standard PLP coefficients */ - ANON}; + ANON, + ANN}; typedef short ParmKind; /* BaseParmKind + Qualifiers */ @@ -207,6 +214,9 @@ ParmBuf OpenBuffer(MemHeap *x, char *fn, int maxObs, FileFormat ff, will perform measurement if it is needed by config). */ +/* cz277 - aug */ +Vector GetAugFeaVector(ParmBuf parmBuf, int feaIdx); + PBStatus BufferStatus(ParmBuf pbuf); /* Return current status of buffer. @@ -314,6 +324,9 @@ ParmBuf EmptyBuffer(MemHeap *x, int size, Observation o, BufferInfo info); buffer created by an OpenBuffer call. */ +/* cz277 - ANN */ +/*void CopyParmBufInfo(ParmBuf srcPBuf, ParmBuf dstPBuf);*/ + ReturnStatus SaveBuffer(ParmBuf pbuf, char *fname, FileFormat ff); /* Write contents of given buffer to fname. If SAVEWITHCRC is set in diff --git a/HTKLib/HRec.c b/HTKLib/HRec.c old mode 100644 new mode 100755 index 8323130..6e3f72a --- a/HTKLib/HRec.c +++ b/HTKLib/HRec.c @@ -3,24 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HRec.c Viterbi Recognition Engine Library */ +/* File: HRec.c Viterbi recognition engine library */ /* ----------------------------------------------------------- */ -char *hrec_version = "!HVER!HRec: 3.4.1 [CUED 12/03/09]"; -char *hrec_vc_id = "$Id: HRec.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hrec_version = "!HVER!HRec: 3.5.0 [CUED 12/10/15]"; +char *hrec_vc_id = "$Id: HRec.c,v 1.2 2015/10/12 12:07:24 cx277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -29,6 +45,7 @@ char *hrec_vc_id = "$Id: HRec.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HDict.h" #include "HNet.h" @@ -446,7 +463,7 @@ static LogFloat cSOutP(HMMSet *hset, int s, Observation *x, StreamElem *se, TMixRec *tr; TMProb *tm; Vector v,tv; - + switch (hset->hsKind){ case PLAINHS: case SHAREDHS: @@ -502,6 +519,12 @@ static LogFloat cSOutP(HMMSet *hset, int s, Observation *x, StreamElem *se, for (m=1; m<=tr->topM; m++,tm++) sum += tm->prob * tv[tm->index]; return (sum>=MINLARG)?log(sum)+tr->maxP:LZERO; + /* cz277 - ANN */ + case HYBRIDHS: + v = x->fv[s]; + /*bx = v[se->targetIdx] + se->targetPen;*/ + bx = v[se->targetIdx]; + return bx; default: HError(7071,"SOutP: bad hsKind %d\n",hset->hsKind); } return LZERO; /* to keep compiler happy */ @@ -1517,7 +1540,7 @@ static void LatFromPaths(Path *path,int *ln,Lattice *lat) NxtPath tmp,*pth; Align *align,*al,*pr; MLink ml; - LabId labid,splabid,labpr = NULL; + LabId labid = NULL,splabid,labpr = NULL; char buf[80]; int i,frame; double prlk,dur,like,wp; @@ -1597,7 +1620,9 @@ static void LatFromPaths(Path *path,int *ln,Lattice *lat) if (al->state<0) { if (pr==NULL) { pr=al; - labpr=ml->id; + /* sxz20 */ + labpr = (al->node->labid == NULL)? ml->id: al->node->labid; + /*labpr=ml->id;*/ continue; } if (labpr==NULL) @@ -1606,13 +1631,16 @@ static void LatFromPaths(Path *path,int *ln,Lattice *lat) like=pr->like-al->like; pr=al; labid=labpr; - labpr=ml->id; + /* sxz20 */ + labpr = (al->node->labid == NULL)? ml->id: al->node->labid; + /*labpr=ml->id;*/ } else { if (pri->models) sprintf(buf,"s%d",al->state); else - sprintf(buf,"%s[%d]",ml->id->name,al->state); + sprintf(buf, "%s[%d]", (al->node->labid == NULL)? ml->id->name: al->node->labid->name, al->state); /* sxz20 */ + /*sprintf(buf,"%s[%d]",ml->id->name,al->state);*/ labid=GetLabId(buf,TRUE); dur=(frame-al->frame)*lat->framedur, like=like-al->like; diff --git a/HTKLib/HRec.h b/HTKLib/HRec.h old mode 100644 new mode 100755 index b78655a..e8ade9b --- a/HTKLib/HRec.h +++ b/HTKLib/HRec.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HRec.h Viterbi Recognition Engine Library */ +/* File: HRec.h Viterbi recognition engine library */ /* ----------------------------------------------------------- */ -/* !HVER!HREC: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HRec: 3.5.0 [CUED 12/10/15] */ #ifndef _HREC_H_ #define _HREC_H_ @@ -221,3 +237,6 @@ void TracePath(FILE *file,Path *path); #endif #endif /* _HREC_H_ */ + +/* ------------------------- End of HRec.h ------------------------- */ + diff --git a/HTKLib/HShell.c b/HTKLib/HShell.c old mode 100644 new mode 100755 index bd64861..11fd299 --- a/HTKLib/HShell.c +++ b/HTKLib/HShell.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HShell.c: Interface to the Shell */ +/* File: HShell.c Interface to the shell */ /* ----------------------------------------------------------- */ -char *hshell_version = "!HVER!HShell: 3.4.1 [CUED 12/03/09]"; -char *hshell_vc_id = "$Id: HShell.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hshell_version = "!HVER!HShell: 3.5.0 [CUED 12/10/15]"; +char *hshell_vc_id = "$Id: HShell.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" @@ -86,7 +89,7 @@ static int extFileUsed = 0; /* total ext files in buffer */ char * RegisterExtFileName(char *s) { char *eq,*rb,*lb,*co; - char buf[1024]; + char buf[MAXSTRLEN]; ExtFile *p; if (!extendedFileNames) @@ -308,7 +311,7 @@ static Boolean ReadConfName(Source *src, char *s) if (c == EOF) return FALSE; for (i=0; inext) { + if (strcmp(e->param.name,name)==0){ + s = e->param.user; + if (s==NULL?user==NULL:(user!=NULL && strcmp(s,user)==0) ) { + /* found the element to remove */ + /* check whether it is at the start of the list */ + if (pe == NULL) + confList=e->next; + else + pe->next=e->next; + } + } + pe=e; + } +} + /* FindConfEntry: return entry with given name and user */ static ConfigEntry *FindConfEntry(char *user, char *name) { @@ -332,16 +358,27 @@ static ConfigEntry *FindConfEntry(char *user, char *name) return NULL; } +/* cz277 - ANN */ /* NumHead: returns TRUE if the first two chars of a string are ('+'|'-') digit | digit */ static Boolean NumHead(char *s) { - if (*s!='\0') + /*if (*s!='\0') if (isdigit((int) *s)) return TRUE; if (((*s=='-') || (*s=='+')) && (isdigit((int) *(s+1)))) return TRUE; - return FALSE; + return FALSE;*/ + char *c; + + c = s; + while (*c != '\0') { + if (!(isdigit((int) *c) || *c == '-' || *c == '+' || *c == '.')) + return FALSE; + ++c; + } + + return TRUE; } /* ParseInclude: skip comments or return #include argument */ @@ -382,9 +419,12 @@ static ReturnStatus ReadConfigFile(char *fname) Source src; ConfigEntry *e; Boolean gotParam,hasUser; - char c,*s,buf[32],sbuf[MAXSTRLEN]; + char c,*s,buf[MAXSTRLEN],sbuf[MAXSTRLEN]; char user[MAXSTRLEN],name[MAXSTRLEN],value[MAXSTRLEN]; static int recurse = 0; + /* cz277 - 150811 */ + Boolean append = FALSE; + CPLink curParam; if (recurse++ > 15){ HRError(5050,"ReadConfigFile: max #include depth reached (%s)",fname); @@ -421,55 +461,80 @@ static ReturnStatus ReadConfigFile(char *fname) } while (isspace((int) (c=GetCh(&src)))); } - if (c != '='){ - HRError(5050,"ReadConfigFile: = expected %s", - SrcPosition(src,buf)); - recurse--; - return(FAIL); - } - if (!ReadString(&src,value)){ - HRError(5050,"ReadConfig: parameter value expected %s", - SrcPosition(src,buf)); - recurse--; - return(FAIL); - } - e = FindConfEntry(hasUser?user:NULL,name); - if (e==NULL){ /* new param */ - e = (ConfigEntry *) malloc(sizeof(ConfigEntry)); - e->next = confList; confList = e; - e->param.seen = FALSE; - ++numConfigParms; - } - if (hasUser){ - e->param.user = (char *) malloc(strlen(user)+1); - strcpy(e->param.user,user); - }else - e->param.user = NULL; - e->param.name = (char *) malloc(strlen(name)+1); - strcpy(e->param.name,name); - if (strcmp(value,"T")==0 || strcmp(value,"TRUE")==0) { - e->param.kind = BoolCKind; e->param.val.b = TRUE; - } else - if (strcmp(value,"F")==0 || strcmp(value,"FALSE")==0) { - e->param.kind = BoolCKind; e->param.val.b = FALSE; + + /* added option to remove config setting */ + if (c == '~') { + RemoveConfEntry(hasUser?user:NULL,name); + } else { + /* cz277 - 150811 */ + if (c == '+') { + append = TRUE; + while (isspace((int) (c=GetCh(&src)))); + } + + if (c != '='){ + HRError(5050,"ReadConfigFile: = expected %s", + SrcPosition(src,buf)); + recurse--; + return(FAIL); + } + if (!ReadString(&src,value)){ + HRError(5050,"ReadConfig: parameter value expected %s", + SrcPosition(src,buf)); + recurse--; + return(FAIL); + } + e = FindConfEntry(hasUser?user:NULL,name); + if (e==NULL){ /* new param */ + e = (ConfigEntry *) malloc(sizeof(ConfigEntry)); + e->next = confList; confList = e; + e->param.seen = FALSE; + ++numConfigParms; + /* cz277 - 150811 */ + e->param.append = NULL; + } + if (hasUser){ + e->param.user = (char *) malloc(strlen(user)+1); + strcpy(e->param.user,user); + }else + e->param.user = NULL; + /* cz277 - 150811 */ + curParam = &e->param; + if (append) { + while (curParam->append != NULL) + curParam = curParam->append; + /*curParam->append = (CPLink) New(&gcheap, sizeof(ConfParam));*/ + curParam->append = (CPLink) malloc(sizeof(ConfParam)); + curParam = curParam->append; + curParam->append = NULL; + } + + curParam->name = (char *) malloc(strlen(name)+1); + strcpy(curParam->name,name); + if (strcmp(value,"T")==0 || strcmp(value,"TRUE")==0) { + curParam->kind = BoolCKind; curParam->val.b = TRUE; } else - if (NumHead(value)){ - x = strtod(value,&s); - if (s==NULL || *s == '\0'){ - if (strchr(value,'.') == NULL){ - e->param.kind = IntCKind; - e->param.val.i = strtol(value,NULL,0); - }else{ - e->param.kind = FltCKind; - e->param.val.f = x; + if (strcmp(value,"F")==0 || strcmp(value,"FALSE")==0) { + curParam->kind = BoolCKind; curParam->val.b = FALSE; + } else + if (NumHead(value)){ + x = strtod(value,&s); + if (s==NULL || *s == '\0'){ + if (strchr(value,'.') == NULL){ + curParam->kind = IntCKind; + curParam->val.i = strtol(value,NULL,0); + }else{ + curParam->kind = FltCKind; + curParam->val.f = x; + } } + } else { + curParam->kind = StrCKind; + curParam->val.s = (char *) malloc(strlen(value)+1); + strcpy(curParam->val.s,value); } - } else { - e->param.kind = StrCKind; - e->param.val.s = (char *) malloc(strlen(value)+1); - strcpy(e->param.val.s,value); - } - /* skip comments and parse #include */ + /* skip comments and parse #include */ + } while (ParseComment(&src,name)!=NULL) { PathOf(name,sbuf); if (*sbuf=='\0') PathOf(fname,sbuf); @@ -481,7 +546,10 @@ static ReturnStatus ReadConfigFile(char *fname) } hasUser=FALSE; gotParam = ReadConfName(&src,name); + /* cz277 - 150811 */ + append = FALSE; } + recurse--; return(SUCCESS); } @@ -490,6 +558,8 @@ static ReturnStatus ReadConfigFile(char *fname) void PrintConfig(void) { ConfigEntry *e; + /* cz277 - 150811 */ + CPLink curParam; printf("\n"); if (numConfigParms==0) @@ -507,6 +577,19 @@ void PrintConfig(void) case FltCKind: printf("%16f",e->param.val.f); break; } printf("\n"); + /* cz277 - 150811 */ + curParam = e->param.append; + while (curParam != NULL) { + printf("%c %-14s +%-14s ", (curParam->seen? ' ': '#'), curParam->user==NULL? "" : curParam->user, curParam->name); + switch (curParam->kind) { + case StrCKind: printf("%16s", curParam->val.s); break; + case BoolCKind: printf("%16s", curParam->val.b? "TRUE": "FALSE"); break; + case IntCKind: printf("%16d", curParam->val.i); break; + case FltCKind: printf("%16f", curParam->val.f); break; + } + curParam = curParam->append; + printf("\n"); + } } } printf("\n"); @@ -550,18 +633,17 @@ int GetConfig(char *user, Boolean incGlob, ConfParam **list, int max) /* FindConfParm: return index of conf parameter with given name and kind*/ static int FindConfParm(ConfParam **list,int size,char *name,ConfKind kind) { - int i; + int i; - for (i=0; iname,name)==0){ - if (kind != AnyCKind && list[i]->kind != kind && - !(list[i]->kind==IntCKind && kind==FltCKind)) - HError(5072,"FindConfParm: %s is %s but should be type %s", - name,cfkmap[list[i]->kind],cfkmap[kind]); - list[i]->seen=TRUE; - return i; - } - return -1; + for (i = 0; i < size; i++) { + if (strcmp(list[i]->name, name) == 0) { + if (kind != AnyCKind && list[i]->kind != kind && !(list[i]->kind == IntCKind && kind == FltCKind)) + HError(5072,"FindConfParm: %s is %s but should be type %s", name, cfkmap[list[i]->kind], cfkmap[kind]); + list[i]->seen = TRUE; + return i; + } + } + return -1; } /* EXPORT->HasConfParm: true if parameter exists with given name */ @@ -582,6 +664,17 @@ Boolean GetConfStr(ConfParam **list,int size,char *name,char *str) return FALSE; } +/* cz277 - ANN */ +Boolean GetConfAny(ConfParam **list, int size, char *name, ConfParam **item) +{ + int i; + if ((i = FindConfParm(list, size, name, AnyCKind)) != -1) { + *item = list[i]; + return TRUE; + } + return FALSE; +} + /* EXPORT->GetConfBool: return Boolean parameter with given name */ Boolean GetConfBool(ConfParam **list,int size,char *name, Boolean *b) { @@ -618,6 +711,61 @@ Boolean GetConfFlt(ConfParam **list,int size,char *name, double *fval) return FALSE; } +/* cz277 - ANN */ +/*Boolean GetConfIntVecList(ConfParam **list, int size, char *name, IntVec *intVecList) { + ConfParam *cpVal; + + return TRUE; +}*/ + +/* cz277 - ANN */ +/*Boolean GetConfVectorList(ConfParam **list, int size, char *name, Vector *vectorList) { + ConfParam *cpVal; + int i, j, nVec = 1; + char buf[MAXSTRLEN], *charPtr, *commPtr; + + GetConfAny(list, size, name, &cpVal); + if (cpVal->kind == FltCKind) { + vectorList = New(&gcheap, sizeof(Vector) * (nVec + 1)); + vectorList[0] = CreateVector(&gcheap, 1); + vectorList[0][1] = nVec; + vectorList[1] = CreateVector(&gcheap, 1); + vectorList[1][1] = cpVal->val.f; + } + else if (cpVal->kind == StrCKind) { + strcpy(buf, cpVal->val.s); + charPtr = strtok(buf, ";"); + while (charPtr != NULL) { + ++nVec; + charPtr = strtok(NULL, ";"); + } + vectorList = New(&gcheap, sizeof(Vector) * (nVec + 1)); + vectorList[0] = CreateVector(&gcheap, 1); + charPtr = strtok(buf, ";"); + for (i = 1, j = 0; i <= nVec; ++i) { + *charPtr = '\0'; + commPtr = strtok(charPtr + 1, ","); + while (commPtr != NULL) { + ++j; + commPtr = strtok(NULL, ","); + } + vectorList[i] = CreateVector(&gcheap, j); + j = 1; + commPtr = strtok(charPtr + 1, ","); + while (commPtr != NULL) { + vectorList[i][j++] = (float) atof(commPtr); + commPtr = strtok(NULL, ","); + } + *charPtr = ';'; + charPtr = strtok(NULL, ";"); + } + } + else { + return FALSE; + } + return TRUE; +}*/ + /* ------------------ Argument Processing -------------------- */ @@ -651,11 +799,16 @@ static char *defargs[2]={ "", "" }; static char **arglist=defargs;/* actual arg list */ static FILE *script = NULL; /* script file if any */ static int scriptcount = 0; /* num words in script */ -static char scriptBuf[256]; /* buffer for current script arg */ +static char scriptBuf[MAXSTRLEN]; /* buffer for current script arg */ static Boolean scriptBufLoaded = FALSE; static Boolean wasQuoted; /* true if next arg was quoted */ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; +/* cz277 - ANN */ +static FILE *scriptTr = NULL; /* script file handler for train set cache */ +static int scriptTrCnt = 0; /* number of words in the train script */ +static FILE *scriptCV = NULL; /* script file handler for CV set cache */ +static int scriptCVCnt = 0; /* number of words in the CV script */ /* ScriptWord: return next word from script */ static char * ScriptWord(void) @@ -686,7 +839,54 @@ static char * ScriptWord(void) scriptBufLoaded = TRUE; return scriptBuf; } - + +/* cz277 - ANN */ +/* ScriptWord(void) for cache script */ +char *GetNextScpWord(FILE *script, char *scriptBuf) +{ + int ch, qch, i; + char *extBuf; + + i = 0; + ch = ' '; + while (isspace(ch)) { + ch = fgetc(script); + } + if (ch == EOF) { + return NULL; + } + if (ch == '\'' || ch == '"') { + qch = ch; + ch = fgetc(script); + while (ch != qch && ch != EOF) { + scriptBuf[i++] = ch; + ch = fgetc(script); + } + if (ch == EOF) { + HError(5051, "GetNextScpWord: Closing quote missing in script file"); + } + } + else { + do { + scriptBuf[i++] = ch; + ch = fgetc(script); + } while (!isspace(ch) && ch != EOF); + } + scriptBuf[i] = '\0'; + if (extendedFileNames) { + extBuf = RegisterExtFileName(scriptBuf); + strcpy(scriptBuf, extBuf); + } + return scriptBuf; +} + +/* cz277 - ANN */ +/* Get train set script file handler along with its length */ +FILE *GetTrainScript(int *scriptCnt) { + *scriptCnt = scriptTrCnt; + return scriptTr; +} + /* GetNextArg: from either command line or script file */ static char * GetNextArg(Boolean step) { @@ -862,15 +1062,36 @@ static char *CheckFn(char *fn); ReturnStatus SetScriptFile(char *fn) { - CheckFn(fn); - if ((script = fopen(fn,"r")) == NULL){ /* Don't care if text/binary */ - HRError(5010,"SetScriptFile: Cannot open script file %s",fn); - return(FAIL); - } - while (ScriptWord() != NULL) ++scriptcount; - rewind(script); - scriptBufLoaded = FALSE; - return(SUCCESS); + CheckFn(fn); + /* cz277 - ANN */ + if (((script = fopen(fn, "r")) == NULL) || ((scriptTr = fopen(fn, "r")) == NULL)) { /* Don't care if text/binary */ + HRError(5010, "SetScriptFile: Cannot open script file %s", fn); + return (FAIL); + } + while (ScriptWord() != NULL) + ++scriptcount; + /* cz277 - ANN */ + scriptTrCnt = scriptcount; + + rewind(script); + scriptBufLoaded = FALSE; + return (SUCCESS); +} + +/* cz277 - ANN */ +ReturnStatus SetScriptCVFile(char *fn) { + char buf[MAXSTRLEN]; + + CheckFn(fn); + if ((scriptCV = fopen(fn, "r")) == NULL) { + HRError(5010, "SetScriptCVFile: Cannot open script file %s for CV set", fn); + return FAIL; + } + while (GetNextScpWord(scriptCV, buf) != NULL) { + ++scriptCVCnt; + } + rewind(scriptCV); + return SUCCESS; } /* -------------------- Input Files/Pipes -------------------- */ @@ -905,7 +1126,7 @@ static Boolean FilterSet(IOFilter filter, char *s) void SubstFName(char *fname, char *s) { char *p; - char buf[1028]; + char buf[MAXSTRLEN]; while ((p=strchr(s,'$')) != NULL){ *p = '\0'; ++p; @@ -1486,8 +1707,11 @@ Boolean KeyPressed(int tWait) fflush(stdout); ioctl(0,FIONREAD,&numchars); if ( numchars > 0){ - read(0, c, 1); + if(read(0, c, 1)<0) { + HError(-5013,"Failed to read next character"); + }else{ rtn=TRUE; + } } } #endif @@ -1725,7 +1949,7 @@ char * PathOf(char *fn, char *s) /* EXPORT->ExtnOf: extension part of fn */ char * ExtnOf(char *fn, char *s) { - char *t,buf[100]; + char *t,buf[MAXSTRLEN]; NameOf(fn,buf); t = strrchr(buf,'.'); @@ -1900,87 +2124,108 @@ char *RetrieveCommandLine(void) copied after processing -A/-B/-C/-S/-V. */ ReturnStatus InitShell(int argc, char *argv[], char *ver, char *sccs) { - char *fn; - int i,j; - Boolean b; - - argcount = 1; arglist = (char **) malloc(argc*sizeof(char *)); - arglist[0] = argv[0]; - Register(ver,sccs); - Register(hshell_version,hshell_vc_id); - /* read default configuration parameter file, if any */ - if ((fn=getenv("HCONFIG")) != NULL){ - if(ReadConfigFile(fn)= argc){ - HRError(5020,"InitShell: Config file name expected"); - return(FAIL); + vaxOrder = IsVAXOrder(); + + /* copy arg list and process -C and/or -S options */ + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "-A") == 0) { + for (j = 0; j < argc; j++) { + printf("%s ", argv[j]); } - if(ReadConfigFile(argv[i])= argc) { + HRError(5020, "InitShell: Config file name expected"); + return (FAIL); } - } else - if (strcmp(argv[i],"-S") == 0){ - if (++i >= argc){ - HRError(5020,"InitShell: Script file name expected"); - return(FAIL); - } - if(SetScriptFile(argv[i])0) { - if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; - if (GetConfBool(cParm,nParm,"NONUMESCAPES",&b)) noNumEscapes = b; - if (GetConfBool(cParm,nParm,"ABORTONERR",&b)) abortOnError = b; - if (GetConfBool(cParm,nParm,"NATURALREADORDER",&b)) natReadOrder = b; - if (GetConfBool(cParm,nParm,"NATURALWRITEORDER",&b)) natWriteOrder = b; - if (GetConfBool(cParm,nParm,"EXTENDFILENAMES",&b)) extendedFileNames = b; - if (GetConfInt(cParm,nParm,"MAXTRYOPEN",&i)) { - maxTry = i; - if (maxTry<1 || maxTry>3){ - HRError(5073,"InitShell: MAXTRYOPEN out of range (%d)",maxTry); - maxTry=1; - } - } - } + if (ReadConfigFile(argv[i]) < SUCCESS) { + HRError(5020, "InitShell: ReadConfigFile failed on file %s", argv[i]); + return (FAIL); + } + } + else if (strcmp(argv[i], "-S") == 0) { + if (++i >= argc) { + HRError(5020, "InitShell: Script file name expected"); + return (FAIL); + } + if (SetScriptFile(argv[i]) < SUCCESS) { + HRError(5020,"InitShell: SetScriptFile failed on file %s", argv[i]); + return (FAIL); + } + } + /* cz277 - ANN */ + /*else if (strcmp(argv[i], "-SCV") == 0) { + if (++i >= argc) { + HRError(5020, "InitShell: Script file name for CV set expected"); + return FAIL; + }if (SetScriptCVFile(argv[i]) < SUCCESS) { + HRError(5020, "InitShell: SetScriptCVFile failed on file %s", argv[i]); + return FAIL; + } + }*/ + else if (strcmp(argv[i], "-V") == 0) { + printVersionInfo = TRUE; + infoPrinted = TRUE; + } + else if (strcmp(argv[i], "-D") == 0) { + showConfig = TRUE; + infoPrinted = TRUE; + } + else { + arglist[argcount++] = argv[i]; + } + } + if (showConfig) { + PrintConfig(); + } + /* process this module's config params */ + nParm = GetConfig("HSHELL", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &i)) + trace = i; + if (GetConfBool(cParm, nParm, "NONUMESCAPES", &b)) + noNumEscapes = b; + if (GetConfBool(cParm, nParm, "ABORTONERR", &b)) + abortOnError = b; + if (GetConfBool(cParm, nParm, "NATURALREADORDER", &b)) + natReadOrder = b; + if (GetConfBool(cParm, nParm, "NATURALWRITEORDER", &b)) + natWriteOrder = b; + if (GetConfBool(cParm, nParm, "EXTENDFILENAMES", &b)) + extendedFileNames = b; + if (GetConfInt(cParm, nParm, "MAXTRYOPEN", &i)) { + maxTry = i; + if (maxTry < 1 || maxTry > 3){ + HRError(5073, "InitShell: MAXTRYOPEN out of range (%d)", maxTry); + maxTry = 1; + } + } + } - return(SUCCESS); } @@ -2030,4 +2275,37 @@ void PrintStdOpts(char *opt) printf(" -X ext Set input label (or net) file ext lab\n"); } +/* cz277 - ANN */ +void SetupDir(char *targetDir) { + if (access(targetDir, 0)) { + #ifdef WIN32 + _mkdir(targetDir); + #else + mkdir(targetDir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + #endif + } +} + +char *CatDirs(char *baseDir, char *extDir, char *newDir) { + int len; + + if (baseDir != NULL) { + strcpy(newDir, baseDir); + len = strlen(newDir); + if (len > 0 && newDir[len - 1] != PATHCHAR) { + newDir[len] = PATHCHAR; + newDir[len + 1] = '\0'; + } + } + if (extDir != NULL) { + strcat(newDir, extDir); + len = strlen(newDir); + if (len > 0 && newDir[len - 1] != PATHCHAR) { + newDir[len] = PATHCHAR; + newDir[len + 1] = '\0'; + } + } + return newDir; +} + /* -------------------------- End of HShell.c ----------------------------- */ diff --git a/HTKLib/HShell.h b/HTKLib/HShell.h old mode 100644 new mode 100755 index 52f551e..d4efd38 --- a/HTKLib/HShell.h +++ b/HTKLib/HShell.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HShell.h: Interface to the Shell */ +/* File: HShell.h Interface to the Shell */ /* ----------------------------------------------------------- */ -/* !HVER!HShell: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HShell: 3.5.0 [CUED 12/10/15] */ #ifndef _HSHELL_H_ #define _HSHELL_H_ @@ -72,9 +75,9 @@ extern "C" { #endif -#define MAXSTRLEN 256 /* max length of a string */ +#define MAXSTRLEN 2048 /* max length of a string */ #define MAXFNAMELEN 1034 /* max length of a file name */ -#define SMAX 5 /* max num data streams + 1 */ +#define SMAX 128 /* max num data streams + 1 */ #define MAXGLOBS 256 /* max num global config parms */ #define SING_QUOTE '\'' /* character used as quote */ @@ -84,11 +87,20 @@ extern "C" { #ifdef UNIX #include #include +/* cz277 - ANN */ +#include #endif #undef FALSE #undef TRUE +/*#ifdef DOUBLEANN +typedef double NFloat; +#else +typedef float NFloat; +#endif +*/ + typedef int int32; typedef enum {FAIL=-1, SUCCESS=0} ReturnStatus; @@ -154,12 +166,15 @@ typedef union { /* union of possible config param kinds */ Boolean b; }ConfVal; -typedef struct { /* Configuration Parameter */ +/* cz277 - 150811 */ +typedef struct _ConfParam *CPLink; +typedef struct _ConfParam { /* Configuration Parameter */ char *user; /* name of module/tool to use this param */ char *name; /* name of param - upper case always */ ConfKind kind; /* kind of config param value */ ConfVal val; /* value */ Boolean seen; /* set true when read by any module */ + CPLink append; /* cz277 - 150811 */ } ConfParam; @@ -548,6 +563,16 @@ char *RetrieveCommandLine(void); actual command line used to run the program at hand. */ +/* cz277 - ANN */ +char *GetNextScpWord(FILE *script, char *scriptBuf); +FILE *GetTrainScript(int *scriptCnt); +Boolean GetConfAny(ConfParam **list, int size, char *name, ConfParam **item); +char *CatDirs(char *baseDir, char *extDir, char *newDir); +void SetupDir(char *targetDir); +/*Boolean GetConfVectorList(ConfParam **list, int size, char *name, Vector *vectorList) +Boolean GetConfIntVecList(ConfParam **list, int size, char *name, IntVec *intVecList);*/ + + #ifdef __cplusplus } #endif diff --git a/HTKLib/HSigP.c b/HTKLib/HSigP.c old mode 100644 new mode 100755 index 7fb2464..812a0e7 --- a/HTKLib/HSigP.c +++ b/HTKLib/HSigP.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSigP.c: Signal Processing Routines */ +/* File: HSigP.c Signal processing routines */ /* ----------------------------------------------------------- */ -char *hsigp_version = "!HVER!HSigP: 3.4.1 [CUED 12/03/09]"; +char *hsigp_version = "!HVER!HSigP: 3.5.0 [CUED 12/10/15]"; char *hsigp_vc_id = "$Id: HSigP.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HShell.h" /* HTK Libraries */ diff --git a/HTKLib/HSigP.h b/HTKLib/HSigP.h old mode 100644 new mode 100755 index 854785c..183050a --- a/HTKLib/HSigP.h +++ b/HTKLib/HSigP.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSigP.h: Signal Processing Routines */ +/* File: HSigP.h Signal processing routines */ /* ----------------------------------------------------------- */ -/* !HVER!HSigP: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HSigP: 3.5.0 [CUED 12/10/15] */ #ifndef _HSIGP_H_ #define _HSIGP_H_ diff --git a/HTKLib/HTrain.c b/HTKLib/HTrain.c old mode 100644 new mode 100755 index 84166ab..7d4719c --- a/HTKLib/HTrain.c +++ b/HTKLib/HTrain.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HTrain.c HMM Training Support Routines */ +/* File: HTrain.c HMM training support routines */ /* ----------------------------------------------------------- */ -char *htrain_version = "!HVER!HTrain: 3.4.1 [CUED 12/03/09]"; +char *htrain_version = "!HVER!HTrain: 3.5.0 [CUED 12/10/15]"; char *htrain_vc_id = "$Id: HTrain.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HShell.h" @@ -44,6 +47,7 @@ char *htrain_vc_id = "$Id: HTrain.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HTrain.h" @@ -91,6 +95,11 @@ void InitTrain(void) } } +Boolean LoadDumpAccBinary() +{ + return ldBinary; +} + /* -------------------- Generic Sequence Type ------------------- */ /* @@ -714,7 +723,7 @@ static void InitClustering(MemHeap *x, Sequence vpool, int nc, { int i,numClust; Vector v; - Covariance cov; + Covariance cov={.var=NULL,.inv=NULL,.xform=NULL}; nItems = vpool->nItems; if (nItems < nc) @@ -1628,7 +1637,7 @@ Source LoadAccsParallel(HMMSet *hset, char *fname, UPDSet uFlags, int index) Source src; HLink hmm; HMMScanState hss; - int size,negs,m,s; + int size,m,s,negs; MixPDF* mp; if (trace & T_ALD) @@ -1641,7 +1650,7 @@ Source LoadAccsParallel(HMMSet *hset, char *fname, UPDSet uFlags, int index) hmm = hss.hmm; CheckPName(&src,hss.mac->id->name); ReadInt(&src,&negs,1,ldBinary); - negs += (int)hmm->hook; hmm->hook = (void *)negs; + negs += (int)(unsigned long int)hmm->hook; hmm->hook = (void *)(unsigned long int)negs; while (GoNextState(&hss,TRUE)) { while (GoNextStream(&hss,TRUE)) { if ((uFlags&UPSEMIT) && (strmProj)) size = hset->vecSize; @@ -1713,11 +1722,10 @@ void RestoreAccs(HMMSet *hset){ RestoreAccsParallel(hset,0); } void RestoreAccsParallel(HMMSet *hset, int index) { HMMScanState hss; - int s,m,size; + int s,m; if(hset->hsKind==TIEDHS){ for (s=1; s<=hset->swidth[0]; s++){ - size = hset->swidth[s]; for (m=1;m<=hset->tmRecs[s].nMix; m++) RestorePDF(hset->tmRecs[s].mixes[m], index); } diff --git a/HTKLib/HTrain.h b/HTKLib/HTrain.h old mode 100644 new mode 100755 index f9e6d35..a93c203 --- a/HTKLib/HTrain.h +++ b/HTKLib/HTrain.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HTrain.h HMM Training Support Routines */ +/* File: HTrain.h HMM training support routines */ /* ----------------------------------------------------------- */ -/* !HVER!HTrain: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HTrain: 3.5.0 [CUED 12/10/15] */ #ifndef _HTRAIN_H_ #define _HTRAIN_H_ @@ -41,7 +44,7 @@ extern "C" { #endif -enum _UPDSet{UPMEANS=1,UPVARS=2,UPTRANS=4,UPMIXES=8,UPXFORM=16,UPMAP=32,UPSEMIT=64}; +enum _UPDSet{UPMEANS=1,UPVARS=2,UPTRANS=4,UPMIXES=8,UPXFORM=16,UPMAP=32,UPSEMIT=64, UPTARGETPEN = 128, UPANNPARAM = 256}; /* cz277 - ANN */ typedef enum _UPDSet UPDSet; /* Win32 modification */ @@ -54,6 +57,11 @@ void InitTrain(void); Initialise the module */ +Boolean LoadDumpAccBinary(); +/* + Use binary/text accumulators +*/ + /* ------------------ Generic Sequence Type --------------- */ typedef struct _ItemBlock *IBLink; diff --git a/HTKLib/HUtil.c b/HTKLib/HUtil.c old mode 100644 new mode 100755 index 8383828..1518d21 --- a/HTKLib/HUtil.c +++ b/HTKLib/HUtil.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HUtil.c HMM utility routines */ +/* File: HUtil.c HMM utility routines */ /* ----------------------------------------------------------- */ -char *hutil_version = "!HVER!HUtil: 3.4.1 [CUED 12/03/09]"; -char *hutil_vc_id = "$Id: HUtil.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hutil_version = "!HVER!HUtil: 3.5.0 [CUED 12/10/15]"; +char *hutil_vc_id = "$Id: HUtil.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -44,6 +47,7 @@ char *hutil_vc_id = "$Id: HUtil.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" @@ -250,6 +254,7 @@ void NewHMMScan(HMMSet *hset, HMMScanState *hss) hss->isCont = (hset->hsKind == PLAINHS) || (hset->hsKind == SHAREDHS); hss->h = -1; hss->mac=NULL; + if (!GoNextHMM(hss)) HError(7220,"NewHMMScan: cannot find any physical HMMs to scan"); } @@ -416,7 +421,7 @@ void ConvDiagC(HMMSet *hset, Boolean convData) SVector v; int k; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->hsKind == HYBRIDHS) /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) { @@ -447,7 +452,7 @@ void ForceDiagC(HMMSet *hset) SVector v; int k; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS) /*|| hset->hsKind == HYBRIDHS)*/ /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) { @@ -475,7 +480,7 @@ void ConvLogWt(HMMSet *hset) { HMMScanState hss; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == TRUE) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == TRUE || hset->hsKind == HYBRIDHS) /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) @@ -489,7 +494,7 @@ void ConvExpWt(HMMSet *hset) { HMMScanState hss; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == FALSE) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == FALSE)/* || hset->hsKind == HYBRIDHS)*/ /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) @@ -616,7 +621,7 @@ void SetSet(IntSet s) /* -------------------- Item List Parser -------------------- */ -#define PAT_LEN 1024 +#define PAT_LEN 8192 static Source *source; /* Current source for item list */ static int ch; /* Current character from source */ @@ -701,7 +706,7 @@ static char *GetAlpha(char *s) /* GetInt: read integer coerced given range */ static int GetInt(int lo, int hi) { - char buf[20]; + char buf[MAXSTRLEN]; int i = 0, num; SkipSpaces(); @@ -732,7 +737,7 @@ static char *keymap[] = { /* GetKey: get a keyword */ static Keyword GetKey(void) { - char buf[20]; + char buf[MAXSTRLEN]; int i = 0; Keyword k; @@ -1143,6 +1148,17 @@ Ptr GetMacroHook(MLink ml) Ptr hook; switch(ml->type) { + case 'F': + case 'L': + case 'N': + hook = NULL; + break; + case 'M': + hook = ((NMatBundle *)(ml->structure))->hook; + break; + case 'V': + hook = ((NVecBundle *)(ml->structure))->hook; + break; case 'l': /* HLink */ case 'h': /* HLink */ hook=((HLink)(ml->structure))->hook; break; @@ -1173,6 +1189,13 @@ Ptr GetMacroHook(MLink ml) void SetMacroHook(MLink ml,Ptr hook) { switch(ml->type) { + /* cap letters: ANN macro letters */ + case 'F': + case 'L': + case 'N': + break; + case 'M': ((NMatBundle *) ml->structure)->hook = hook; break; + case 'V': ((NVecBundle *) ml->structure)->hook = hook; break; case 'l': /* HLink */ case 'h': /* HLink */ ((HLink)(ml->structure))->hook=hook; break; @@ -1205,9 +1228,25 @@ void SetMacroHook(MLink ml,Ptr hook) /* EXPORT->GetMacroUse: Return value of use field for any macro */ int GetMacroUse(MLink ml) { - int use; + int use=-1; switch(ml->type) { + /* cap letters: ANN macro letters */ + case 'F': use = ((FeaMix *) (ml->structure))->nUse; break; + case 'L': use = ((LELink) (ml->structure))->nUse; break; + case 'N': use = ((ADLink) (ml->structure))->nUse; break; + case 'M': + if (((NMatBundle *) ml->structure)->kind == SIBK) + use = ((NMatBundle *) ml->structure)->nUse; + else + HError(9999, "GetMacroUse: Only valid for SI matrix bundle"); + break; + case 'V': + if (((NVecBundle *) ml->structure)->kind == SIBK) + use = ((NVecBundle *) ml->structure)->nUse; + else + HError(9999, "GetMacroUse: Only valid for SI vector bundle"); + break; case 'l': /* HLink */ case 'h': /* HLink */ use=((HLink)(ml->structure))->nUse; break; @@ -1235,6 +1274,7 @@ int GetMacroUse(MLink ml) use=-1; HError(7270,"GetMacroUse: Getting use of non-existant macro"); } + return(use); } @@ -1242,6 +1282,12 @@ int GetMacroUse(MLink ml) void SetMacroUse(MLink ml,int use) { switch(ml->type) { + /* cap letters: ANN macro letters */ + case 'F': ((FeaMix *) (ml->structure))->nUse = use; break; + case 'L': ((LELink) (ml->structure))->nUse = use; break; + case 'N': ((ADLink) (ml->structure))->nUse = use; break; + case 'M': ((NMatBundle *) ml->structure)->nUse = use; break; + case 'V': ((NVecBundle *) ml->structure)->nUse = use; break; case 'l': /* HLink */ case 'h': /* HLink */ ((HLink)(ml->structure))->nUse=use; break; diff --git a/HTKLib/HUtil.h b/HTKLib/HUtil.h old mode 100644 new mode 100755 index 8f03501..16a6756 --- a/HTKLib/HUtil.h +++ b/HTKLib/HUtil.h @@ -3,13 +3,29 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ @@ -19,7 +35,7 @@ /* File: HUtil.h HMM utility routines */ /* ----------------------------------------------------------- */ -/* !HVER!HUtil: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HUtil: 3.5.0 [CUED 12/10/15] */ #ifndef _HUTIL_H_ #define _HUTIL_H_ diff --git a/HTKLib/HVQ.c b/HTKLib/HVQ.c old mode 100644 new mode 100755 index ce37291..19122e7 --- a/HTKLib/HVQ.c +++ b/HTKLib/HVQ.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HVQ.c: Vector Quantisation */ +/* File: HVQ.c Vector quantisation */ /* ----------------------------------------------------------- */ -char *hvq_version = "!HVER!HVQ: 3.4.1 [CUED 12/03/09]"; +char *hvq_version = "!HVER!HVQ: 3.5.0 [CUED 12/10/15]"; char *hvq_vc_id = "$Id: HVQ.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HShell.h" @@ -166,7 +182,7 @@ static VQNode GetNode(Source *src, CovKind ck, short width) VQNode n; short vqidx,nid,lid,rid; Vector mean; - Covariance cov; + Covariance cov = {.var=NULL,.inv=NULL,.xform=NULL}; vqidx = GetVal(src,0,0,"VQ Index"); nid = GetVal(src,0,0,"Node Id"); diff --git a/HTKLib/HVQ.h b/HTKLib/HVQ.h old mode 100644 new mode 100755 index 504dc31..33f1431 --- a/HTKLib/HVQ.h +++ b/HTKLib/HVQ.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HVQ.h: Vector Quantisation */ +/* File: HVQ.h Vector quantisation */ /* ----------------------------------------------------------- */ -/* !HVER!HVQ: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HVQ: 3.5.0 [CUED 12/10/15] */ /* This module provides a datatype VQTable which is used to represent diff --git a/HTKLib/HWave.c b/HTKLib/HWave.c old mode 100644 new mode 100755 index c628763..afa80d8 --- a/HTKLib/HWave.c +++ b/HTKLib/HWave.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HWave.c: Speech Wave File Input/Output */ +/* File: HWave.c Speech wave file input/output */ /* ----------------------------------------------------------- */ -char *hwave_version = "!HVER!HWave: 3.4.1 [CUED 12/03/09]"; -char *hwave_vc_id = "$Id: HWave.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hwave_version = "!HVER!HWave: 3.5.0 [CUED 12/10/15]"; +char *hwave_vc_id = "$Id: HWave.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -994,8 +997,8 @@ static long GetAIFFHeaderInfo(FILE *f, Wave w, InputAction *ia) int fn = sizeof fchunk; long sndStart = 0; /* start of sound chunk */ long fPtr; - CommonChunk1 ch1, commchunk1; - CommonChunk2 ch2, commchunk2; + CommonChunk1 ch1; + CommonChunk2 ch2, commchunk2 = {.nSamples=0,.sampSize=0}; int cn1 = 10; /* sizeof(long) + sizeof(long) + sizeof(short); */ int cn2 = 6; /* sizeof(long) + sizeof(short); */ Boolean hasCC=FALSE, hasSC=FALSE; @@ -1032,7 +1035,7 @@ static long GetAIFFHeaderInfo(FILE *f, Wave w, InputAction *ia) return -1; } if (ch1.id == ccid){ /* common chunk found */ - hasCC=TRUE; commchunk1=ch1;commchunk2=ch2; + hasCC=TRUE; commchunk2=ch2; } if (ch1.id == scid){ /* sound chunk found */ hasSC=TRUE; sndStart=fPtr; @@ -1059,14 +1062,23 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) if (MustSwap(VAXSO)) *ia = (InputAction) (*ia | DoBSWAP); - fread(magic, 4, 1, f); + if(fread(magic, 4, 1, f)!=1){ + HRError(6251,"Failed to read magic number"); + return -1; + } if (strncmp("RIFF", magic, 4)){ HRError(6251,"Input file is not in RIFF format"); return -1; } - fread(&lng, 4, 1, f); - fread(magic, 4, 1, f); + if(fread(&lng, 4, 1, f)!=1){ + HRError(6251,"Failed to read 1 object"); + return -1; + } + if(fread(magic, 4, 1, f)!=1){ + HRError(6251,"Failed to read magic number"); + return -1; + } if (strncmp("WAVE", magic, 4)){ HRError(6251,"Input file is not in WAVE format"); return -1; @@ -1078,13 +1090,22 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) HRError(6251,"No data portion in WAVE file"); return -1; } - fread(magic, 4, 1, f); - fread(&len, 4, 1, f); + if(fread(magic, 4, 1, f)!=1){ + HRError(6251,"Failed to read magic number"); + return -1; + } + if(fread(&len, 4, 1, f)!=1){ + HRError(6251,"Failed to read length"); + return -1; + } if (*ia & DoBSWAP) SwapInt32(&len); /* Check for data chunk */ if (strncmp("data", magic, 4)==0) break; if (strncmp("fmt ", magic, 4)==0) { - fread(&type, 2, 1, f); + if(fread(&type, 2, 1, f)!=1){ + HRError(6251,"Failed to read type"); + return -1; + } if (*ia & DoBSWAP) SwapShort(&type); if (type != WAVE_FORMAT_PCM && type!=WAVE_FORMAT_MULAW && type!=WAVE_FORMAT_ALAW){ HRError(6251,"Only standard PCM, mu-law & a-law supported"); @@ -1094,7 +1115,10 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) *ia = (InputAction) (*ia | (DoMULAW|DoCVT)); else if(type==WAVE_FORMAT_ALAW) *ia = (InputAction) (*ia | (DoALAW|DoCVT)); - fread(&chans, 2, 1, f); /* Number of Channels */ + if(fread(&chans, 2, 1, f)!=1){ /* Number of Channels */ + HRError(6251,"Failed to read num channels"); + return -1; + } if (*ia & DoBSWAP) SwapShort(&chans); if (chans!=1 && chans!=2){ HRError(6251,"Neither mono nor stereo!"); @@ -1102,12 +1126,24 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) } if(chans==2) *ia = (InputAction) (*ia | (DoSTEREO|DoCVT)); - fread(&lng, 4, 1, f); /* Sample Rate */ + if(fread(&lng, 4, 1, f)!=1){ /* Sample Rate */ + HRError(6251,"Failed to read sample rate"); + return -1; + } if (*ia & DoBSWAP) SwapInt32(&lng); w->sampPeriod = 1.0E7 / (float)lng; - fread(&lng, 4, 1, f); /* Average bytes/second */ - fread(&sht, 2, 1, f); /* Block align */ - fread(&sampSize, 2, 1, f); /* Data size */ + if(fread(&lng, 4, 1, f)!=1){ /* Average bytes/second */ + HRError(6251,"Failed to read avg bytes/sec"); + return -1; + } + if(fread(&sht, 2, 1, f)!=1){ /* Block align */ + HRError(6251,"Failed to read block align"); + return -1; + } + if(fread(&sampSize, 2, 1, f)!=1){ /* Data size */ + HRError(6251,"Failed to read data size"); + return -1; + } if (*ia & DoBSWAP) SwapShort(&sampSize); if (sampSize != 16 && sampSize!=8){ HRError(6251,"Only 8/16 bit audio supported"); @@ -1122,7 +1158,12 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) len -= 16; } /* Skip chunk */ - for (; len>0; len--) fread(&c,1,1,f); + for (; len>0; len--) { + if(fread(&c,1,1,f)!=1){ + HRError(6251,"Failed to read skipped object"); + return -1; + } + } } numBytes=len; w->nSamples = numBytes / (sampSize/8); @@ -1206,7 +1247,7 @@ void RetrieveESIGFieldList(HFieldList *fList) /* EXPORT->ReadEsignalHeader: Get header from Esignal file; return FALSE in case of failure. */ -Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, short *kind, Boolean *bSwap, long *hdrS, Boolean isPipe) { @@ -1302,7 +1343,8 @@ static long GetESIGHeaderInfo(FILE *f, Wave w, InputAction *ia) { int nsamp; long nSamp, sampP; - short sampSize, kind; + unsigned short sampSize; + short kind; long hdrS; Boolean bSwap; @@ -1339,7 +1381,7 @@ static long GetESIGHeaderInfo(FILE *f, Wave w, InputAction *ia) void PutESIGHeaderInfo(FILE *f, Wave w) { FieldSpec *field, *field1; - FieldList inList, outList=NULL; + FieldList inList=NULL, outList=NULL; int len, i; /* Create header items first */ @@ -1400,16 +1442,18 @@ void PutESIGHeaderInfo(FILE *f, Wave w) typedef struct { /* HTK File Header */ int32 nSamples; int32 sampPeriod; - short sampSize; + /*short sampSize;*/ + unsigned short sampSize; /* cz277 - cbu */ short sampKind; } HTKhdr; /* EXPORT ReadHTKHeader: get header from HTK file, return false not HTK */ -Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, /* cz277 - cbu */ short *kind, Boolean *bSwap) { HTKhdr hdr; int n = sizeof hdr; + short s; if (fread(&hdr, 1, n, f) != n) return FALSE; @@ -1421,12 +1465,17 @@ Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, short *sampS, if (*bSwap){ SwapInt32(&hdr.nSamples); SwapInt32(&hdr.sampPeriod); - SwapShort(&hdr.sampSize); + s=hdr.sampSize; + SwapShort(&s); + hdr.sampSize=(unsigned short)s; SwapShort(&hdr.sampKind); } - if (hdr.sampSize <= 0 || hdr.sampSize > 5000 || hdr.nSamples <= 0 || - hdr.sampPeriod <= 0 || hdr.sampPeriod > 1000000) - return FALSE; + /*if (hdr.sampSize <= 0 || hdr.sampSize > 5000 || hdr.nSamples <= 0 || + hdr.sampPeriod <= 0 || hdr.sampPeriod > 1000000) {*/ + /* cz277 - cbu */ + if (hdr.sampSize == 0 || hdr.nSamples <= 0 || hdr.sampPeriod <= 0 || hdr.sampPeriod > 1000000) { + return FALSE; + } *nSamp = hdr.nSamples; *sampP = hdr.sampPeriod; *sampS = hdr.sampSize; *kind = hdr.sampKind; return TRUE; @@ -1436,7 +1485,10 @@ Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, short *sampS, static long GetHTKHeaderInfo(FILE *f, Wave w, InputAction *ia) { Boolean bSwap; - short kind,size; + /*short kind,size;*/ + short kind; + /* cz277 - cbu */ + unsigned short size; long sp; if (!ReadHTKHeader(f,&(w->nSamples),&sp, &size, &kind, &bSwap)){ @@ -1459,20 +1511,23 @@ static long GetHTKHeaderInfo(FILE *f, Wave w, InputAction *ia) } /* EXPORT->WriteHTKHeader: Write header info to HTK file f */ -void WriteHTKHeader(FILE *f, long nSamp, long sampP, short sampS, +void WriteHTKHeader(FILE *f, long nSamp, long sampP, unsigned short sampS, /* cz277 - cbu */ short kind, Boolean *bSwap) { HTKhdr hdr; int n = sizeof hdr; + short s; hdr.nSamples = nSamp; - hdr.sampSize = sampS; + hdr.sampSize = (unsigned short)sampS; hdr.sampKind = kind; hdr.sampPeriod = sampP; if (!natWriteOrder && vaxOrder){ SwapInt32(&hdr.nSamples); SwapInt32(&hdr.sampPeriod); - SwapShort(&hdr.sampSize); + s = (short)hdr.sampSize; + SwapShort(&s); + hdr.sampSize=s; SwapShort(&hdr.sampKind); if (bSwap!=NULL) *bSwap=TRUE; } diff --git a/HTKLib/HWave.h b/HTKLib/HWave.h old mode 100644 new mode 100755 index 96eade3..35d8730 --- a/HTKLib/HWave.h +++ b/HTKLib/HWave.h @@ -3,22 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HWave.h: Speech Waveform File Input */ +/* File: HWave.h Speech waveform file input */ /* ----------------------------------------------------------- */ -/* !HVER!HWave: 3.4.1 [CUED 12/03/09] */ + +/* !HVER!HWave: 3.5.0 [CUED 12/10/15] */ + /* Configuration Parameters: NSAMPLES - num samples in alien file input via a pipe @@ -147,7 +165,7 @@ FileFormat Str2Format(char *fmt); /* --------------------- HTK Header Routines --------------------- */ -Boolean ReadHTKHeader(FILE *f,long *nSamp,long *sampP,short *sampS, +Boolean ReadHTKHeader(FILE *f,long *nSamp,long *sampP,unsigned short *sampS, /* cz277 - cbu */ short *kind, Boolean *bSwap); /* Get header info from HTK file f, return false if apparently not @@ -156,7 +174,7 @@ Boolean ReadHTKHeader(FILE *f,long *nSamp,long *sampP,short *sampS, since it is not defined for HTK files) */ -void WriteHTKHeader(FILE *f, long nSamp, long sampP, short sampS, +void WriteHTKHeader(FILE *f, long nSamp, long sampP, unsigned short sampS, /* cz277 - cbu */ short kind, Boolean *bSwap); /* Write header info to HTK file f. @@ -172,7 +190,7 @@ void RetrieveESIGFieldList(HFieldList *fList); Retrieve the field list of an ESIG input file */ -Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, short *kind, Boolean *bSwap, long *hdrS, Boolean isPipe); /* diff --git a/HTKLib/Makefile.in b/HTKLib/MakefileCPU old mode 100644 new mode 100755 similarity index 74% rename from HTKLib/Makefile.in rename to HTKLib/MakefileCPU index 0f8fa1c..08a322c --- a/HTKLib/Makefile.in +++ b/HTKLib/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,40 +17,42 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HTKLib/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include hlib = . HLIBS = ${exec_prefix}/lib/HTKLib.a -CC = @CC@ -CFLAGS := $(CFLAGS) @CFLAGS@ -I. -DPHNALG -RANLIB = @RANLIB@ -INSTALL= @INSTALL@ +CC = gcc +CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DPHNALG +LDFLAGS = -lpthread -lm +RANLIB = ranlib +INSTALL= /usr/bin/install -c target = HTKLib.a -objects = @HGRAF@ esig_asc.o \ +objects = HGraf.o esig_asc.o \ esig_edr.o \ esignal.o \ esig_nat.o \ HAdapt.o \ + HANNet.o \ HArc.o \ HAudio.o \ HDict.o \ @@ -64,6 +66,7 @@ objects = @HGRAF@ esig_asc.o \ HMath.o \ HMem.o \ HModel.o \ + HNCache.o \ HNet.o \ HParm.o \ HRec.o \ @@ -72,14 +75,14 @@ objects = @HGRAF@ esig_asc.o \ HTrain.o \ HUtil.o \ HVQ.o \ - HWave.o \ - strarr.o + HWave.o -lvobjects = $(basename @HGRAF@).lv.o esig_asc.lv.o \ +lvobjects = $(basename HGraf.o).lv.o esig_asc.lv.o \ esig_edr.lv.o \ esignal.lv.o \ esig_nat.lv.o \ HAdapt.lv.o \ + HANNet.lv.o \ HArc.lv.o \ HAudio.lv.o \ HDict.lv.o \ @@ -93,6 +96,7 @@ lvobjects = $(basename @HGRAF@).lv.o esig_asc.lv.o \ HMath.lv.o \ HMem.lv.o \ HModel.lv.o \ + HNCache.lv.o \ HNet.lv.o \ HParm.lv.o \ HRec.lv.o \ @@ -101,8 +105,7 @@ lvobjects = $(basename @HGRAF@).lv.o esig_asc.lv.o \ HTrain.lv.o \ HUtil.lv.o \ HVQ.lv.o \ - HWave.lv.o \ - strarr.lv.o + HWave.lv.o all: HTKLib.a HTKLiblv.a diff --git a/HTKLib/MakefileMKL b/HTKLib/MakefileMKL new file mode 100755 index 0000000..866b37d --- /dev/null +++ b/HTKLib/MakefileMKL @@ -0,0 +1,145 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKLib/MakefileMKL +# ----------------------------------------------------------- +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +hlib = . +HLIBS = ${exec_prefix}/lib/HTKLib.a + +CC = icc +CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DMKL -DPHNALG +LDFLAGS = -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.so /opt/intel/composerxe/lib/intel64/libiomp5.so -Wl,--end-group -lpthread -lm +RANLIB = ranlib +INSTALL= /usr/bin/install -c +target = HTKLib.a +objects = HGraf.o esig_asc.o \ + esig_edr.o \ + esignal.o \ + esig_nat.o \ + HAdapt.o \ + HANNet.o \ + HArc.o \ + HAudio.o \ + HDict.o \ + HExactMPE.o \ + HFB.o \ + HFBLat.o \ + HLabel.o \ + HLat.o \ + HLM.o \ + HMap.o \ + HMath.o \ + HMem.o \ + HModel.o \ + HNCache.o \ + HNet.o \ + HParm.o \ + HRec.o \ + HShell.o \ + HSigP.o \ + HTrain.o \ + HUtil.o \ + HVQ.o \ + HWave.o + +lvobjects = $(basename HGraf.o).lv.o esig_asc.lv.o \ + esig_edr.lv.o \ + esignal.lv.o \ + esig_nat.lv.o \ + HAdapt.lv.o \ + HANNet.lv.o \ + HArc.lv.o \ + HAudio.lv.o \ + HDict.lv.o \ + HExactMPE.lv.o \ + HFB.lv.o \ + HFBLat.lv.o \ + HLabel.lv.o \ + HLat.lv.o \ + HLM.lv.o \ + HMap.lv.o \ + HMath.lv.o \ + HMem.lv.o \ + HModel.lv.o \ + HNCache.lv.o \ + HNet.lv.o \ + HParm.lv.o \ + HRec.lv.o \ + HShell.lv.o \ + HSigP.lv.o \ + HTrain.lv.o \ + HUtil.lv.o \ + HVQ.lv.o \ + HWave.lv.o + +all: HTKLib.a HTKLiblv.a + +# This is the library used by HTKTools and HLMTools +HTKLib.a: $(objects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +# This version is used by HDecode (HTKLVRec) +HTKLiblv.a: $(lvobjects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +%.lv.o: %.c + $(CC) -DNO_LAT_LM $(CFLAGS) -c -o $@ $< + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(objects) $(lvobjects) HTKLib.a HTKLiblv.a + +cleanup: + -rm -f $(objects) $(lvobjects) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: HTKLib.a HTKLiblv.a mkinstalldir + $(INSTALL) -m 755 HTKLib.a HTKLiblv.a $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HTKLib/MakefileNVCC b/HTKLib/MakefileNVCC new file mode 100755 index 0000000..a988585 --- /dev/null +++ b/HTKLib/MakefileNVCC @@ -0,0 +1,153 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKLib/MakefileNVCC +# ----------------------------------------------------------- +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +hlib = . +HLIBS = ${exec_prefix}/lib/HTKLib.a + +CC = /usr/local/cuda/bin/nvcc +CFLAGS := -m64 -ccbin gcc -gencode arch=compute_30,code=sm_30 -D'ARCH="x86_64"' -DCUDA +LDFLAGS = -L/usr/local/cuda/lib -Wl,-rpath=/usr/local/cuda/lib -L/usr/local/cuda/lib64 -Wl,-rpath=/usr/local/cuda/lib64 -lcblas -lpthread +RANLIB = ranlib +INSTALL= /usr/bin/install -c +target = HTKLib.a +objects = HGraf.o esig_asc.o \ + esig_edr.o \ + esignal.o \ + esig_nat.o \ + HAdapt.o \ + HANNet.o \ + HArc.o \ + HAudio.o \ + HCUDA.o \ + HDict.o \ + HExactMPE.o \ + HFB.o \ + HFBLat.o \ + HLabel.o \ + HLat.o \ + HLM.o \ + HMap.o \ + HMath.o \ + HMem.o \ + HModel.o \ + HNCache.o \ + HNet.o \ + HParm.o \ + HRec.o \ + HShell.o \ + HSigP.o \ + HTrain.o \ + HUtil.o \ + HVQ.o \ + HWave.o + +lvobjects = $(basename HGraf.o).lv.o esig_asc.lv.o \ + esig_edr.lv.o \ + esignal.lv.o \ + esig_nat.lv.o \ + HAdapt.lv.o \ + HANNet.lv.o \ + HArc.lv.o \ + HAudio.lv.o \ + HCUDA.lv.o \ + HDict.lv.o \ + HExactMPE.lv.o \ + HFB.lv.o \ + HFBLat.lv.o \ + HLabel.lv.o \ + HLat.lv.o \ + HLM.lv.o \ + HMap.lv.o \ + HMath.lv.o \ + HMem.lv.o \ + HModel.lv.o \ + HNCache.lv.o \ + HNet.lv.o \ + HParm.lv.o \ + HRec.lv.o \ + HShell.lv.o \ + HSigP.lv.o \ + HTrain.lv.o \ + HUtil.lv.o \ + HVQ.lv.o \ + HWave.lv.o + +all: HTKLib.a HTKLiblv.a + +# This is the library used by HTKTools and HLMTools +HTKLib.a: $(objects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +HCUDA.o : HCUDA.h + $(CC) -o HCUDA.o $(CFLAGS) -c HCUDA.cu + +# This version is used by HDecode (HTKLVRec) +HTKLiblv.a: $(lvobjects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +%.lv.o: %.c + $(CC) -DNO_LAT_LM $(CFLAGS) -c -o $@ $< + +HCUDA.lv.o : HCUDA.h + $(CC) -o HCUDA.lv.o $(CFLAGS) -c HCUDA.cu + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(objects) $(lvobjects) HTKLib.a HTKLiblv.a + +cleanup: + -rm -f $(objects) $(lvobjects) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: HTKLib.a HTKLiblv.a mkinstalldir + $(INSTALL) -m 755 HTKLib.a HTKLiblv.a $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HTKLib/config.h b/HTKLib/config.h new file mode 100755 index 0000000..37f0e15 --- /dev/null +++ b/HTKLib/config.h @@ -0,0 +1,48 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: config.h Global configuration options */ +/* ----------------------------------------------------------- */ + +/* !HVER!config: 3.5.0 [CUED 12/10/15] */ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#ifdef MKL +#include +#endif + +#ifdef CUDA +#undef MKL +#endif + + +#endif + +/* ------------------------ End of config.h ----------------------- */ + diff --git a/HTKLib/esig_asc.c b/HTKLib/esig_asc.c old mode 100644 new mode 100755 index b7eefd1..631edb3 --- a/HTKLib/esig_asc.c +++ b/HTKLib/esig_asc.c @@ -7,24 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esig_asc.c Esignal Ascii I/O */ +/* ----------------------------------------------------------- */ - -/* - * Example programs for Esignal public external file format. - * Ascii I/O. - * - * Author: Rod Johnson - */ - +/* !HVER!esig_asc: 3.5.0 [CUED 12/10/15] */ #include "esignal.h" #include @@ -2022,7 +2021,10 @@ ReadAsciiEscape(unsigned long *val, case '6': case '7': ungetc(ch, file); - fscanf(file, "%3lo", val); + if(fscanf(file, "%3lo", val)!=1){ + printf("Failed to read value from file"); + return FALSE; + } break; default: return FALSE; @@ -3196,3 +3198,6 @@ ApproxWidth(int type) } } } + +/* ------------------------- End of esig_asc.c --------------------------- */ + diff --git a/HTKLib/esig_edr.c b/HTKLib/esig_edr.c old mode 100644 new mode 100755 index 713f819..5b2c5d9 --- a/HTKLib/esig_edr.c +++ b/HTKLib/esig_edr.c @@ -7,23 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esig_edr.c ED1 and ED2 portable binary I/O */ +/* ----------------------------------------------------------- */ - -/* - * Example programs for Esignal public external file format. - * EDR1 and EDR2 portable binary I/O. - * - * Author: Rod Johnson - */ +/* !HVER!esig_edr: 3.5.0 [CUED 12/10/15] */ #include "esignal.h" @@ -306,7 +306,7 @@ ReadEdrRecord(FieldSpec **fields, { long i; long nopt; - Uchar flags; + Uchar flags=0; if (file == NULL || fields == NULL) { @@ -1189,7 +1189,7 @@ EdrReadLong(long *data, if ((hi & 0x80000000) == 0) /* non-negative */ { - if (hi > lmaxhi || hi == lmaxhi && lo > lmaxlo) + if (hi > lmaxhi || (hi == lmaxhi && lo > lmaxlo)) { data[n] = LONG_MAX; /* CLIPPING */ @@ -1201,7 +1201,7 @@ EdrReadLong(long *data, { hi |= sgnext; - if (hi < lminhi || hi == lminhi && lo < lminlo) + if (hi < lminhi || (hi == lminhi && lo < lminlo)) { data[n] = LONG_MIN; /* CLIPPING */ @@ -1338,7 +1338,7 @@ EdrReadUlong(Ulong *data, ulmaxhi = ULONG_MAX >> 32, ulmaxlo = ULONG_MAX & 0xffffffffUL; - if (hi > ulmaxhi || hi == ulmaxhi && lo > ulmaxlo) + if (hi > ulmaxhi || (hi == ulmaxhi && lo > ulmaxlo)) { data[n] = ULONG_MAX; /* CLIPPING */ @@ -2687,4 +2687,5 @@ EdrWriteWchar(Wchar *data, return n; } +/* ------------------------ End of esig_edr.c ------------------------- */ diff --git a/HTKLib/esig_nat.c b/HTKLib/esig_nat.c old mode 100644 new mode 100755 index ad79018..6dfcb02 --- a/HTKLib/esig_nat.c +++ b/HTKLib/esig_nat.c @@ -7,24 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esig_nat.c native binary I/O */ +/* ----------------------------------------------------------- */ - -/* - * Example programs for Esignal public external file format. - * native binary I/O. - * - * Author: Rod Johnson - */ - +/* !HVER!esig_nat: 3.5.0 [CUED 12/10/15] */ #include "esignal.h" @@ -961,3 +960,6 @@ WriteNativeString(char *string, return TRUE; } + +/* ------------------------ End of esig_nat.c ------------------------- */ + diff --git a/HTKLib/esignal.c b/HTKLib/esignal.c old mode 100644 new mode 100755 index 79be9b2..74eb10b --- a/HTKLib/esignal.c +++ b/HTKLib/esignal.c @@ -7,24 +7,21 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ - - -/* - * Example programs for Esignal public external file format. - * Utility; field specifications and lists; general I/O. - * - * Author: Rod Johnson - */ - +/* File: esignal.h Esignal include file */ +/* ----------------------------------------------------------- */ #include "esignal.h" @@ -1757,7 +1754,10 @@ GetLine(char *buf, { int i, j; - fgets(buf, len+1, file); + if(fgets(buf, len+1, file)==NULL){ + printf("Error reading from file\n"); + return FALSE; + } if (strlen(buf) != len || buf[len-1] != '\n') return FALSE; buf[len-1] = '\0'; @@ -1805,7 +1805,10 @@ GetLong(long *val, /* Read line; check length. */ - fgets(buf, len+1, file); + if(fgets(buf, len+1, file)==NULL){ + printf("Error reading from file\n"); + return FALSE; + } if (strlen(buf) != len || buf[len-1] != '\n') { @@ -1926,3 +1929,6 @@ LongVal(void *src, int type, long *dest) return TRUE; } + +/* ------------------------ End of esignal.c ------------------------- */ + diff --git a/HTKLib/esignal.h b/HTKLib/esignal.h old mode 100644 new mode 100755 index 40109c1..aa0ba99 --- a/HTKLib/esignal.h +++ b/HTKLib/esignal.h @@ -7,25 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esignal.h Esignal include file */ +/* ----------------------------------------------------------- */ -/* !HVER!esignal: 3.4.1 [CUED 12/03/09] */ -/* - * - * Example programs for Esignal public external file format. - * Include file. - * - * Author: Rod Johnson - */ - +/* !HVER!esignal: 3.5.0 [CUED 12/10/15] */ #ifndef _ESIGNAL_H_ #define _ESIGNAL_H_ @@ -308,3 +306,6 @@ extern void (*DebugMsgFunc)(char *msg); #endif #endif /* _ESIGNAL_H */ + +/* ------------------------ End of esignal.h ----------------------- */ + diff --git a/HTKLib/htk_htklib_nt.mkf b/HTKLib/htk_htklib_nt.mkf deleted file mode 100644 index 986eb23..0000000 --- a/HTKLib/htk_htklib_nt.mkf +++ /dev/null @@ -1,83 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTKLib static library, MSVC -# - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< - -.c.olv: - $(CC) /nologo /c /Fo$@ /D "NO_LAT_LM" $(CFLAGS) $< - -CC=cl -CL=link -CPU=win32 - -# the MSDOS is needed to set _fmode to binary in HShell.c -HTKCF = /I "." /D "WIN32_AUDIO" /D ARCH=\"WIN32\" /D "PHNALG" - -# use the following for optimised compilation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for a debug compilation -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -CFLAGS = $(SYSCF) $(HTKCF) - -# the following is only needed when making a DLL -SYSLF = /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# the following is only needed when making a debug DLL -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# flags used -# /MT multi-threaded executable -# /ML single-threaded executable -# /W1 warning level 1 -# /GX synchronous exception handling -# /O2 maximise speed -# /G5 P5 optimisation -# /G6 P6 optimisation -# /Ob2 allow inlining of functions not tagged with _inline - -libHTK = HTKLib.$(CPU) -libHTKlv = HTKLiblv.$(CPU) - -syslib = kernel32.lib user32.lib gdi32.lib winspool.lib \ - comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - uuid.lib odbc32.lib odbccp32.lib winmm.lib - -libs = $(syslib) - -core = esig_asc.obj esig_edr.obj esignal.obj esig_nat.obj \ - HAdapt.obj HAudio.obj HDict.obj HFB.obj \ - HGraf.null.obj HLabel.obj HLat.obj \ - HLM.obj HMap.obj HMath.obj HMem.obj HModel.obj HNet.obj \ - HParm.obj HRec.obj HShell.obj HSigP.obj HTrain.obj \ - HUtil.obj HVQ.obj HWave.obj strarr.obj \ - HExactMPE.obj HFBLat.obj HArc.obj - -corelv = esig_asc.olv esig_edr.olv esignal.olv esig_nat.olv \ - HAdapt.olv HAudio.olv HDict.olv HFB.olv \ - HGraf.null.olv HLabel.olv HLat.olv \ - HLM.olv HMap.olv HMath.olv HMem.olv HModel.olv HNet.olv \ - HParm.olv HRec.olv HShell.olv HSigP.olv HTrain.olv \ - HUtil.olv HVQ.olv HWave.olv strarr.olv \ - HExactMPE.olv HFBLat.olv HArc.olv - -all: $(libHTK).lib $(libHTKlv).lib - -$(libHTK).lib: $(core) - lib /OUT:$(libHTK).lib $(core) - lib /list $(libHTK).lib - -$(libHTKlv).lib: $(corelv) - lib /OUT:$(libHTKlv).lib $(corelv) - lib /list $(libHTKlv).lib - -clean: - del *.obj *.olv $(libHTK).lib $(libHTKlv).lib - -cleanup: - del *.obj - diff --git a/HTKLib/i686.cpu b/HTKLib/i686.cpu deleted file mode 100644 index e69de29..0000000 diff --git a/HTKLib/strarr.c b/HTKLib/strarr.c deleted file mode 100644 index ea5a930..0000000 --- a/HTKLib/strarr.c +++ /dev/null @@ -1,145 +0,0 @@ -/* ----------------------------------------------------------- */ -/* */ -/* ___ */ -/* |_| | |_/ SPEECH */ -/* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ -/* */ -/* */ -/* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ -/* */ -/* Use of this software is governed by a License Agreement */ -/* ** See the file License for the Conditions of Use ** */ -/* ** This banner notice must not be removed ** */ -/* */ -/* ----------------------------------------------------------- */ - - -#include -#include "esignal.h" -#include "strarr.h" -/* - * "dim" should point to the dimensions of a char matrix. - * "data" should point to the matrix data, stored in row-major order. - * Each row is assumed to be terminated by one or more null characters. - * This function converts the matrix to a NULL-terminated array of - * strings---one per row of the matrix---and returns a pointer to the - * result. - */ - -char ** -StrArrFromRect(long *dim, void *data) -{ - char **strarr; - long len, wid, i; - char *row; - - len = dim[0]; - - strarr = (char **)malloc((len + 1) * sizeof(char *)); - - wid = dim[1]; - row = (char *) data; - for (i = 0; i < len; i++) - { - /* Assumption: each row has at least 1 terminating null */ - strarr[i] = StrDup(row); - row += wid; - } - - strarr[len] = NULL; - - return strarr; -} - - -/* - * "strarr" should point to the beginning of a NULL-terminated string array. - * "dimenp" and "datap" are output variables. If not NULL, they should - * be the addresses of variables to which results will be assigned. - * The function converts the data in the string array to a character matrix, - * stored in row-major order. Each row receives the contents of one string - * padded with null characters to bring them all up to a common length; - * every row gets at least one terminal null. A pointer to the dimensions - * is returned via "dimenp". A pointer to the matrix data is returned via - * "datap". - */ - -void -StrArrToRect(char **strarr, long **dimenp, void **datap) -{ - long len, wid, *dim, siz; - void *data; - long i, j; - char *str, *row; - - len = StrArrLen(strarr); - wid = StrArrMaxLen(strarr) + 1; - - dim = (long *) malloc(2 * sizeof(long)); - dim[0] = len; - dim[1] = wid; - - siz = len * wid; - data = malloc(siz * sizeof(char)); - row = (char *) data; - for (i = 0; i < len; i++) - { - str = strarr[i]; - for (j = 0; str[j] != '\0'; j++) - row[j] = str[j]; - for ( ; j < wid; j++) - row[j] = '\0'; - row += wid; - } - - if (dimenp) - *dimenp = dim; - if (datap) - *datap = data; -} - - -/* - * Number of strings in a NULL-terminated string array. - */ - -int -StrArrLen(char **str_arr) -{ - int i = 0; - - if ((str_arr == NULL) || (*str_arr == NULL)) - return 0; - - while (str_arr[i] != NULL) - i++; - - return(i); -} - - -/* - * Maximum strlen for the members of a NULL-terminated string array. - */ - -int -StrArrMaxLen(char **str_arr) -{ - int maxlen = 0; - int newmax; - - if (str_arr == NULL) - return(0); - - while (*str_arr != NULL) { - if ((newmax = strlen(*str_arr)) > maxlen) - maxlen = newmax; - str_arr++; - } - - return(maxlen); -} diff --git a/HTKLib/strarr.h b/HTKLib/strarr.h deleted file mode 100644 index cd2b68b..0000000 --- a/HTKLib/strarr.h +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------- */ -/* */ -/* ___ */ -/* |_| | |_/ SPEECH */ -/* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ -/* */ -/* */ -/* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ -/* */ -/* Use of this software is governed by a License Agreement */ -/* ** See the file License for the Conditions of Use ** */ -/* ** This banner notice must not be removed ** */ -/* */ -/* ----------------------------------------------------------- */ - -#ifndef _STRARR_H_ -#define _STRARR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -char ** StrArrFromRect(long *dim, void *data); -void StrArrToRect(char **strarr, long **dimenp, void **datap); -int StrArrLen(char **str_arr); -int StrArrMaxLen(char **str_arr); - -#ifdef __cplusplus -} -#endif - -#endif /* _STRARR_H_ */ diff --git a/HTKTools/.directory b/HTKTools/.directory deleted file mode 100644 index 46e59d0..0000000 --- a/HTKTools/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Timestamp=2009,3,11,9,47,33 -ViewMode=1 diff --git a/HTKTools/ChangeLog b/HTKTools/ChangeLog deleted file mode 100644 index fa19bef..0000000 --- a/HTKTools/ChangeLog +++ /dev/null @@ -1,516 +0,0 @@ -2006-05-03 Andrew Liu - - * Logic correction in HVite - -2005-08-11 Anna Langley - - * HCluster, Hdistance, HEAdapt, HEAdaptLat, HSprout added - -2005-08-09 Anna Langley - - * HMMIRest added - -2005-02-24 Anna Langley - - * Files for autoconf installs added - -2005-02-08 S.E. Tranter - - * HCluster.c: Added support for diagonal and block diagonal - covariance representation with BIC stopping criterion. - Block diagonal case is slightly different to previous local version - BIC scoring info now requires trace level 1 to be output. - -2004-08-04 Antti-Veikko Rosti - - * HERest.c: ConvLogWt() and ConvExpWt() added after ConvDiagC() - calls to convert the mixture weights into the log-scale prior to - forward-backward recursions. - - * HHEd.c: Function ReOrderFeaturesCommand() added to sort model - parameters according to a global feature element re-ordering with - RP command. - -2004-08-02 Gunnar Evermann - - * HVite.c (main): Check that number of tokens requested via -n - switch doesn't exceed maximum. - -2004-07-120 Khe Chai Sim - - * HHEd.c: Support for generic tree name mapping. Current mapping - makes use of the macRoot prefix specified with the TB command. - -2004-07-14 Gunnar Evermann - - * HMMIRest.c (main): Employ LLFs for faster loading of lattices. - (main): Add LATFILEMASK to be able to discard parts of the - segment name when loading the lattice file. - -2004-07-14 Antti-Veikko Rosti - - * HERest.c: New heap for accumulators called accStack created. This - is used in AttachAccs() instead of gstack. - - * HMMIRest.c: Removed unused variables and added T_TIM trace - flag. The heap globStack renamed to accStack. - -2004-07-08 Mark Gales - - * HHEd.c (RegClassesCommand): Correctly treat base classes stored - in directories specified via -M. - -2004-07-02 B. Jia - - * HMMIRest.c: Fix a bug of single pass retrain in discrimitive - trainng - -2004-06-25 Gunnar Evermann - - * *.c (traceHFB): Eliminate traceHFB variable and replace with - function call. - -2004-06-06 B. Jia - - * HMMIRest.c: New config variable UPDATEMODE to allow dumping summed - accumulates. - -2004-04-26 K. Yu - - * HMMIRest.c: Add support for MMI priors in MPE training (new - config variables MMIPRIOR and MMITAUI). - -2004-04-17 Gunnar Evermann - - * HERest.c (main): Fix for UPDATEMODE to make non-parallel mode - training work again. - -2004-04-16 Gunnar Evermann - - * HERest.c: New config variable UPDATEMODE to allow dumping summed - accumulates (subsumes functionality of HAccSum). - -2004-04-13 B. Jia - - * HMMIRest.c: New options '-rp' and '-qp' to support - subdirectories of denominator and numerator lattices respectively, - so that all side directories will not crowd under one directory. - -2004-04-02 Bin Jia - - * HCompV: New option '-p' to support storing CMN/CVN files in - subdirectories for use with CMEANPATHMASK and VARSCALEPATHMASK. - -2004-03-21 Mark Gales - - * *.c: Various fixed for use of new adaptation. - -2004-02-16 Bin Jia - - * HDMan.c: MAXDICTS increased from 20 to 100 - -2003-12-17 Gunnar Evermann - - * HVite.c (DoAlignment): Allow alignment of segments with empty - transcriptions if an utterance boundary word (option -b) was - specified. - - -2003-12-10 S.E. Tranter - - * HCluster.c: Added -y option to force splits to be binary - This changed the functions: - MakeInitialAssignment, MakeInitialModuloAssignment - - Added a -z option to allow a BIC-based stopping criterion. - This is currently only implemented for a 2-way split and - for a full covariance (or correlation) matrix representation - - i.e. it does not yet include block-diagonal or diagonal covariance - - Two implementations of the BIC-based criterion are implemented - - the choice of which is made on the sign of the -z parameter. - Negative means a "local" decision - in that the penalty factor - uses N_z, the number of frames in the cluster being split, - whereas positive means a "global" decision - i.e the penalty - factor uses the total number of frames input to the clusterer. - The absolute value of the z parameter indicates the value of alpha - in the penalty formula. - This uses the new functions: - BICScore, ConvertCorrelationToCovariance, CalcJointMean, - CalcJointCov - - Some maths functions from ~mjfg/cuhtk/HTKLib/HMath.c have also - been included. This is because the existing SVD implementation - sometimes goes into an infinite loop, so the alternative code - (which contains nr stuff so cant be released) has been included. - However, this is not yet called anywhere, since the icc version - (e.g. compiled on spot) doesn't seem to produced this problem. - This involves the functions: - PYTHAG, MAXX, SIGN, SVDCmp, InvSVD_cuhtk - -2003-10-14 Anna Langley - - * htk_htktools_nt.mkf: Use backslashes in pathnames. - -2003-10-14 Gunnar Evermann - - * HLEd.c: Rename DELETE as Visual C++ doen't seem to like it. - -2003-09-10 Gunnar Evermann - - * HHEd.c (ParseAlpha): Fix parsing of octal charcter codes. - From Tanel Alumäe - -2003-07-28 Anna Langley - * htk_htktools_nt.mkf: was not building HLRescore, applied changes - supplied by Arlindo Veiga which corrects this. - -2003-07-24 M. J. F. Gales - - * HERest.c: clarify the single pass retraining when - the TARGETKIND does not change. - -2003-07-08 Anna Langley - * HERest.c, HHEd.c, HVite.c, HMMIRest.c, HEAdaptLat.c: removed - unused variables from sources. - -2003-06-18 M. J. F. Gales - - * HERest.c (MLUpdateModels): maxM uninitialised. This means - that the weights are not always guaranteed to be updated - when there are multiple components. - -2003-04-05 S.E. Tranter - - * HCluster.c (main): - The Minimum number of frames required to attempt to do - full covariance matrix inversion is set to at least - the dimension of the feature vector + 1 - - New functions: - InvertTriMatSVD to invert a TriMat covariance - matrix using SVD decomposition (more stable than CovInvert) - IsCovInvertableSVD : checks if SVD inversion has been - relatively stable - StoreCovsSVD : reordering of StoreCovs and inversion of - matrix using InvertTriMatSVD, so the inversion is - now done before checking if the matrix is invertable - - Modified functions: - StoreCovsSVD now called instead of StoreCovs in main loop - MakeClusterStats now calls InvertTriMatSVD not CovInvert - -2003-03-30 Gunnar Evermann - - * HLRescore.c (ProcessLattice): Try to make lattice node order - deterministic by setting ln->score to node posterior before - saving (can be turned off by setting SORTLATTICE=F). - -2003-03-17 Sue Tranter - - * HCluster.c (SetConfParms): Bug fix to allow feature vectors - of other than 13 dimension. - - SetConfParams now adds the "base_dimen" if it sees _D and _A, - rather than adding 13. - Also, it checks that the minvar is not set to a different - value in the cfgfile and command line - ReportUsage changes to allow "-w" option to set base_dimen on - command line (_D and _A should be set in cfg file) - Main : moved SetConfParms and setting dimension to after dealing - with input args. (to allow -w) - -w option added to set base dimension on commandline - ShowParameters: ordering changed to be alphabetical - and -v and -w options added - - -2003-03-20 Dan Povey - - * HVite.c (ProcessFile): Output current beam if alignment failed - and is restartable. - -2003-03-12 Gunnar Evermann - - * HERest.c (main): Undo change to total logprob calculation. - -2003-03-12 Lan Wang - - * HMMIRest.c (SetConfParms): New config variables INXFORMMASK and - PAXFORMMASK. - -2003-03-10 Gunnar Evermann - - * HERest.c: Remove FIXUP again. - -2003-03-10 Dan Povey - - * HMMIRest.c: new config vars: VARFLOORPERCENTILE and VARSMOOTH - * HERest.c: new config vars: VARFLOORPERCENTILE and FIXUP - -2003-02-27 S.E. Tranter - - * Makefile: Added HCluster to makefile - - * HCluster.c (main): - printing of numargs removed - printing of dimension information needs T_TOP - CloseAndExit function added to enable program to exit safely at - different stages - Bugfix for the case where all the segs are too small for main - clustering decisions (assigns them all to 1 cluster) - Code which allowed an HPARM2 parameter (_Z) to be set has been - commented out, since it caused a seg fault and may have - been an interaction problem with a new HParm.c, since this - didn't happen previously. This option was not currently - being used in the config file anyway. - -2003-02-25 Mark Gales - - * HHEd.c: Bug fixes in regression tree clustering. - From José David Romeral - -2003-02-20 Lan Wang - - * HEAdaptLat.c: New tool. - -2003-02-07 Dan Povey - - * HHEd.c: New command PS for movemix models. - -2003-02-03 Mark Gales - - * *.[hc]: Use new XForm code. - -2002-12-19 Gunnar Evermann - - * *.[hc]: Bump version to 3.2. - -2002-12-18 Gunnar Evermann - - * HLRescore.c: Fix error codes. - -2002-12-16 Gunnar Evermann - - * HLRescore.c (ReportUsage): Correct option description. - -2002-12-16 Steve Young - - * HSGen.c (Select): Fix boundary case for random arc selection. - -2002-11-14 Gunnar Evermann - - * HHEd.c (MixDownCommand): remove unused variables. - - * HEAdapt.c (main): Init HModel before HParm. - (Initialise): Pass current HMMSet to HParm. - - * HERest.c (main): Init HModel before HParm. - (Initialise): Pass current HMMSet to HParm. - - * HHEd.c (Summary): - (DoEdit): - (InputXFormCommand): New command XF to set InputXForm in model set. - - * HList.c (main): Initialise modules HLabel and HModel for - InputXForm support. - - * HVite.c (Initialise): - * HRest.c (Initialise1): - * HInit.c (Initialise): - * HCompV.c (Initialise): Pass current HMMSet to HParm. - -2002-09-23 Gunnar Evermann - - * HHEd.c (Summary): Fix typo. - - * HERest.c (UpdateModels): Print Number of frames seen after - updating models. - -2002-09-12 Gunnar Evermann - - * HVite.c (ProcessFile): Output current beam if alignment failed - and is restartable. - -2002-09-11 Gunnar Evermann - - * HDMan.c (MAXPRONS): Increase from 20 to 100. - -2002-08-30 Gunnar Evermann - - * HEAdapt.c (DoForwardBackward): Fix for FBInfo structure modified - for 2-model re-estimation. - -2002-08-28 Gunnar Evermann - - * HERest.c (Initialise): Move printing of pruning settings to - HFB:InitialiseForBack(). - -2002-07-12 Thomas Hain - - * HERest.c: Added 2-model re-estimation - -2002-07-11 Thomas Hain - - * HHEd.c (SetConfParms): - (TieLeafNodes): Added functionality to compute means and var's of - leaf nodes using cluster stats. - (MixMergeCost): - (MergeMix): - (DownMix): - (MixDownCommand): Add MD command - (FloorAverageCommand): Add FA Command - (FloorVectorCommand): Add FV Command - -2002-06-30 Gunnar Evermann - - * HHEd.c (FullCovarCommand): Add FC command. - -2002-06-07 Gunnar Evermann - - * HLRescore.c (ReportUsage): Document '-c' option. - From: ZEN Heiga - -2002-06-05 Gunnar Evermann - - * HLRescore.c: New Tool. - -2002-06-05 Gunnar Evermann - - * *.[hc]: Bump version to 3.1.1. - -2002-02-23 Gunnar Evermann - - * HCompV.c: Fix initialisation of CMN/CVN related data structures. - -2002-01-16 Gunnar Evermann - - * *.[hc]: Bump version to 3.1. - -2001-12-11 Gareth Moore - - * *.c (ReportUsage): Tool usage report formatting tidied. - -2001-12-03 Gunnar Evermann - - * HDMan.c (WriteDictWord): - (WriteEntry): - (EditWordBuf): - (EditAndMerge): Do not update new phone list when outputting trace - info. - -2001-11-14 Xunying Liu - - * HCompV.c: Added support for cluster-based mean and variance - normalisation. - -2001-06-08 Gunnar Evermann - - * HHEd.c (SetStreamWidthCommand): Recalculate vecSize of HMMSet - From: Mark Gales - -2001-04-18 Gunnar Evermann - - * HList.c (IsWave): Take extended filenames into account. - -2001-04-17 Gunnar Evermann - - * HSGen.c: Assign new error code range 3400-3499 to HSGen. - - * HVite.c (Initialise): - * HEAdapt.c (Initialise): - * HERest.c (Initialise): Fix error codes. - - * HHEd.c (ChkTreeObject): Correct error message. - -2001-04-11 Gunnar Evermann - - * HVite.c (DoAlignment): - (ProcessFile): Support iterative increase of beam limit for alignment. - -2000-11-30 Gunnar Evermann - - * HVite.c: Add missing option -B and SAVEBINARY config variable. - -2000-10-27 Gunnar Evermann - - * HRest.c (LoadFile): Do not try to load zero frame segments even - if '-t' option is specified. - - * HVite.c (DoOnlineAdaptation): Return 0 if forward-backward - failed. - - * HEAdapt.c (DoForwardBackward): Only update total frame and - logprob counters if forward-backward succeeded. - -2000-10-26 Phil Woodland - - * HBuild.c (ProcessBoBiGram): Fix generation of bigram network for - zapUnknown==TRUE case. - -2000-10-26 Gunnar Evermann - - * HERest.c (DoForwardBackward): Only update total frame and - logprob counters if forward-backward succeeded. - From: Mark Gales - -2000-10-24 Gunnar Evermann - - * HSmooth.c: Rename MAXPHONES to MAXMONOPHONES. - - * HDMan.c: Consistently use MAXPHONES (defined in HDict.h). - From Gunnar Lehtinen - -2000-10-06 Gunnar Evermann - - * HHEd.c: Remove MPW segment pragmas. - -2000-09-25 Gunnar Evermann - - * Makefile: Copy compile settings from env files. - -2000-09-15 Gunnar Evermann - - * HDMan.c (ReadCmd): C++ fix for incrementing enums. - -2000-09-11 Gunnar Evermann - - * HVite.c (ProcessFile): Don't accumulate adaptation statistics if - no token survived and transcription was generated only due to - HREC:FORCEOUT=T. - (DoAlignment): Perform adaptation in alignment case as well (i.e. - lattice rescoring). - - * HParse.c: - (GetWdBeginNum): Eliminate unused for loop. - - * HSLab.c: - * HSGen.c: - * HLStats.c: - * HLEd.c: - * HVite.c: - * HSmooth.c: - * HResults.c: - * HRest.c: - * HQuant.c: - * HBuild.c: - * HInit.c: - * HHEd.c: - * HERest.c: Warning elimination. - -2000-09-08 Gunnar Evermann - - * HDMan.c: - * HCopy.c: - * HCompV.c: - * HList.c: - * HEAdapt.c: Warning elimination. - -2000-09-04 Gunnar Evermann - - * *.[hc]: Reindented. - - * *.[hc]: Cleaned up version headers and set version to 3.0. diff --git a/HTKTools/ChangeLog.CUHTK b/HTKTools/ChangeLog.CUHTK deleted file mode 100644 index d3fcc2d..0000000 --- a/HTKTools/ChangeLog.CUHTK +++ /dev/null @@ -1,42 +0,0 @@ -2003-02-25 Dan Povey - - * HMMIRest.c: Miscellaneous obscure bug fixes which shouldn't - affect normal operation, including a bug fix which affects - mean-only re-estimation. - - * HMMIRest.c: Fix previous fix. - -2003-02-07 Dan Povey - - * HMMIRest.c: Replace PRIORPROPORTION with PRIORK in MMI/MPE-MAP - -2003-02-06 Dan Povey - - * HMMIRest.c: Improved MMI/MPE-MAP - -2003-02-05 Lan Wang - - * HMMIRest.c: Support for new xform code. - -2002-12-13 Dan Povey - - * HMMIRest.c: SUpport for MMI-MAP and MPE-MAP. - -2002-12-10 Dan Povey - - * HMMIRest.c: Various fixes. - -2002-11-16 Dan Povey - - * HMMIRest.c: General clean-up of comments and indentation. - -2002-11-14 Gunnar Evermann - - * HMMIRest.c (Initialise): Pass current HMMSet to HParm for - InputXForm handling. - (main): Init HModel before HParm. - Call InitParm only once. - -2002-11-14 Dan Povey - - * HMMIRest.c : New tool. diff --git a/HTKTools/HBuild.c b/HTKTools/HBuild.c old mode 100644 new mode 100755 index 9a7165a..c0bad1a --- a/HTKTools/HBuild.c +++ b/HTKTools/HBuild.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HBuild.c: Word-Lattice Building */ +/* File: HBuild.c Word-lattice building */ /* ----------------------------------------------------------- */ -char *hbuild_version = "!HVER!HBuild: 3.4.1 [CUED 12/03/09]"; +char *hbuild_version = "!HVER!HBuild: 3.5.0 [CUED 12/10/15]"; char *hbuild_vc_id = "$Id: HBuild.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; /* The HBuild program takes input files in a number of different @@ -45,6 +61,7 @@ char *hbuild_vc_id = "$Id: HBuild.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -375,7 +392,8 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) LArc *la; lmId ndx[NSIZE+1]; - int i,j,k; + int i,k; + unsigned long int j; Lattice *lat; Boolean enterFound=FALSE; Boolean exitFound=FALSE; @@ -415,7 +433,7 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) nLM->wdlist[i]->name); ln = lat->lnodes+j; ln->word = wd; ln->n=0; ln->v=0; - wd->aux = (Ptr) j; + wd->aux = (Ptr)j; if (nLM->wdlist[i] != enterId) { la = lat->larcs+k; la->start = lat->lnodes; @@ -436,7 +454,7 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) ndx[0] = i; ne = GetNEntry(nLM,ndx,FALSE); fromWd = GetWord(voc,nLM->wdlist[i],FALSE); - fromNode = lat->lnodes+((int) fromWd->aux); + fromNode = lat->lnodes+((unsigned long int) fromWd->aux); la->start = fromNode; /* backoff weight */ la->end = lat->lnodes; if (ne==NULL) la->lmlike = 0.0; @@ -447,7 +465,7 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) if ((nLM->wdlist[se->word] == unknownId) && zapUnknown) continue; toWd = GetWord(voc,nLM->wdlist[se->word],FALSE); - toNode = lat->lnodes+((int) toWd->aux); + toNode = lat->lnodes+((unsigned long int) toWd->aux); if (nLM->wdlist[se->word] != enterId) { la->start = fromNode; la->end = toNode; @@ -466,7 +484,8 @@ Lattice *ProcessMatBiGram(MemHeap *latHeap, Vocab *voc, MatBiLM *bg) LNode *ln,*fromNode,*toNode; LArc *la; Word wd,fromWd,toWd; - int i,j; + int i; + unsigned long int j; int skipWord=0; Lattice *lat; Vector row; @@ -502,12 +521,12 @@ Lattice *ProcessMatBiGram(MemHeap *latHeap, Vocab *voc, MatBiLM *bg) for (i=1,j=0; i < bg->numWords; i++) { row = bg->bigMat[i]; fromWd = GetWord(voc,bg->wdlist[i],FALSE); - fromNode = lat->lnodes+((int) fromWd->aux); + fromNode = lat->lnodes+((unsigned long int) fromWd->aux); if (i == skipWord) continue; for (j=2; j <= (i==1?bg->numWords-1:bg->numWords); j++) { if (j == skipWord) continue; toWd = GetWord(voc,bg->wdlist[j],FALSE); - toNode = lat->lnodes+((int) toWd->aux); + toNode = lat->lnodes+((unsigned long int) toWd->aux); la->start = fromNode; la->end = toNode; la->lmlike = row[j]; @@ -750,5 +769,3 @@ Lattice *ProcessWordPair(MemHeap *latHeap, Vocab *voc, char *gramFn) /* ------------------- End of HBuild.c --------------------------------- */ - - diff --git a/HTKTools/HCompV.c b/HTKTools/HCompV.c old mode 100644 new mode 100755 index 2d6ba9e..2ba68cd --- a/HTKTools/HCompV.c +++ b/HTKTools/HCompV.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HCompV.c: HMM global mean/variance initialisation */ +/* File: HCompV.c HMM global mean/variance initialisation */ /* ----------------------------------------------------------- */ -char *hcompv_version = "!HVER!HCompV: 3.4.1 [CUED 12/03/09]"; -char *hcompv_vc_id = "$Id: HCompV.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hcompv_version = "!HVER!HCompV: 3.5.0 [CUED 12/10/15]"; +char *hcompv_vc_id = "$Id: HCompV.c,v 1.2 2012/10/12 12:07:24 cz277 Exp $"; /* @@ -59,6 +62,7 @@ char *hcompv_vc_id = "$Id: HCompV.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" @@ -133,7 +137,8 @@ static char oflags[MAXSTRLEN] = "m"; /* export flags for CMV */ static char cmDir[MAXSTRLEN]; /* directory to export CMV */ static char TargetPKStr[MAXSTRLEN]; /* target parm kind string */ static Boolean DoCMV = FALSE; /* switch from old HCompV to CMV */ - +/* cz277 - mkdir */ +static Boolean enableSetupDir = FALSE; /* ------------- Process Command Line and Check Data ------------ */ @@ -150,6 +155,8 @@ void SetConfParms(void) if (GetConfBool(cParm,nParm,"UPDATEMEANS",&b)) meanUpdate = b; if (GetConfBool(cParm,nParm,"SAVEBINARY",&c)) saveBinary = c; if (GetConfFlt(cParm,nParm,"MINVARFLOOR",&d)) minVar = d; + /* cz277 - mkdir */ + if (GetConfBool(cParm, nParm, "MAKEDIR", &c)) enableSetupDir = c; } } @@ -706,6 +713,11 @@ void ExportNMV(SpkrAccListItem *sal, char *OutDirName, char *tgtPKStr) else MakeFN(p->sa->SpkrName,OutDirName,NULL,oFileName); + /* cz277 - mkdir */ + if (enableSetupDir == TRUE) { + SetupDir(PathOf(oFileName, pathBuffer1)); + } + /* open and write */ oFile = FOpen(oFileName,NoOFilter,&isPipe); if (oFile == NULL){ diff --git a/HTKTools/HCopy.c b/HTKTools/HCopy.c old mode 100644 new mode 100755 index 2604167..4171dd1 --- a/HTKTools/HCopy.c +++ b/HTKTools/HCopy.c @@ -3,24 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HCopy.c: Copy one Speech File to another */ +/* File: HCopy.c Copy one speech file to another */ /* ----------------------------------------------------------- */ -char *hcopy_version = "!HVER!HCopy: 3.4.1 [CUED 12/03/09]"; -char *hcopy_vc_id = "$Id: HCopy.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hcopy_version = "!HVER!HCopy: 3.5.0 [CUED 12/10/15]"; +char *hcopy_vc_id = "$Id: HCopy.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -31,6 +47,7 @@ char *hcopy_vc_id = "$Id: HCopy.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" /* -------------------------- Trace Flags & Vars ------------------------ */ @@ -256,6 +273,11 @@ int main(int argc, char *argv[]) HError(1019,"HCopy: MLF file name expected"); LoadMasterFile(GetStrArg()); labF = TRUE; break; + case 'J': + if (NextArg() != STRINGARG) + HError(1019, "HCopy: transform search directory expected"); + AddInXFormDir(NULL, GetStrArg()); + break; case 'L': if (NextArg()!=STRINGARG) HError(1019,"HCopy: Label file directory expected"); @@ -547,7 +569,9 @@ Boolean IsWave(char *srcFile) { FILE *f; long nSamp,sampP, hdrS; - short sampS,kind; + /*short sampS,kind;*/ + short kind; + unsigned short sampS; /* cz277 - cbu */ Boolean isPipe,bSwap,isWave; isWave = tgtPK == WAVEFORM; diff --git a/HTKTools/HDMan.c b/HTKTools/HDMan.c old mode 100644 new mode 100755 index c136e94..7f38351 --- a/HTKTools/HDMan.c +++ b/HTKTools/HDMan.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HDMan: pronunciation dictionary manager */ +/* File: HDMan pronunciation dictionary manager */ /* ----------------------------------------------------------- */ -char *hdman_version = "!HVER!HDMan: 3.4.1 [CUED 12/03/09]"; +char *hdman_version = "!HVER!HDMan: 3.5.0 [CUED 12/10/15]"; char *hdman_vc_id = "$Id: HDMan.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HShell.h" @@ -60,10 +63,10 @@ static int nParm = 0; /* total num params */ #define MAXARGS 100 /* max args in any command */ /* MAXPHONES (max phones in any pronunciation) is defined in HDict.h */ -#define MAXPRONS 400 /* max number of pronunciations per word */ +#define MAXPRONS 1000 /* max number of pronunciations per word */ #define MAXDICTS 100 /* max number of source dictionaries */ #define MAXCONS 20 /* max number of contexts per script */ -#define MAXPVOC 500 /* max num distinct phones */ +#define MAXPVOC 2000 /* max num distinct phones */ /* ---------------------- Global Data Structures ------------------------------ */ @@ -397,49 +400,50 @@ void LoadPhoneList(void) /* aux = -2, if undef and printed, aux = -3 if defd and printed */ void PutPhone(LabId id) { - char buf[80]; + char buf[MAXSTRLEN]; LabId baseId; - if (((int)id->aux == 0 || (int)id->aux == -1) && newPhones != NULL) { + if (((long int)id->aux == 0 || (long int)id->aux == -1) && newPhones != NULL) { fprintf(newPhones,"%s\n",ReWriteString(id->name,NULL,ESCAPE_CHAR)); /* avoid printing it again */ - id->aux = (Ptr)((int)id->aux - 2); + id->aux = (Ptr)((long int)id->aux - 2); } strcpy(buf,id->name); TriStrip(buf); baseId=GetLabId(buf,TRUE); - if ((int)baseId->aux <= 0 ) { /* not seen this label before */ - if ((int)baseId->aux == 0 || (int)baseId->aux == -2){ + if ((long int)baseId->aux <= 0 ) { /* not seen this label before */ + if ((long int)baseId->aux == 0 || (long int)baseId->aux == -2){ if (nNewPhones == MAXPVOC) HError(1430,"PutPhone: MAXPVOC exceeded"); newList[nNewPhones++] = baseId; } - baseId->aux = (Ptr)0; + baseId->aux = (Ptr)0; } - baseId->aux = (Ptr)((int)baseId->aux + 1); + baseId->aux = (Ptr)((long int)baseId->aux + 1); } /* ListNewPhones: list new phones to log file along with counts */ void ListNewPhones(void) { - int i,c; + int i; + long c; if (nDefPhones>0){ fprintf(logF,"Def Phone Usage Counts\n"); fprintf(logF,"---------------------\n"); for (i=0; iaux; + c = (long int)defList[i]->aux; if (c<0) c=0; - fprintf(logF," %2d. %-5s : %5d\n",i+1,defList[i]->name,c); + fprintf(logF," %2d. %-5s : %5ld\n",i+1,defList[i]->name,c); } } if (nNewPhones>0){ fprintf(logF,"New Phone Usage Counts\n"); fprintf(logF,"---------------------\n"); for (i=0; iaux; + c = (long int)newList[i]->aux; if (c<0) c=0; - fprintf(logF," %2d. %-5s : %5d\n",i+1, newList[i]->name,c); + fprintf(logF," %2d. %-5s : %5ld\n",i+1, newList[i]->name,c); } } } @@ -1003,7 +1007,7 @@ Boolean ReadDictProns(DBuffer *db) if (db->nextWord == NULL) return FALSE; if (db->wbuf.word != NULL && strcmp(db->wbuf.word->name,db->nextWord->name) > 0 ) - HError(1452,"ReadDictProns: word %s out of order in dict %s", + HError(-1,"ReadDictProns: word %s out of order in dict %s", db->nextWord->name,db->name); db->wbuf.word = thisWord = db->nextWord; db->wbuf.outsym = db->nextOutSym; @@ -1629,16 +1633,16 @@ void SetActiveCount(void) /* HighestInput: return alphabetically highest next word */ LabId HighestInput(void) { - int i, hi; + int i; LabId best,next; i = 0; while ((next=inbuf[i].nextWord) == NULL) i++; - hi = i++; best = next; + i++; best = next; while (iname,best->name) < 0){ - best = next; hi = i; + best = next; } i++; } diff --git a/HTKTools/HERest.c b/HTKTools/HERest.c old mode 100644 new mode 100755 index 5d7fd63..d9c9089 --- a/HTKTools/HERest.c +++ b/HTKTools/HERest.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HERest.c: Embedded B-W ReEstimation */ +/* File: HERest.c Embedded B-W re-estimation */ /* ----------------------------------------------------------- */ -char *herest_version = "!HVER!HERest: 3.4.1 [CUED 12/03/09]"; +char *herest_version = "!HVER!HERest: 3.5.0 [CUED 12/10/15]"; char *herest_vc_id = "$Id: HERest.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; /* @@ -64,6 +67,7 @@ char *herest_vc_id = "$Id: HERest.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -100,7 +104,6 @@ static Boolean stats = FALSE; /* enable statistics reports */ static char * mmfFn = NULL; /* output MMF file, if any */ static int trace = 0; /* Trace level */ static Boolean saveBinary = FALSE; /* save output in binary */ -static Boolean ldBinary = TRUE; /* load/dump in binary */ static FileFormat dff=UNDEFF; /* data file format */ static FileFormat lff=UNDEFF; /* label file format */ static int updateMode = UPMODE_UPDATE; /* dump summed accs, update models or do both? */ @@ -158,7 +161,6 @@ void SetConfParms(void) if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; if (GetConfFlt(cParm,nParm,"VARFLOORPERCENTILE",&f)) varFloorPercent = f; if (GetConfBool(cParm,nParm,"SAVEBINARY",&b)) saveBinary = b; - if (GetConfBool(cParm,nParm,"BINARYACCFORMAT",&b)) ldBinary = b; /* 2-model reestimation alignment model set */ if (GetConfStr(cParm,nParm,"ALIGNMODELMMF",buf)) { strcpy(al_hmmMMF,buf); al_hmmUsed = TRUE; @@ -179,6 +181,9 @@ void SetConfParms(void) if (GetConfStr(cParm,nParm,"ALIGNXFORMDIR",buf)) { xfInfo.alXFormDir = CopyString(&hmmStack,buf); } + if (GetConfStr(cParm,nParm,"OUTXFORMMASK",buf)) { + xfInfo.outSpkrPat = CopyString(&hmmStack,buf); + } if (GetConfStr(cParm,nParm,"INXFORMMASK",buf)) { xfInfo.inSpkrPat = CopyString(&hmmStack,buf); } @@ -297,7 +302,6 @@ int main(int argc, char *argv[]) char *datafn=NULL; char *datafn2=NULL; char *s; - char *scriptFile; char datafn1[MAXSTRLEN]; char newFn[MAXSTRLEN]; FILE *f; @@ -308,6 +312,7 @@ int main(int argc, char *argv[]) float tmpFlt; int tmpInt; int numUtt,spUtt=0; + Boolean ldBinary=TRUE; void Initialise(FBInfo *fbInfo, MemHeap *x, HMMSet *hset, char *hmmListFn); void DoForwardBackward(FBInfo *fbInfo, UttInfo *utt, char *datafn, char *datafn2); @@ -322,9 +327,14 @@ int main(int argc, char *argv[]) InitLabel(); InitModel(); if(InitParm()numPhyHMM; L = hset->numLogHMM; vSize = hset->vecSize; - S = hset->swidth[0]; maxM = MaxMixInSet(hset); hsKind = hset->hsKind; @@ -739,7 +750,7 @@ void StatReport(HMMSet *hset) px=1; do { hmm = hss.hmm; - PrintStats(hset,f,px,hmm,(int)hmm->hook); + PrintStats(hset,f,px,hmm,(int)(unsigned long int)hmm->hook); px++; } while (GoNextHMM(&hss)); EndHMMScan(&hss); @@ -764,6 +775,7 @@ void DoForwardBackward(FBInfo *fbInfo, UttInfo *utt, char * datafn, char * dataf } else strcpy (datafn_lab, datafn); + LoadLabs(utt, lff, datafn_lab, labDir, labExt); /* Load the data */ LoadData(fbInfo->al_hset, utt, dff, datafn, datafn2); @@ -1108,8 +1120,6 @@ void UpdateVars(HMMSet *hset, int px, HLink hmm) } } else{ - MixtureElem *me2; - me2 = ste->spdf.cpdf + 1; M = ste->nMix; HError(-2330,"UpdateVars: Model %d[%s]: no use of variance %d.%d.%d", px,HMMPhysName(hset,hmm),i,s,m); } @@ -1282,7 +1292,7 @@ void MLUpdateModels(HMMSet *hset, UPDSet uFlags) px=1; do { hmm = hss.hmm; - n = (int)hmm->hook; + n = (int)(unsigned long int)hmm->hook; if (n... - Set each value of the ANN matrix macro to the input ones\n"); printf("SS n - Split into n data Streams\n"); printf("ST filename - Save Questions and Trees to filename\n"); printf("SU n w1 .. wn - Split into user defined stream widths\n"); + printf("SV macro ... - Set each value of the ANN vector macro to the input ones\n"); printf("SW s n - Set width of stream s to n\n"); printf("TB f macro itemlist - Tree build using QS questions and likelihood\n"); printf(" based clustering criterion.\n"); @@ -218,6 +248,7 @@ void ReportUsage(void) printf("\nUSAGE: HHEd [options] editF hmmList\n\n"); printf(" Option Default\n\n"); printf(" -d s dir to find hmm definitions current\n"); + printf(" -n mmf Save all ANNs macro file mmf s as source\n"); printf(" -o s extension for new hmm files as source\n"); printf(" -w mmf Save all HMMs to macro file mmf s as source\n"); printf(" -x s extension for hmm files none\n"); @@ -259,6 +290,11 @@ int main(int argc, char *argv[]) if (NextArg()!=STRINGARG) HError(2619,"HHEd: Input HMM definition directory expected"); hmmDir = GetStrArg(); break; + case 'n': + if (NextArg() != STRINGARG) + HError(2619, "HHEd: Output ANN def file name expected"); + nmfFn = GetStrArg(); + break; case 'o': if (NextArg()!=STRINGARG) HError(2619,"HHEd: Output HMM file extension expected"); @@ -308,7 +344,7 @@ int main(int argc, char *argv[]) Initialise(GetStrArg()); - if (hset->logWt == TRUE) HError(999,"HHEd requires linear weights"); + if (hset->logWt == TRUE) HError(2690,"HHEd requires linear weights"); DoEdit(editFn); Exit(0); return (0); /* never reached -- make compiler happy */ @@ -473,7 +509,7 @@ typedef enum { baseNorm=0, baseLeft, baseRight, baseMono } baseType; baseMono (monophone); baseRight (right biphone); baseLeft (left biphone) */ HLink FindBaseModel(HMMSet *hset,LabId id,baseType type) { - char baseName[255],buf[255],*p; + char baseName[255],buf[255],*p,*p2; LabId baseId; MLink ml; @@ -490,8 +526,39 @@ HLink FindBaseModel(HMMSet *hset,LabId id,baseType type) strcpy(baseName,buf); } } - if ((baseId = GetLabId(baseName,FALSE))==NULL) - HError(2635,"FindBaseModel: No Base Model %s for %s",baseName,id->name); + if ((baseId = GetLabId(baseName,FALSE))==NULL) { + /* problem could be due to mappings ... try no context/no tone */ + strcpy(buf,baseName); + if ((p = strrchr(buf,'^')) != NULL) { + *p = '\0'; + baseId = GetLabId(buf,FALSE); + if (baseId == NULL) { + strcpy(buf,baseName); + if ((p2 = strrchr(buf,';')) != NULL) { + /* either tone by itself or position by itself */ + /* try position first */ + *p2 = '\0'; + baseId = GetLabId(buf,FALSE); + if (baseId== NULL) { + /* then try tone */ + strcpy(buf,baseName); + while (*p2 != '\0') { + *p = *p2; + p++; p2++; + } + *p = '\0'; + baseId = GetLabId(buf,FALSE); + } + } + } + } else if ((p = strrchr(buf,';')) != NULL) { + *p = '\0'; + baseId = GetLabId(buf,FALSE); + } + if (baseId == NULL) + HError(2635,"FindBaseModel: No Base Model %s for %s",baseName,id->name); + strcpy(baseName,buf); + } ml = FindMacroName(hset,'l',baseId); if (ml==NULL) HError(2635,"FindBaseModel: Cannot Find HMM %s in Current List",baseName); @@ -717,6 +784,7 @@ void PurgeMacros(HMMSet *hset) SetMacroUse(q,n); } } + /* Delete unused macros in next pass */ for (h=0; hmtab[h]; q!=NULL; q=q->next) { @@ -727,6 +795,7 @@ void PurgeMacros(HMMSet *hset) DeleteMacro(hset,q); } } + /* Finally unmark all macros */ for (h=0; hmtab[h]; q!=NULL; q=q->next) { @@ -737,6 +806,7 @@ void PurgeMacros(HMMSet *hset) SetMacroUse(q,n); } } + } /* -------------------- Vector/Matrix Resizing Operations -------------------- */ @@ -897,7 +967,7 @@ TriMat ChopTriMat(TriMat mat, int i, int j, int k) /* SplitStreams: split streams of given HMM as per swidth info */ void SplitStreams(HMMSet *hset,StateInfo *si,Boolean simple,Boolean first) { - int j,s,S,m,M,width,V,next; + int j,s,S,m,M,width,next; StreamElem *ste,*oldste; MixtureElem *me,*oldme; MixPDF *mp, *oldmp; @@ -905,7 +975,7 @@ void SplitStreams(HMMSet *hset,StateInfo *si,Boolean simple,Boolean first) int epos[4]; int eposIdx; - S = hset->swidth[0]; V = hset->vecSize; + S = hset->swidth[0]; hasN = HasNulle(hset->pkind); oldste = si->pdf+1; ste = (StreamElem *)New(hset->hmem,S*sizeof(StreamElem)); @@ -1322,11 +1392,11 @@ void SplitMix(MixtureElem *mi,MixtureElem *m01,MixtureElem *m02,int vSize) float x; TriMat mat=NULL; - splitcount = (int) mi->mpdf->hook + 1; + splitcount = (int) (long int)mi->mpdf->hook + 1; m01->mpdf = CloneMixPDF(hset,mi->mpdf,FALSE); m02->mpdf = CloneMixPDF(hset,mi->mpdf,FALSE); m01->weight = m02->weight = mi->weight/2.0; - m01->mpdf->hook = m02->mpdf->hook = (void *)splitcount; + m01->mpdf->hook = m02->mpdf->hook = (void *)(long int)splitcount; if (mi->mpdf->ckind==FULLC || mi->mpdf->ckind==LLTC) { mat = CreateTriMat(&tmpHeap,vSize); CovInvert(mi->mpdf->cov.inv,mat); @@ -1574,12 +1644,12 @@ void UntieMix(ILink ilist) ILink i; MixtureElem *me; MixPDF *mp; - int nu,vSize; + int nu; for (i=ilist; i!=NULL; i=i->next) { me = (MixtureElem *)i->item; if (me->weight > MINMIX) { - mp = me->mpdf; vSize = VectorSize(mp->mean); + mp = me->mpdf; nu = mp->nUse; mp->nUse = 0; if (nu==1) @@ -2013,7 +2083,7 @@ void Clustering(ILink ilist, int *numReq, float threshold, CLink p; ILink l; float ming,min; - int i,j,k,n,numItems; + int i,j,k,numItems; char buf[40]; if (badGC) { @@ -2039,7 +2109,6 @@ void Clustering(ILink ilist, int *numReq, float threshold, SetGDist(cvec,idist,gdist,numClust); /* recompute gdist */ ming = MinGDist(gdist,&i,&j,numClust); } - n = numClust; if (occStatsLoaded) { if (trace & T_IND) { printf(" Via %d items before removing outliers\n",numClust); @@ -2117,16 +2186,16 @@ int HeaviestMix(char *hname, MixtureElem *me, int M) gThresh = meanGC - 4.0*stdGC; maxm = 1; mp = me[1].mpdf; - max = me[1].weight - (int)mp->hook; - if ((int)mp->hook < 5000 && mp->gConst < gThresh) { + max = me[1].weight - (long int)mp->hook; + if ((long int)mp->hook < 5000 && mp->gConst < gThresh) { max -= 5000.0; mp->hook = (void *)5000; HError(-2637,"HeaviestMix: mix 1 in %s has v.small gConst [%f]", hname,mp->gConst); } for (m=2; m<=M; m++) { mp = me[m].mpdf; - w = me[m].weight - (int)mp->hook; - if ((int)mp->hook < 5000 && mp->gConst < gThresh) { + w = me[m].weight - (long int)mp->hook; + if ((long int)mp->hook < 5000 && mp->gConst < gThresh) { w -= 5000.0; mp->hook = (void *)5000; HError(-2637,"HeaviestMix: mix %d in %s has v.small gConst [%f]", m,hname,mp->gConst); @@ -2138,8 +2207,8 @@ int HeaviestMix(char *hname, MixtureElem *me, int M) if (me[maxm].weight<=MINMIX) HError(2697,"HeaviestMix: heaviest mix is defunct!"); if (trace & T_DET) { - printf(" : Split %d (weight=%.3f, count=%d, score=%.3f)\n", - maxm, me[maxm].weight, (int)me[maxm].mpdf->hook, max); + printf(" : Split %d (weight=%.3f, count=%ld, score=%.3f)\n", + maxm, me[maxm].weight, (long int)me[maxm].mpdf->hook, max); fflush(stdout); } return maxm; @@ -2464,12 +2533,12 @@ Tree *CreateTree(ILink ilist,LabId baseId,int state) hmm = ilist->owner; n=hmm->numStates; for (i=ilist; i!=NULL; i=i->next) { - hmm = i->owner; strcpy(buf,HMMPhysName(hset,hmm)); TriStrip(buf); + hmm = i->owner; strcpy(buf,HMMPhysName(hset,hmm)); FTriStrip(buf); MapTreeName(buf); id = GetLabId(buf,FALSE); if (tree->baseId != id) - HError(-2663,"CreateTree: different base phone %s in item list", - buf); + HError(-2663,"CreateTree: different base phone %s in item list for %s", + buf,tree->baseId->name); if (state>0) { if (hmm->svec+state != (StateElem *)i->item) HError(2663,"CreateTree: attempt to cluster different states"); @@ -2960,8 +3029,8 @@ void TieLeafNodes(Tree *tree, char *macRoot) macRoot is the root prefix of the name to use in the tie */ void BuildTree(ILink ilist,float threshold, char *macRoot) { - int i,j,l,N,snum,state,numItems; - char buf[256]; + int i,j,l,snum,state,numItems; + char buf[MAXSTRLEN]; HMMDef *hmm; CLink clHead,cl; ILink p; @@ -2980,14 +3049,13 @@ void BuildTree(ILink ilist,float threshold, char *macRoot) /* Check object consistency */ hmm = ilist->owner; /* any HMM will do */ - N = hmm->numStates; for(p=ilist;p!=NULL;p=p->next) ChkTreeObject(p); /* Create a new tree in tree list */ /* Find base name and state if any */ hmm = ilist->owner; - strcpy(buf,HMMPhysName(hset,hmm)); TriStrip(buf); + strcpy(buf,HMMPhysName(hset,hmm)); FTriStrip(buf); MapTreeName(buf); labid = GetLabId(buf,TRUE); @@ -3123,17 +3191,24 @@ Ptr AssignStructure(LabId id, int state) MLink m; /* First find Tree to use */ - strcpy(buf,id->name); TriStrip(buf); - MapTreeName(buf); + strcpy(buf,id->name); FTriStrip(buf); + MapTreeName(buf); tid = GetLabId(buf,FALSE); for (tree=treeList;tree!=NULL;tree=tree->next) { if (tree->baseId == tid && tree->state == state) break; } if (tree==NULL && state<0) return(NULL); - if (tree==NULL) - HError(2662,"AssignStructure: cannot find tree for %s state %d", - id->name,state); - + if (tree==NULL) { + if (useModelName) { + HError(2662,"AssignStructure: cannot find tree for %s state %d", + id->name,state); + } else { + /* not using model name - must be a global tree - match state */ + for (tree=treeList;tree!=NULL;tree=tree->next) { + if (tree->state == state) break; + } + } + } /* Then move down tree until state is found */ node = tree->root; if (trace & T_DET) { @@ -3164,15 +3239,25 @@ HLink FindProtoModel(LabId model) MLink q; strcpy(phone,model->name); - TriStrip(phone); + FTriStrip(phone); for (h=0; hmtab[h]; q!=NULL; q=q->next) if (q->type=='h') { strcpy(buf,q->id->name); - TriStrip(buf); + FTriStrip(buf); if (strcmp(phone,buf)==0) return ((HLink) q->structure); } - HError(2662,"FindProtoModel: no proto for %s in hSet",model->name); + if (useModelName) { + HError(2662,"FindProtoModel: no proto for %s in hSet",model->name); + } else { + for (h=0; hmtab[h]; q!=NULL; q=q->next) + if (q->type=='h') { + printf("%s\n",q->id->name); + fflush(stdout); + return ((HLink) q->structure); + } + } return NULL; } @@ -3433,7 +3518,7 @@ Tree *LoadTree(char *name,Source *src) void LoadTreesCommand(void) { Source src; - char qname[256],buf[1024],info[256]; + char qname[256],buf[4096],info[256]; char fn[256]; ChkedAlpha("LT trees files name",fn); /* get name of trees file */ @@ -3546,6 +3631,118 @@ void CloneCommand(void) SwapLists(hset,tmpSet); } +/* -------------------- CM - Concatenate Command ---------------------- */ + +/* ConcatenateCommand: Concatenate hmms to synthesize a new hmm */ +void ConcatenateCommand(void) +{ + int i = 0, j = 0, k = 0, n = 0, ns = 0, d = 0; + char buf[255], baset[255]; + char **buf2 = NULL; + LabId Id = NULL, tId = NULL; + StateElem *t = NULL; + MLink macroName = NULL; + HLink *src = NULL, tgt = NULL; + + ChkedAlpha("target HMM name", buf); + n = ChkedInt("number of HMMs to concantenate", 1, 16); + buf2 = (char **)New(&gstack, (n+1) * sizeof(char *)); + /* list of source HMMs */ + src = (HLink *)New(&gstack, (n+1) * sizeof(HLink)); + for (i=1; i<=n; i++) { + buf2[i] = (char *)New(&gstack, 256 * sizeof(char)); + ChkedAlpha("source HMM name", buf2[i]); + Id = GetLabId(buf2[i], FALSE); + macroName = FindMacroName(hset, 'l', Id); + if(macroName == NULL) { + HError(2674,"ConcatenateCommand: Unknown label %s", Id->name); + } + src[i] = (HLink) macroName->structure; + ns += src[i]->numStates; + } + /* total number states of new HMM */ + ns = ns - n*2 + 2; + + if (trace & T_BID) { + fprintf(stdout, "\nCM synthesizing %d state HMM %s using %d HMMs: ", ns, buf, n); + for (i=1; i<=n; i++) { + fprintf(stdout, "%s ", buf2[i]); + } + fprintf(stdout, "\n"); + fflush(stdout); + } + + Id = GetLabId(buf, TRUE); + strcpy(baset, Id->name); + TriStrip(baset); + strcat(baset, "_t"); + tgt = (HLink) New(hset->hmem, sizeof(HMMDef)); + tgt->owner = hset; + + tgt->numStates = ns; + tgt->dur = src[1]->dur; + t = (StateElem *)New(hset->hmem, (tgt->numStates - 2) * sizeof(StateElem)); + tgt->svec = t-2; + /* state vector of new HMM */ + for (i=1; i<=n; i++) { + for (j=2; jnumStates; j++) { + t->info = src[i]->svec[j].info; + t++; + } + } + + /* block diagnoanal structure transition matrix of new HMM */ + tId = GetLabId(baset, FALSE); + if (tId == NULL) { + tId = GetLabId(baset, TRUE); + } + macroName = FindMacroName(hset, 't', tId); + /* create new transition matrix if necessary */ + if (macroName == NULL) { + tgt->transP = CreateSMatrix(hset->hmem, ns, ns); + for (i=1; i<=ns; i++) { + for (j=1; j<=ns; j++) { + tgt->transP[i][j] = LZERO; + } + } + d = 0; + for (i=1; i<=n; i++) { + if (i == 1) { + for (j=1; j<=src[i]->numStates; j++) { + for (k=1; k<=src[i]->numStates; k++) { + tgt->transP[j][k] = src[i]->transP[j][k]; + } + } + d += (src[i]->numStates-1); + } + else { + for (j=2; j<=src[i]->numStates; j++) { + for (k=2; k<=src[i]->numStates; k++) { + tgt->transP[j-1+d][k-1+d] = src[i]->transP[j][k]; + } + } + d += (src[i]->numStates-2); + } + } + NewMacro(hset, fidx, 't', tId, tgt->transP); + } + /* use found ones */ + else { + tgt->transP = (SMatrix) macroName->structure; + } + IncUse(tgt->transP); + + tgt->hook = NULL; tgt->nUse = 1; + NewMacro(hset, fidx, 'h', Id, tgt); + + if (trace & T_BID) { + ShowMacros(tgt); + } + + Dispose(&gstack, buf2); +} + + /* -------------------- DP - Duplicate Command ---------------------- */ SVector DupSVector(SVector v) @@ -3597,7 +3794,6 @@ STriMat DupSTriMat(STriMat m) MixPDF *DupMixPDF(MixPDF *s, Boolean frc) { MixPDF *t; /* the target */ - int vSize; if (s->nUse>0 && !frc) { /* shared struct so just return ptr to it */ if ((t=(MixPDF *) s->hook)==NULL) @@ -3605,7 +3801,6 @@ MixPDF *DupMixPDF(MixPDF *s, Boolean frc) ++t->nUse; return t; } - vSize = VectorSize(s->mean); t = (MixPDF*) New(&hmmHeap,sizeof(MixPDF)); t->nUse = 0; t->hook = NULL; t->ckind=s->ckind; t->gConst = s->gConst; @@ -4391,16 +4586,16 @@ void CompactCommand(void) if (q->type=='l') { hmm=(HLink) q->structure; if (hmm->hook!=NULL && hmm->hook!=hmm) { - NewMacro(hset,fidx,'L',q->id,hmm->hook); + NewMacro(hset,fidx,'1',q->id,hmm->hook); /* cz277 - ANN */ DeleteMacro(hset,q); } } for (h=0; hmtab[h]; q!=NULL; q=q->next) - if (q->type=='L') { + if (q->type=='1') { /* cz277 - ANN */ hset->numLogHMM++;hset->numMacros--; - q->type='l'; + q->type='l'; /* cz277 - ANN */ } ResetHooks(hset,"h"); @@ -4592,44 +4787,48 @@ void SetStreamWidthCommand(void) fflush(stdout); } if (hset->swidth[s]==n) return; - NewHMMScan(hset,&hss); - if (!(hss.isCont || (hss.hset->hsKind == TIEDHS))) { - HError(2640,"SetStreamWidthCommand: Can only resize continuous and tied systems"); - } - while(GoNextMix(&hss,FALSE)) { - if (hss.s!=s) continue; - mp = hss.me->mpdf; - mp->mean=ResizeSVector(hset,mp->mean,n,'u',0.0); - switch(mp->ckind) { - case DIAGC: - mp->cov.var=ResizeSVector(hset,mp->cov.var,n,'v',1.0); - break; - case FULLC: - mp->cov.inv=ResizeSTriMat(hset,mp->cov.inv,n,'i',1.0); - break; - default: - HError(2640,"SetStreamWidthCommand: Can only resize DIAGC or FULLC"); - } - if (trace & (T_SIZ | T_DET)) { - if (nedit==0) printf(" For model.state["),hmm=NULL; - if (hmm!=hss.hmm) - printf("]\n %12s.state",hss.mac->id->name),c='[',hmm=hss.hmm; - printf("%c%d",c,hss.i);c=','; - fflush(stdout); - } - nedit++; - } - if (trace & (T_SIZ | T_DET)) - printf("]\n"),fflush(stdout); - EndHMMScan(&hss); - /* Now varFloor */ - SetVFloor(hset,vf,0.0); - if (FindMacroStruct(hset,'v',vf[s])!=NULL) { - if (trace & T_BID) - printf(" Resizing varFloor\n"); - ResizeSVector(hset,vf[s],n,'v',0.0); + + /* cz277 - ANN */ + if (hset->hsKind != HYBRIDHS) { + NewHMMScan(hset,&hss); + if (!(hss.isCont || (hss.hset->hsKind == TIEDHS))) { + HError(2640,"SetStreamWidthCommand: Can only resize continuous and tied systems"); + } + while(GoNextMix(&hss,FALSE)) { + if (hss.s!=s) continue; + mp = hss.me->mpdf; + mp->mean=ResizeSVector(hset,mp->mean,n,'u',0.0); + switch(mp->ckind) { + case DIAGC: + mp->cov.var=ResizeSVector(hset,mp->cov.var,n,'v',1.0); + break; + case FULLC: + mp->cov.inv=ResizeSTriMat(hset,mp->cov.inv,n,'i',1.0); + break; + default: + HError(2640,"SetStreamWidthCommand: Can only resize DIAGC or FULLC"); + } + if (trace & (T_SIZ | T_DET)) { + if (nedit==0) printf(" For model.state["),hmm=NULL; + if (hmm!=hss.hmm) + printf("]\n %12s.state",hss.mac->id->name),c='[',hmm=hss.hmm; + printf("%c%d",c,hss.i);c=','; + fflush(stdout); + } + nedit++; + } + if (trace & (T_SIZ | T_DET)) + printf("]\n"),fflush(stdout); + EndHMMScan(&hss); + /* Now varFloor */ + SetVFloor(hset,vf,0.0); + if (FindMacroStruct(hset,'v',vf[s])!=NULL) { + if (trace & T_BID) + printf(" Resizing varFloor\n"); + ResizeSVector(hset,vf[s],n,'v',0.0); + } + badGC = TRUE; } - badGC = TRUE; hset->swidth[s]=n; size=0; @@ -5266,7 +5465,7 @@ void FloorVectorCommand(void) buf[strlen(mac)]='\0'; if (strcmp(mac,buf)!=0) /* not a varFloor */ continue; - assert(SMAX<10); s=h-'0'; + /*assert(SMAX<10);*/ s=h-'0'; if(s<1||s>S) HError(2613,"FloorVectorCommand: undefined stream %d in HMM set",s); mac[strlen(buf)]=h; @@ -5551,19 +5750,1519 @@ void ProjectCommand(void) xform = hset->semiTied; if ((xform == NULL) || (hset->projSize == 0)) - HError(999,"Can not only project with semitied XForm and PROJSIZE>0"); + HError(2691,"Can not only project with semitied XForm and PROJSIZE>0"); /* check that this is a reasonable command to run */ if (xform->bclass->numClasses != 1) - HError(999,"Can only store as input XForm with global transform"); + HError(2691,"Can only store as input XForm with global transform"); if (hset->swidth[0] != 1) - HError(999,"Can only store as input XForm with single stream"); + HError(2691,"Can only store as input XForm with single stream"); if (hset->xf != NULL) - HError(999,"Can not store as input XForm if HMMSet already has an input XForm"); + HError(2691,"Can not store as input XForm if HMMSet already has an input XForm"); UpdateProjectModels(hset,newDir); } +/* ----------------------- IL/PL/EL - Add/Pop/Erase an ANN Layer --------------------- */ + + +static NVecBundle *AddOneNVecBundle(char *invoker, char *kwd, HMMSet *curset, Boolean existmacro) { + LabId id; + MLink m; + char buf[MAXSTRLEN]; + int intVal; + NVecBundle *bundle; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~V") == 0) { + ChkedAlpha("NVecBundle macro name expected", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'V', id)) != NULL) { + if (existmacro == TRUE) + return (NVecBundle *) m->structure; + else + HError(2676, "%s: Macro named ~V \"%s\" already exists", invoker, id->name); + } + if (id == NULL) + id = GetLabId(buf, TRUE); + ChkedAlpha(" key word", buf); + } + else { /* anonymous macro */ + id = GetNextANNMacroName(invoker, curset, 'V'); + if (trace & T_BAS) + HError(-2675, "%s: Anonymous NVecBundle macro created, auto-name %s assigned", invoker, id->name); + } + /* read the rest things as usual */ + if (strcmp("", buf) != 0) + HError(2650, "%s: keyword expected, but %s was read in", invoker, buf); + intVal = ChkedInt("Vector size expected", 1, INT_MAX); + bundle = FetchNVecBundle(curset, id->name); + bundle->kind = SIBK; + bundle->variables = CreateNVector(curset->hmem, intVal); + ClearNVector(bundle->variables); + /* register the new macro */ + NewMacro(curset, fidx, 'V', id, bundle); + /* saves the model */ + saveHMMSet = TRUE; + + return bundle; +} + +void SetOneNVecBundle(HMMSet *hset) { + NVecBundle *bundle; + int intVal, i, j; + float floatVal=FLOAT_MAX; + char buf[MAXSTRLEN]; + + bundle = AddOneNVecBundle("SetOneNVecBundle", NULL, hset, TRUE); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) { + intVal = ChkedInt("Number of values", 1, bundle->variables->vecLen); + for (i = 0, j = 0; i < bundle->variables->vecLen; ++i) { + if (j < intVal) + floatVal = ChkedFloat("initial value", -FLOAT_MAX, FLOAT_MAX); + bundle->variables->vecElems[i] = floatVal; +#ifdef CUDA + SyncNVectorHost2Dev(bundle->variables); +#endif + } + } + /* saves the model */ + saveHMMSet = TRUE; +} + +static void ChangeDimOneNVecBundle(char *invoker, NVecBundle *bundle, int nlen) { + NVector *vector; + + if (nlen != bundle->variables->vecLen) { + if (bundle->nUse > 1) + HError(2640, "%s: Changing dimension of shared NVecBundle is not allowed by v3.5"); + vector = bundle->variables; + bundle->variables = CreateNVector(hset->hmem, nlen); + ClearNVector(bundle->variables); + CopyPartialNVector2NVector(vector, bundle->variables); + /*if (trace & T_INT) + InformByNVecBundleTrace(invoker, hset, bundle);*/ + /* saves the model */ + saveHMMSet = TRUE; + } +} + +/*void ChangeDimOneMacroNVecBundle(HMMSet *hset) { + MLink m; + NVecBundle *bundle; + int nlen; + + nlen = ChkedInt("New vector length", 1, INT_MAX); + bundle = AddOneNVecBundle("ChangeDimOneNVecBundle", NULL, hset, TRUE); + ChangeDimOneNVecBundle("ChangeDimOneMacroNVecBundle", bundle, nlen); +}*/ + +/*static void InformByNMatBundleTrace(char *invoker, HMMSet *hset, NMatBundle *bundle) { + MLink m; + BTLink trace; + LELink layerElem; + + trace = (BTLink) bundle->hook; + while (trace != NULL) { + m = FindMacroStruct(hset, 'L', trace->layerElem); + if (m == NULL) + HError(9999, "%s: Fail to find the macro associated linked to the bundle"); + layerElem = (LELink) layerElem->structure; + if (layerElem->nodeNum != bundle->variables->rowNum || layerElem->inputDim != bundle->variables->colNum) + printf("%s: ~L \"%s\" probably need to be modified as well\n", m->id->name); + trace = trace->nextTrace; + } +}*/ + +static NMatBundle *AddOneNMatBundle(char *invoker, char *kwd, HMMSet *curset, Boolean existmacro) { + LabId id; + MLink m = NULL; + char buf[MAXSTRLEN]; + int intVal[2]; + NMatBundle *bundle; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~M") == 0) { + ChkedAlpha("NMatBundle macro name expected", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'M', id)) != NULL) { + if (existmacro == TRUE) + return (NMatBundle *) m->structure; + else + HError(2676, "%s: Macro named ~M \"%s\" already exists", invoker, id->name); + } + if (id == NULL) + id = GetLabId(buf, TRUE); + ChkedAlpha(" key word", buf); + } + else { /* anonymous macro */ + id = GetNextANNMacroName(invoker, curset, 'M'); + if (trace & T_BAS) + HError(-2675, "%s: Anonymous NMatBundle macro created, auto-name %s assigned", invoker, id->name); + } + /* read the rest things as usual */ + if (strcmp("", buf) != 0) + HError(2650, "%s: keyword expected, but %s was read in", invoker, buf); + intVal[0] = ChkedInt("Matrix row number expected", 1, INT_MAX); + intVal[1] = ChkedInt("Matrix column number expected", 1, INT_MAX); + bundle = FetchNMatBundle(curset, id->name); + bundle->kind = SIBK; + bundle->variables = CreateNMatrix(curset->hmem, intVal[0], intVal[1]); + ClearNMatrix(bundle->variables, intVal[0]); + /* register the new macro */ + NewMacro(curset, fidx, 'M', id, bundle); + /* saves the model */ + saveHMMSet = TRUE; + + return bundle; +} + +void SetOneNMatBundle(HMMSet *hset) { + NMatBundle *bundle; + int intVal, i, j, n; + float floatVal=FLOAT_MAX; + char buf[MAXSTRLEN]; + + bundle = AddOneNMatBundle("SetOneNMatBundle", NULL, hset, TRUE); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) { + n = bundle->variables->rowNum * bundle->variables->colNum; + intVal = ChkedInt("Number of values", 1, n); + for (i = 0, j = 0; i < n; ++i) { + if (j < intVal) + floatVal = ChkedFloat("initial value", -FLOAT_MAX, FLOAT_MAX); + bundle->variables->matElems[i] = floatVal; +#ifdef CUDA + SyncNMatrixHost2Dev(bundle->variables); +#endif + } + } + /* saves the model */ + saveHMMSet = TRUE; +} + +static void ChangeDimOneNMatBundle(char *invoker, NMatBundle *bundle, int nrows, int ncols) { + NMatrix *matrix; + + if (nrows != bundle->variables->rowNum || ncols != bundle->variables->colNum) { + if (bundle->nUse > 1) + HError(2640, "%s: Changing dimensions of shared NMatBundle is not allowed by v3.5", invoker); + matrix = bundle->variables; + bundle->variables = CreateNMatrix(hset->hmem, nrows, ncols); + ClearNMatrix(bundle->variables, nrows); + CopyPartialNMatrix2NMatrix(matrix, bundle->variables); + /*if (trace & T_INT) + InformByNMatBundleTrace(invoker, hset, bundle);*/ + /* saves the model */ + saveHMMSet = TRUE; + } +} + +/*void ChangeDimOneNMatBundle(HMMSet *hset) { + MLink m; + NMatBundle *bundle; + int nrows, ncols; + NMatrix matrix; + + nrows = ChkedInt("New matrix row number", 0, INT_MAX); + ncols = ChkedInt("New matrix column number", 0, INT_MAX); + bundle = AddOneNMatBundle("ChangeDimOneNMatBundle", NULL, hset, TRUE); + if (nrows == 0) + nrows = bundle->variables->rowNum; + if (ncols == 0) + ncols = bundle->variables->colNum; + ChangeDimOneNMatBundle("ChangeDimOneNMatBundle", bundle, nrows, ncols); +}*/ + + +/* cz277 - 1007 */ +static ADLink GetANNDefByMacName(char *invoker, char *kwd, HMMSet *curset) { + LabId id; + MLink m; + ADLink annDef=NULL; + char buf[MAXSTRLEN]; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~N") == 0) + ChkedAlpha("Target ANN macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'N', id)) != NULL) + annDef = (ADLink) m->structure; + else + HError(2635, "%s: Cannot find target ANN model", invoker); + + return annDef; +} + +/* owner and pos could be NULL */ +static LELink GetLayerElemByMacName(char *invoker, char *kwd, HMMSet *curset, ADLink *owner, int *pos) { + LELink layerElem=NULL; + int i=-1; + ADLink annDef=NULL; + LabId id; + MLink m; + char buf[MAXSTRLEN]; + + if (kwd == NULL) + ChkedAlpha("Target layer macro type", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~L") == 0) { + ChkedAlpha("ANN layer macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'L', id)) != NULL) + layerElem = (LELink) m->structure; + else + HError(2635, "%s: Cannot find the target ANN layer", invoker); + annDef = layerElem->ownerHead->annDef; /* at the moment, not layer tying */ + for (i = 0; i < annDef->layerNum; ++i) + if (annDef->layerList[i] == layerElem) + break; + } + else + HError(2632, "%s: Unsupported target ANN layer macro type", invoker); + if (owner != NULL){ + if(annDef==NULL) HError(2632,"%s: ANN definition not set",invoker); + *owner = annDef; + } + if (pos != NULL){ + if(i<0) HError(2632,"%s: position not set",invoker); + *pos = i; + } + if(!layerElem) HError(2632,"%s: layer element not set",invoker); + + return layerElem; +} + +/* cz277 - 1007 */ +static FELink ParseNextFeaElem(char *invoker, char *kwd, int *feaIdx, int *feaDim) { + char buf[MAXSTRLEN]; + FELink feaElem; + int i, streamIdx=-1, intVal; + + /* */ + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "") != 0) + HError(2650, "%s: keyword expected", invoker); + feaElem = (FELink) New(hset->hmem, sizeof(FeaElem)); + feaElem->nUse = 0; + feaElem->dimOff = 0; + intVal = ChkedInt("Feature element index", -1, INT_MAX); + if (feaIdx != NULL) + *feaIdx = intVal; + feaElem->feaDim = ChkedInt("Feature element dimension", 1, INT_MAX); + if (feaDim != NULL) + *feaDim = feaElem->feaDim; + /* */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("Feature element source type", buf); + if (strcmp(buf, "") == 0) { + feaElem->inputKind = AUGFEAIK; + feaElem->feaSrc = NULL; + feaElem->augFeaIdx = ChkedInt("Augmented feature source index", 1, MAXAUGFEAS); + streamIdx = 1; + } + else if (strcmp(buf, "~L") == 0) { + feaElem->inputKind = ANNFEAIK; + feaElem->feaSrc = GetLayerElemByMacName(invoker, buf, hset, NULL, NULL); + ++feaElem->feaSrc->nDrv; + } + else if (strcmp(buf, "") == 0) { + feaElem->inputKind = INPFEAIK; + feaElem->feaSrc = NULL; + streamIdx = ChkedInt("Feature stream index", 1, hset->swidth[0]); + } + else { /* PARMKIND */ + if (hset->pkind != Str2ParmKind(buf)) + HError(2632, "%s: Input parmkind different from the input parmKind to the model", invoker); + feaElem->inputKind = INPFEAIK; + feaElem->feaSrc = NULL; + streamIdx = 1; + } + ChkedAlpha("Next keyword", buf); + } + else + HError(2650, "%s: keyword expected", invoker); + if (strcmp(buf, "") == 0) { + feaElem->dimOff = ChkedInt("Start dimension", 1, INT_MAX) - 1; + intVal = ChkedInt("End dimension", 2, INT_MAX); + if (feaElem->feaDim != intVal - feaElem->dimOff) + HError(2677, "%s: Inconsistent feature element dimension range", invoker); + ChkedAlpha("Next keyword", buf); + } + if (strcmp(buf, "") == 0) { + intVal = ChkedInt("Context feature expansion vector size", 1, INT_MAX); + feaElem->ctxMap = CreateIntVec(hset->hmem, intVal); + for (i = 1; i <= intVal; ++i) + feaElem->ctxMap[i] = ChkedInt("A context shift", -INT_MAX, INT_MAX); + } + else + HError(2650, "%s: keyword expected", invoker); + /* set extDim and srcDim fields*/ + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + if (feaElem->inputKind == ANNFEAIK) + feaElem->srcDim = feaElem->feaSrc->nodeNum; + else + feaElem->srcDim = feaElem->extDim; + /* add this feature element to hset->nInp, if needed */ + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { + if(streamIdx<0) HError(2678,"%s: stream index not set",invoker); + for (i = 0; i < hset->nInp[streamIdx]; ++i) + if (CmpFeaElem(hset->inpElem[streamIdx][i], feaElem)) + break; + if (i == hset->nInp[streamIdx]) { + if (i >= MAXINPUSE) + HError(2678, "%s: Maximum number of input feature usage reached, increase MAXINPUSE", invoker); + hset->inpElem[streamIdx][hset->nInp[streamIdx]++] = feaElem; + } + } + + return feaElem; +} + +/* cz277 - 1007 */ +FeaMix *AddOneFeaMix(char *invoker, char *kwd, Boolean existmacro) { + char buf[MAXSTRLEN]; + LabId id; + FeaMix *feaMix; + int i, feaIdx, feaDim; + MLink m = NULL; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~F") == 0) { + ChkedAlpha("Macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'F', id)) != NULL) { + if (existmacro == TRUE) + return (FeaMix *) m->structure; + else + HError(2676, "%s: Feature mixture macro name %s occupied", invoker, id->name); + } + if (id == NULL) + id = GetLabId(buf, TRUE); + ChkedAlpha("Next keyword", buf); + } + else { + id = GetNextANNMacroName(invoker, hset, 'F'); + if (trace & T_BAS) + HError(-2675, "%s: Anonymous feature mixture macro created, auto-name %s assigned\n", invoker, id->name); + } + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + if (strcmp(buf, "") == 0) { + feaMix->elemNum = ChkedInt("The elements in this feature mixture", 1, INT_MAX); + feaMix->mixDim = ChkedInt("The dimension of this feature mixture", 1, INT_MAX); + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + for (i = 0; i < feaMix->elemNum; ++i) + feaMix->feaList[i] = ParseNextFeaElem(invoker, NULL, &feaIdx, &feaDim); + } + else if (strcmp(buf, "") == 0) { + feaMix->elemNum = 1; + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * 1); + feaMix->feaList[0] = ParseNextFeaElem(invoker, buf, &feaIdx, &feaDim); + feaMix->mixDim = feaMix->feaList[0]->extDim; + } + else + HError(2650, "%s: Incorrect keyword for input feature", invoker); + /* reset owner num */ + feaMix->ownerNum = 0; + /* add a new macro */ + if (m == NULL) + NewMacro(hset, fidx, 'F', id, feaMix); + else + m->structure = (Ptr) feaMix; + /* saves the model */ + saveHMMSet = TRUE; + + return feaMix; +} + +/* cz277 - pact */ +static void InitActParmVecs(HMMSet *hset, LELink layerElem) { + int i, intVal; + NVecBundle *hyper = NULL; + char buf[MAXSTRLEN]; + + switch (layerElem->actfunKind) { + case AFFINEAF: + case HERMITEAF: + case LHUCRELUAF: + case PRELUAF: + case PARMRELUAF: + case LHUCSIGMOIDAF: + case PSIGMOIDAF: + case PARMSIGMOIDAF: + case LHUCSOFTRELUAF: + case PSOFTRELUAF: + case PARMSOFTRELUAF: + ChkedAlpha("Next keyword", buf); + break; + default: + return; + } + if (strcmp(buf, "") == 0) + hyper = AddOneNVecBundle("InitActParmVecs", NULL, hset, TRUE); + layerElem->actfunParmNum = 0; + if (strcmp(buf, "") == 0) { + layerElem->actfunParmNum = ChkedInt("Number of parameter vectors", 1, INT_MAX); + ChkedAlpha("Next keyword", buf); + } + else if (strcmp(buf, "") == 0) + layerElem->actfunParmNum = 1; + else + HError(2650, "InitActParmVecs: Unexpected keyword %s", buf); + layerElem->actfunVecs = (NVecBundle **) New(hset->hmem, (layerElem->actfunParmNum + 1) * sizeof(NVecBundle *)); + memset(layerElem->actfunVecs, 0, (layerElem->actfunParmNum + 1) * sizeof(NVecBundle *)); + layerElem->actfunVecs[0] = hyper; + for (i = 1; i <= layerElem->actfunParmNum; ++i) { + if (i != 1) { + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, " expected"); + } + intVal = ChkedInt("Parameter vector index", 1, layerElem->actfunParmNum + 1); + layerElem->actfunVecs[intVal] = AddOneNVecBundle("InitActParmVecs", NULL, hset, TRUE); + ++layerElem->actfunVecs[intVal]->nUse; + } + CheckActFunParameters(layerElem); + /* setup the tracing list */ + if (layerElem->actfunVecs != NULL) { + for (i = 0; i<= layerElem->actfunParmNum; ++i) { + layerElem->actfunVecs[i]->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->actfunVecs[i]->hook); + } + } +} + +/* IL */ +void InsertOneANNLayer(void) { + int i, j, layerPos, layerNum; + ADLink annDef; + LELink layerElem; + LELink *layerList; + char buf[MAXSTRLEN]; + LabId id; + + /* get the target ANN model */ + ChkedAlpha("Target ANN macro type", buf); + if (strcmp(buf, "~N") != 0) + HError(2650, "InsertOneANNLayer: ~N macro type expected"); + ChkedAlpha("Target ANN macro name", buf); + annDef = GetANNDefByMacName("InsertOneANNLayer", buf, hset); + /* get target layer position */ + /* -1, add on the top */ + layerPos = ChkedInt("New layer insert position", -1 * annDef->layerNum, annDef->layerNum + 2); + if (layerPos >= 0 && layerPos < 2) + HError(2677, "InsertOneANNLayer: Illegal insert layer position"); + else if (layerPos >= 2) + layerPos -= 2; + else + layerPos = annDef->layerNum + 1 + layerPos; + /* get the layer element macro name */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "~L") == 0) { + ChkedAlpha("~L macro name", buf); + id = GetLabId(buf, FALSE); + /*if (id != NULL || (m = FindMacroName(hset, 'L', id)) != NULL)*/ + if (id != NULL) + HError(2676, "InsertOneANNLayer: Layer element macro name %s occupied", buf); + id = GetLabId(buf, TRUE); + /* get the layer kind */ + ChkedAlpha("next keyword", buf); + } + else { + id = GetNextANNMacroName("InsertOneANNLayer", hset, 'L'); + if (trace & T_BAS) + HError(-2675, "InsertOneANNLayer: Anonymous layer element macro created, auto-name %s assigned\n", id->name); + } + if (strcmp(buf, "") != 0) + HError(2650, "InsertOneANNLayer: expected"); + ChkedAlpha("next keyword", buf); + if (strcmp(buf, "") != 0) + HError(2650, "InsertOneANNLayer: expected"); + ChkedAlpha("layer kind string", buf); + layerElem = GenBlankLayer(hset->hmem); + layerElem->layerKind = Str2LayerKind(buf); + ChkedAlpha("Next key word", buf); + if (strcmp("", buf) != 0) + HError(2650, " expected"); + layerElem->feaMix = AddOneFeaMix("InsertOneANNLayer", NULL, TRUE); + layerElem->feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + ++layerElem->feaMix->nUse; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) { + ++layerElem->feaMix->feaList[i]->nUse; + if (layerElem->feaMix->feaList[i]->inputKind == ANNFEAIK) + ++layerElem->feaMix->feaList[i]->feaSrc->nDrv; + } + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(2640, "InsertOneANNLayer: Not implemented yet!"); break; + case CONVOLUTIONLAK: HError(2640, "InsertOneANNLayer: Not implemented yet!"); break; + case PERCEPTRONLAK: + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + layerElem->wghtMat = AddOneNMatBundle("InsertOneANNLayer", NULL, hset, TRUE); + ++layerElem->wghtMat->nUse; + layerElem->nodeNum = layerElem->wghtMat->variables->rowNum; + layerElem->inputDim = layerElem->wghtMat->variables->colNum; + if (layerElem->inputDim != layerElem->feaMix->mixDim) + HError(2677, "InsertOneANNLayer: Feature mixture and weight matrix dimension inconsistent"); + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + layerElem->biasVec = AddOneNVecBundle("InsertOneANNLayer", NULL, hset, TRUE); + ++layerElem->biasVec->nUse; + if (layerElem->nodeNum != layerElem->biasVec->variables->vecLen) + HError(2677, "InsertOneANNLayer: Weight matrix and bias vector dimension inconsistent"); + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + ChkedAlpha("Activation kind string", buf); + layerElem->actfunKind = Str2ActFunKind(buf); + InitActParmVecs(hset, layerElem); + break; + case SUBSAMPLINGLAK: HError(2640, "InsertOneANNLayer: Not implemented yet!"); break; + default: + HError(2691, "InsertOneANNLayer: Unknown layer kind"); + } + ++layerElem->nUse; + NewMacro(hset, fidx, 'L', id, layerElem); + layerElem->ownerHead = hset->annSet->defsHead; + layerElem->ownerTail = hset->annSet->defsHead; + ++layerElem->ownerCnt; + /* insert the new layer */ + layerNum = annDef->layerNum + 1; + layerList = (LELink *) New(hset->hmem, layerNum * sizeof(LELink)); + for (i = 0, j = 0; i < layerNum; ++i) { + if (i == layerPos) + layerList[i] = layerElem; + else + layerList[i] = annDef->layerList[j++]; + } + annDef->layerList = layerList; + annDef->layerNum = layerNum; + /* */ + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + /* saves the model */ + saveHMMSet = TRUE; +} + +/* cz277 - 1007 */ +/* seed uses to be the position of layerElem */ +static void ChangeOneLayerDims(char *invoker, LELink layerElem, int seed, int nodeNum, int inputDim) { + int i; + MLink m; + + if (inputDim != layerElem->feaMix->mixDim) { + m = FindMacroStruct(hset, 'F', layerElem->feaMix); + if (m == NULL) + HError(2675, "%s: Anonymous feature mixture not allowed", invoker); + if (trace & T_BAS) + printf("%s: ~F \"%s\" dimension for weights may need to change\n", invoker, m->id->name); + } + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(2640, "%s: Not implemented yet!", invoker); break; + case CONVOLUTIONLAK: HError(2640, "%s: Not implemented yet!", invoker); break; + case PERCEPTRONLAK: + ChangeDimOneNMatBundle(invoker, layerElem->wghtMat, nodeNum, inputDim); + ChangeDimOneNVecBundle(invoker, layerElem->biasVec, nodeNum); + switch (layerElem->actfunKind) { + case AFFINEAF: + case HERMITEAF: + case LHUCRELUAF: + case PRELUAF: + case PARMRELUAF: + case LHUCSIGMOIDAF: + case PSIGMOIDAF: + case PARMSIGMOIDAF: + case LHUCSOFTRELUAF: + case PSOFTRELUAF: + case PARMSOFTRELUAF: + for (i = 1; i <= layerElem->actfunParmNum; ++i) + ChangeDimOneNVecBundle(invoker, layerElem->actfunVecs[i], nodeNum); + default: + break; + } + break; + case SUBSAMPLINGLAK: HError(2640, "%s: Not implemented yet!", invoker); break; + default: + HError(2691, "%s: Unknown layer kind", invoker); break; + } + layerElem->nodeNum = nodeNum; + layerElem->inputDim = inputDim; +} + +/* cz277 - 1007 */ +/* CF */ +void ChangeOneANNLayerInput(void) { + char buf[MAXSTRLEN]; + FeaMix *feaMix; + LELink layerElem=NULL; + int i, j; + + /* original feature mixture */ + ChkedAlpha("Target layer macro type", buf); + if (strcmp(buf, "~L") == 0) + layerElem = GetLayerElemByMacName("ChangeOneANNLayerInput", buf, hset, NULL, NULL); + else + HError(2650, "ChangeOneANNLayerInput: Unsupported target ANN layer macro"); + /* deuse the old feature mixture */ + for (i = 0, j = 0; j < layerElem->feaMix->ownerNum; ++i, ++j) { + if (layerElem->feaMix->ownerList[i] == layerElem) + ++j; + if (i != j) + layerElem->feaMix->ownerList[i] = layerElem->feaMix->ownerList[j]; + } + --layerElem->feaMix->ownerNum; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) { + --layerElem->feaMix->feaList[i]->nUse; + if (layerElem->feaMix->feaList[i]->inputKind == ANNFEAIK) + --layerElem->feaMix->feaList[i]->feaSrc->nDrv; + } + --layerElem->feaMix->nUse; + /* new feature mixture */ + feaMix = AddOneFeaMix("ChangeOneANNLayerInput", NULL, TRUE); + for (i = 0; i < feaMix->elemNum; ++i) + if (feaMix->feaList[i]->inputKind == ANNFEAIK) + ++feaMix->feaList[i]->feaSrc->nDrv; + /*ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "~F") == 0) { + feaMix = AddOneFeaMix("ChangeOneANNLayerInput", buf, TRUE); + ChkedAlpha("Feature mixture macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'F', id)) != NULL) + feaMix = (FeaMix *) m->structure; + else + HError(9999, "ChangeOneANNLayerInput: Unexisted feature mixture macro"); + for (i = 0; i < feaMix->elemNum; ++i) + if (feaMix->feaList[i]->inputKind == ANNFEAIK) + ++feaMix->feaList[i]->feaSrc->nDrv;; + } + else + feaMix = AddOneFeaMix("ChangeOneANNLayerInput", buf, TRUE);*/ + /* use the new feature mixture */ + feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + ++feaMix->nUse; + for (i = 0; i < feaMix->elemNum; ++i) + ++feaMix->feaList[i]->nUse; + /*if (feaMix->feaList[i]->inputKind == ANNFEAIK) + --feaMix->feaList[i]->feaSrc->nDrv;*/ + layerElem->feaMix = feaMix; +} + +/* CD */ +void ChangeOneANNLayerDims(void) { + int nodeNum, inputDim, layerPos; + LELink layerElem; + + layerElem = GetLayerElemByMacName("ChangeOneANNLayerDims", NULL, hset, NULL, &layerPos); + /* get the new nodeNum */ + nodeNum = ChkedInt("Node number of the new layer", 0, INT_MAX); + if (nodeNum == 0) + nodeNum = layerElem->nodeNum; + /* get the new inputDim */ + inputDim = ChkedInt("Input dimension of the new layer", 0, INT_MAX); + if (inputDim == 0) + inputDim = layerElem->inputDim; + /* change the dimensions */ + ChangeOneLayerDims("ChangeOneANNLayerDims", layerElem, layerPos, nodeNum, inputDim); +} + +/* EL */ +void EraseOneANNLayer(void) { + int layerPos; + LELink layerElem=NULL; + float randScale = 1.0; + char buf[MAXSTRLEN]; + + /* original feature mixture */ + ChkedAlpha("Target layer macro type", buf); + if (strcmp(buf, "~L") == 0) + layerElem = GetLayerElemByMacName("EraseOneANNLayer", buf, hset, NULL, &layerPos); + else + HError(2650, "EraseOneANNLayer: Unsupported target ANN layer macro"); + /* take action */ + /*actfunKind = layerElem->actfunKind;*/ + RandANNLayer(layerElem, layerPos, randScale); + /*layerElem->actfunKind = actfunKind;*/ + /* saves the model */ + saveHMMSet = TRUE; +} + +/* DL */ +/* The other feature mixtures referencing this layer are not removed */ +void DeleteOneANNLayer(void) { + LELink layerElem; + FeaMix *feaMix; + ADLink annDef; + int i, layerPos; + + layerElem = GetLayerElemByMacName("DeleteOneANNLayer", NULL, hset, &annDef, &layerPos); + /* remove feature mixture */ + if (layerElem->feaMix != NULL) { + feaMix = layerElem->feaMix; + /* decrease nUse */ + for (i = 0; i < feaMix->elemNum; ++i) + --feaMix->feaList[i]->nUse; + --feaMix->nUse; + /* decrease nDrv */ + for (i = 0; i < feaMix->elemNum; ++i) + if (feaMix->feaList[i]->inputKind == ANNFEAIK) + --feaMix->feaList[i]->feaSrc->nDrv; + /* remove this owner */ + --feaMix->ownerNum; + for (i = layerPos; i < feaMix->ownerNum; ++i) + feaMix->ownerList[i] = feaMix->ownerList[i + 1]; + } + /* remove the rest */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(2640, "DeleteOneANNLayer: Not implemented yet"); break; + case CONVOLUTIONLAK: HError(2640, "DeleteOneANNLayer: Not implemented yet"); break; + case PERCEPTRONLAK: + CancelBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + --layerElem->wghtMat->nUse; + CancelBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + --layerElem->biasVec->nUse; + if (layerElem->actfunVecs != NULL) { + for (i = 0; i <= layerElem->actfunParmNum; ++i) { + if (layerElem->actfunVecs[i] != NULL) { + CancelBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->actfunVecs[i]->hook); + --layerElem->actfunVecs[i]->nUse; + } + } + } + break; + case SUBSAMPLINGLAK: HError(2640, "DeleteOneANNLayer: Not implemented yet"); break; + default: + break; + } + /* remove the layer itself */ + layerElem->nUse = 0; + /* remove this layer */ + --annDef->layerNum; + for (i = layerPos; i < annDef->layerNum; ++i) + annDef->layerList[i] = annDef->layerList[i + 1]; + /* saves the model */ + saveHMMSet = TRUE; +} + +/* CA */ +void ChangeOneANNLayerActFun(void) { + LELink layerElem; + char buf[MAXSTRLEN]; + + layerElem = GetLayerElemByMacName("ChangeANNOneLayerActFun", NULL, hset, NULL, NULL); + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("New hidden activation function", buf); + layerElem->actfunKind = Str2ActFunKind(buf); + /* cz277 - pact */ + InitActParmVecs(hset, layerElem); + } + else + HError(2650, "ChangeOneANNLayerActFun: keyword expected"); + + /* saves the model */ + saveHMMSet = TRUE; +} + +static FeaMix *CloneOneFeaMix(FeaMix *srcMix) { + FeaMix *dstMix; + FELink srcElem, dstElem; + int i, j, n; + + dstMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memcpy(dstMix, srcMix, sizeof(FeaMix)); + dstMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * srcMix->elemNum); + for (i = 0; i < srcMix->elemNum; ++i) { + dstMix->feaList[i] = (FELink) New(hset->hmem, sizeof(FeaElem)); + srcElem = srcMix->feaList[i]; + dstElem = dstMix->feaList[i]; + memcpy(dstElem, srcElem, sizeof(FeaElem)); + /* cz277 - many */ + n = IntVecSize(dstElem->ctxPool); + for (j = 1; j <= n; ++j) + dstElem->feaMats[j] = CreateNMatrix(hset->hmem, srcElem->feaMats[j]->rowNum, srcElem->feaMats[j]->colNum); + if (dstElem->hisMat != NULL) + dstElem->hisMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), dstElem->hisLen * dstElem->feaDim); + } + /* cz277 - many */ + /*dstMix->mixMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), dstMix->mixDim);*/ + n = IntVecSize(dstMix->ctxPool); + for (i = 1; i <= n; ++i) + dstMix->mixMats[i] = CreateNMatrix(hset->hmem, GetNBatchSamples(), dstMix->mixDim); + + return dstMix; +} + +/* EF */ +void ExtendOneFeaMix(void) { + FeaMix *feaMix=NULL; + FELink incElem, *feaList; + LELink layerElem; + LabId id; + int i, j, incIdx, incDim, elemNum, layerPos = -1, seed; + char buf[MAXSTRLEN]; + MLink m; + + ChkedAlpha("Target macro type", buf); + if (strcmp(buf, "~L") == 0) { + layerElem = GetLayerElemByMacName("ExtendOneFeaMix", buf, hset, NULL, &layerPos); + /* if needed, clone layerElem->feaMix and update its owners and nUse */ + if (layerElem->feaMix->nUse > 1) { /* if shared */ + feaMix = CloneOneFeaMix(layerElem->feaMix); + --layerElem->feaMix->ownerNum; + for (i = 0, j = 0; i < layerElem->feaMix->ownerNum; ++i, ++j) { + if (layerElem->feaMix->ownerList[i] == layerElem) + ++j; + if (i != j) + layerElem->feaMix->ownerList[i] = layerElem->feaMix->ownerList[j]; + } + --layerElem->feaMix->nUse; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) + --layerElem->feaMix->feaList[i]->nUse; + /* update feaMix's owners and nUse */ + feaMix->ownerNum = 1; + feaMix->ownerList[0] = layerElem; + feaMix->nUse = 1; + for (i = 0; i < feaMix->elemNum; ++i) + feaMix->feaList[i]->nUse = 1; + /* add it as a new macro */ + id = GetNextANNMacroName("ExtendOneFeaMix", hset, 'F'); + NewMacro(hset, fidx, 'F', id, feaMix); + layerElem->feaMix = feaMix; + } + else + feaMix = layerElem->feaMix; + } + else if (strcmp(buf, "~F") == 0) { + ChkedAlpha("Feature mixture macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'F', id)) != NULL) + feaMix = (FeaMix *) m->structure; + else + HError(2679, "ExtendOneFeaMix: Unexisted feature mixture macro"); + } + else + HError(2650, "ExtendOneFeaMix: Unsupported target ANN layer macro"); + /* from now on, operate the feaMix pointer */ + incElem = ParseNextFeaElem("ExtendOneFeaMix", NULL, &incIdx, &incDim); + if (incIdx > 0 && incIdx <= feaMix->elemNum) + HError(2677, "ExtendOneFeaMix: Unacceptable new feature element index, please use -1 instead"); + /* append the new feature element */ + elemNum = feaMix->elemNum; + ++feaMix->elemNum; + feaList = feaMix->feaList; + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + for (i = 0; i < elemNum; ++i) + feaMix->feaList[i] = feaList[i]; + feaMix->feaList[i] = incElem; + feaMix->mixDim += incElem->extDim; + /* modify the relevant layers */ + for (i = 0; i < feaMix->ownerNum; ++i) { + layerElem = feaMix->ownerList[i]; + /* the random seed (layerPos) is inconsistent, but this should not matter */ + if (layerPos < 0) + seed = i; + else + seed = layerPos; + ChangeOneLayerDims("ChangeOneANNLayerDims", layerElem, seed, layerElem->nodeNum, feaMix->mixDim); + } + /* saves the model */ + saveHMMSet = TRUE; +} + + + +/* CP */ +void CopyANNParameters(void) { + char mmfPath[MAXSTRLEN], lstPath[MAXSTRLEN], buf[MAXSTRLEN], xformPath[MAXSTRLEN], macroname[MAXSTRLEN]; + char srctype, dsttype; + int i, actfunParmNum; + InputXForm *auxinp = NULL; + MLink srcmacro, dstmacro; + LabId srclabid, dstlabid; + /*ANNUpdtKind updtFlag = WEIGHTUK | BIASUK | ACTFUNUK;*/ + int ACTFUNUK = 0x4, BIASUK = 0x2, WEIGHTUK = 0x1; + int updtFlag = ACTFUNUK | BIASUK | WEIGHTUK; + + ChkedAlpha("Next keyword", buf); + /* load the auxiliary model set */ + if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary MMF file path", mmfPath); + ChkedAlpha("Auxiliary HMM list file path", lstPath); + if (auxFn == NULL || strcmp(auxFn, mmfPath) != 0) { + if (auxFn != NULL) + ResetHMMSet(auxSet); + auxFn = CopyString(&gcheap, mmfPath); + auxSet = (HMMSet *) New(&hmmHeap, sizeof(HMMSet)); + CreateHMMSet(auxSet, &hmmHeap, TRUE); + AddMMF(auxSet, mmfPath); + if (MakeHMMSet(auxSet, lstPath) < SUCCESS) + HError(2600, "CopyANNParameters: MakeHMMSet failed"); + if (LoadHMMSet(auxSet, NULL, NULL) < SUCCESS) + HError(2600, "CopyANNParameters: LoadHMMSet failed"); + } + } + else if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary transform file path", xformPath); + auxinp = LoadInputXForm(NULL, NameOf(xformPath, macroname), xformPath); + if (auxinp == NULL) + HError(2600, "CopyANNParameters: Load auxiliary input xform failed"); + } + else + HError(2650, "CopyANNParameters: Unsupported keyword"); + /* get the update flag */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("Update flag", buf); + updtFlag = 0; + for (i = 0; i < strlen(buf); ++i) { + switch (buf[i]) { + case 'a': updtFlag |= ACTFUNUK; break; + case 'b': updtFlag |= BIASUK; break; + case 'w': updtFlag |= WEIGHTUK; break; + default: + HError(2650, "CopyANNParameters: Unsupported flag %c for copying", buf[i]); + } + } + ChkedAlpha("Next keyword", buf); + } + /* get the source macro entity */ + /*ChkedAlpha("Next keyword", buf);*/ + if (strcmp(buf, "") != 0) + HError(2650, "CopyANNParameters: expected"); + ChkedAlpha("Macro type", buf); + if (buf[0] != '~' || strlen(buf) != 2) + HError(2650, "CopyANNParameters: ~? macro type expected"); + srctype = buf[1]; + ChkedAlpha("Macro name", buf); + srclabid = GetLabId(buf, FALSE); + if (srclabid == NULL || (srcmacro = FindMacroName(auxSet, srctype, srclabid)) == NULL) + HError(2679, "CopyANNParameters: Cannot find the source macro ~%c \"%s\"", srctype, srclabid->name); + /* get the target macro entity */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") != 0) + HError(2650, "CopyANNParameters: expected"); + ChkedAlpha("Macro type", buf); + if (buf[0] != '~' || strlen(buf) != 2) + HError(2650, "CopyANNParameters: ~? macro type expected"); + dsttype = buf[1]; + ChkedAlpha("Macro name", buf); + dstlabid = GetLabId(buf, FALSE); + if (dstlabid == NULL || (dstmacro = FindMacroName(hset, dsttype, dstlabid)) == NULL) + HError(2679, "CopyANNParameters: Cannot find the source macro ~%c \"%s\"", dsttype, dstlabid->name); + /* safety check */ + switch (srctype) { + case 'V': + case 'M': + case 'L': + if (auxinp != NULL || auxSet == NULL) + HError(2615, "CopyANNParameters: Source macro ~%c needs source HMMSet", srctype); + break; + case 'j': + if (auxinp == NULL) + HError(2615, "CopyANNParameters: Source macro ~%c needs input xform", srctype); + break; + default: + HError(2691, "CopyANNParameters: Unsupported source macro type"); + } + /* do the copying */ + switch (dsttype) { + case 'V': + switch (srctype) { + case 'V': + if ((updtFlag & ACTFUNUK) || (updtFlag & BIASUK)) + CopyPartialNVector2NVector(((NVecBundle *) srcmacro->structure)->variables, ((NVecBundle *) dstmacro->structure)->variables); + break; + case 'j': + if (updtFlag & BIASUK) { + if (auxinp->xform->bias == NULL) + HError(2615, "CopyANNParameters: source ~j bias expected to copy to ~V"); + CopyVector2NVector(auxinp->xform->bias, ((NVecBundle *) dstmacro->structure)->variables); + } + break; + default: + HError(2680, "CopyANNParameters: Cannot copy ~%c macro to ~V", srctype); + } + break; + case 'M': + switch (srctype) { + case 'M': + if (updtFlag & WEIGHTUK) + CopyPartialNMatrix2NMatrix(((NMatBundle *) srcmacro->structure)->variables, ((NMatBundle *) dstmacro->structure)->variables); + break; + case 'j': + if (updtFlag & WEIGHTUK) + CopyMatrix2NMatrix(auxinp->xform->xform[1], ((NMatBundle *) dstmacro->structure)->variables); + break; + default: + HError(2680, "CopyANNParameters: Cannot copy ~%c macro to ~V", srctype); + } + break; + case 'L': + switch (srctype) { + case 'V': + if (updtFlag & BIASUK) + CopyPartialNVector2NVector(((NVecBundle *) srcmacro->structure)->variables, ((LELink) dstmacro->structure)->biasVec->variables); + break; + case 'M': + if (updtFlag & WEIGHTUK) + CopyPartialNMatrix2NMatrix(((NMatBundle *) srcmacro->structure)->variables, ((LELink) dstmacro->structure)->wghtMat->variables); + break; + case 'L': + if ((updtFlag & BIASUK) != 0 && ((LELink) srcmacro->structure)->biasVec != NULL && ((LELink) dstmacro->structure)->biasVec != NULL) + CopyPartialNVector2NVector(((LELink) srcmacro->structure)->biasVec->variables, ((LELink) dstmacro->structure)->biasVec->variables); + if ((updtFlag & WEIGHTUK) != 0 && ((LELink) srcmacro->structure)->wghtMat != NULL && ((LELink) dstmacro->structure)->wghtMat != NULL) + CopyPartialNMatrix2NMatrix(((LELink) srcmacro->structure)->wghtMat->variables, ((LELink) dstmacro->structure)->wghtMat->variables); + if ((updtFlag & ACTFUNUK) != 0 && ((LELink) srcmacro->structure)->actfunVecs != NULL && ((LELink) dstmacro->structure)->actfunVecs != NULL) { + actfunParmNum = ((LELink) dstmacro->structure)->actfunParmNum; + if (actfunParmNum < ((LELink) srcmacro->structure)->actfunParmNum) + actfunParmNum = ((LELink) srcmacro->structure)->actfunParmNum; + for (i = 0 ; i <= actfunParmNum; ++i) + if (((LELink) srcmacro->structure)->actfunVecs[i] != NULL && ((LELink) dstmacro->structure)->actfunVecs[i] != NULL) + CopyPartialNVector2NVector(((LELink) srcmacro->structure)->actfunVecs[i]->variables, ((LELink) dstmacro->structure)->actfunVecs[i]->variables); + } + break; + case 'j': + if (updtFlag & BIASUK) + CopyVector2NVector(auxinp->xform->bias, ((LELink) dstmacro->structure)->biasVec->variables); + if (updtFlag & WEIGHTUK) + CopyMatrix2NMatrix(auxinp->xform->xform[1], ((LELink) dstmacro->structure)->wghtMat->variables); + break; + default: + HError(2680, "CopyANNParameters: Cannot copy ~%c macro to ~V", srctype); + } + break; + default: + HError(2640, "CopyANNParameters: Unsupported target ANN parameters for copying"); + } + + /* saves the model */ + saveHMMSet = TRUE; +} + +/*void CopyANNLayerParms(void) { + char mmfPath[MAXSTRLEN], lstPath[MAXSTRLEN], buf[MAXSTRLEN], xformPath[MAXSTRLEN], macroname[MAXSTRLEN]; + LELink srcLayer, dstLayer; + int i, j, k, opCnt; + HMMSet *auxset = NULL; + InputXForm *auxinp = NULL; + + opCnt = ChkedInt("Operation count", 1, INT_MAX); + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary MMF file path", mmfPath); + ChkedAlpha("Auxiliary HMM list file path", lstPath); + auxset = (HMMSet *) New(&hmmHeap, sizeof(HMMSet)); + CreateHMMSet(auxset, &hmmHeap, TRUE); + AddMMF(auxset, mmfPath); + if (MakeHMMSet(auxset, lstPath) < SUCCESS) + HError(9999, "CopyANNLayerParms: MakeHMMSet failed"); + if (LoadHMMSet(auxset, NULL, NULL) < SUCCESS) + HError(9999, "CopyANNLayerParms: LoadHMMSet failed"); + ChkedAlpha("Next keyword", buf); + } + else if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary transform file path", xformPath); + auxinp = LoadInputXForm(NULL, NameOf(xformPath, macroname), xformPath); + if (auxinp == NULL) + HError(9999, "CopyANNLayerParms: Load auxiliary input xform failed"); + ChkedAlpha("Next keyword", buf); + } + else + auxset = hset; + for (i = 0; i < opCnt; ++i) { + if (i != 0) + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0 && auxset != NULL) { + srcLayer = GetLayerElemByMacName("CopyANNLayerParms", NULL, auxset, NULL, NULL); + dstLayer = GetLayerElemByMacName("CopyANNLayerParms", NULL, hset, NULL, NULL); + ChkedAlpha("Next keyword", buf); + if (srcLayer != dstLayer) { + for (j = 0; j < strlen(buf); ++j) { + switch (buf[j]) { + case 'a': + if (srcLayer->actfunVecs != NULL && dstLayer->actfunVecs != NULL) + if (srcLayer->actfunKind == dstLayer->actfunKind) + for (k = 0; k <= srcLayer->actfunParmNum; ++k) + CopyPartialNVector2NVector(srcLayer->actfunVecs[k]->variables, dstLayer->actfunVecs[k]->variables); + break; + case 'b': + if (srcLayer->inputDim != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal bias vector lenghts"); + CopyPartialNVector2NVector(srcLayer->biasVec->variables, dstLayer->biasVec->variables); + break; + case 'w': + if (srcLayer->nodeNum != dstLayer->nodeNum || srcLayer->inputDim != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal weight matrix dimensions"); + CopyPartialNMatrix2NMatrix(srcLayer->wghtMat->variables, dstLayer->wghtMat->variables); + break; + default: + HError(9999, "CopyANNLayerParms: Unknown update flag %c", buf[j]); + } + } + } + } + else if (strcmp(buf, "") == 0 && auxinp != NULL) { + ChkedAlpha("Input transform macro type", buf); + if (strcmp(buf, "~j") != 0) + HError(9999, "CopyANNLayerParms: The input transform macro ~j expected"); + ChkedAlpha("Input transform macro name", buf); + if (strcmp(buf, macroname) != 0) + HError(9999, "CopyANNLayerParms: The input transform macro name unmatched"); + dstLayer = GetLayerElemByMacName("CopyANNLayerParms", NULL, hset, NULL, NULL); + ChkedAlpha("Next keyword", buf); + for (j = 0; j < strlen(buf); ++j) { + switch (buf[j]) { + case 'b': + if (auxinp->xform->bias != NULL) { + if (VectorSize(auxinp->xform->bias) != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal bias vector lenghts"); + CopyVector2NVector(auxinp->xform->bias, dstLayer->biasVec->variables); + } + break; + case 'w': + if (NumRows(auxinp->xform->xform[1]) != dstLayer->nodeNum || NumCols(auxinp->xform->xform[1]) != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal weight matrix dimensions"); + CopyMatrix2NMatrix(auxinp->xform->xform[1], dstLayer->wghtMat->variables); + break; + default: + HError(9999, "CopyANNLayerParms: Unsupported update flag %c for input transform", buf[j]); + } + } + } + else + HError(9999, "CopyANNLayerParms: keyword expected"); + } + if (auxset != NULL && hset != auxset) + ResetHMMSet(auxset); + + saveHMMSet = TRUE; +}*/ + +/* cz277 - ANN */ +/* SL */ +void ShowANNLayerStats(void) { + int i, len, layerPos; + LELink layerElem=NULL; + char buf[MAXSTRLEN]; + double mean, stddev, absmax, l1norm, l2norm, absval; + + /* original feature mixture */ + ChkedAlpha("Target layer macro type", buf); + if (strcmp(buf, "~N") == 0 || strcmp(buf, "~L") == 0) { + layerElem = GetLayerElemByMacName("ShowANNLayerStats", buf, hset, NULL, &layerPos); + } + else { + HError(2650, "ShowANNLayerStats: Unsupported target ANN layer macro"); + } + /* compute for weights */ + len = layerElem->nodeNum * layerElem->inputDim; + absmax = 0.0; + mean = 0.0; + stddev = 0.0; + l1norm = 0.0; + l2norm = 0.0; + for (i = 0; i < len; ++i) { + absval = fabs(layerElem->wghtMat->variables->matElems[i]); + if (absval > absmax) + absmax = absval; + mean += layerElem->wghtMat->variables->matElems[i]; + l1norm += absval; + l2norm += pow(layerElem->wghtMat->variables->matElems[i], 2.0); + } + mean /= len; + l1norm /= layerElem->nodeNum; + l2norm /= layerElem->nodeNum; + for (i = 0; i < len; ++i) { + stddev += pow(layerElem->wghtMat->variables->matElems[i] - mean, 2.0); + } + stddev = sqrt(stddev / len); + /* output */ + printf("\tWeights:\n"); + printf("\t\tinput dim = %d, output dim = %d, param num = %d\n", layerElem->inputDim, layerElem->nodeNum, len); + printf("\t\tmean = %e, std dev = %e, max abs = %e\n", mean, stddev, absmax); + printf("\t\tl1 norm / output node = %e, l2 norm / output node = %e\n", l1norm, l2norm); + /*printf("\n");*/ + /* compute for biases */ + len = layerElem->nodeNum; + absmax = 0.0; + mean = 0.0; + stddev = 0.0; + l1norm = 0.0; + l2norm = 0.0; + for (i = 0; i < len; ++i) { + absval = fabs(layerElem->biasVec->variables->vecElems[i]); + if (absval > absmax) + absmax = absval; + mean += layerElem->biasVec->variables->vecElems[i]; + l1norm += absval; + l2norm += pow(layerElem->biasVec->variables->vecElems[i], 2.0); + } + mean /= len; + l1norm /= layerElem->nodeNum; + l2norm /= layerElem->nodeNum; + for (i = 0; i < len; ++i) { + stddev += pow(layerElem->biasVec->variables->vecElems[i] - mean, 2.0); + } + stddev = sqrt(stddev / len); + /* output */ + printf("\tbiases:\n"); + printf("\t\toutput dim = %d, param num = %d\n", layerElem->nodeNum, len); + printf("\t\tmean = %e, std dev = %e, max abs = %e\n", mean, stddev, absmax); + printf("\t\tl1 norm / output node = %e, l2 norm / output node = %e\n", l1norm, l2norm); + printf("\n"); + + /* saves the model */ + saveHMMSet = FALSE; +} + + +/* ----------------------- RS - Replace an HMM state --------------------- */ + +/*void ReplaceHMMState(void) { + char buf[MAXSTRLEN], hbuf[MAXSTRLEN]; + int tIdx, sIdx = -1, i, j; + LabId hmmId, stateId; + HMMScanState hss; + MLink macDef; + HLink hlink; + StateInfo *si; + StreamElem se; + LELink layerElem; + + if (hset->hsKind == ANNHS) + HError(2615, "ReplaceHMMState: No HMMs in the model file"); + // get target HMM structure + ChkedAlpha("Target HMM name", buf); + if (strcmp(buf, "~h") == 0) + ChkedAlpha("Target HMM name", buf); + hmmId = GetLabId(buf, FALSE); + if (hmmId == NULL) + HError(2635, "ReplaceHMMState: Failed to find model for label \"%s\"", buf); + if ((macDef = FindMacroName(hset, 'l', hmmId)) == NULL) + HError(2635, "ReplaceHMMState: Unknown HMM name %s", buf); + hlink = (HLink) macDef->structure; + tIdx = ChkedInt("Target state index", 2, hlink->numStates - 1); + // get source state structure + ChkedAlpha("Source state name", buf); + if (strcmp(buf, "~s") == 0) + ChkedAlpha("Source state name", buf); + stateId = GetLabId(buf, FALSE); + if (stateId == NULL) { + ExtractState(buf, hbuf, &sIdx); + stateId = GetLabId(hbuf, FALSE); + if ((macDef = FindMacroName(hset, 'l', stateId)) == NULL) + HError(2635, "ReplaceHMMState: Unknown HMM name %s", hbuf); + si = ((HLink) macDef->structure)->svec[sIdx].info; + } + else { + if ((macDef = FindMacroName(hset, 's', stateId)) == NULL) + HError(2635, "ReplaceHMMState: Unknown state name %s", buf); + si = (StateInfo *) macDef->structure; + } + // change the use count + --hlink->svec[tIdx].info->nUse; + if (hlink->svec[tIdx].info->nUse == 0) + DeleteMacroStruct(hset, 's', hlink->svec[tIdx].info); + ++si->nUse; + // replace target state + hlink->svec[tIdx].info = si; + // remove the redundant targets and reset the target indexes + if (hset->hsKind == HYBRIDHS) { + for (i = 1; i <= hset->swidth[0]; ++i) { + se = si->pdf[i]; + tIdx = se.targetIdx - 1; + layerElem = se.targetSrc; + if (tIdx < layerElem->nodeNum - 1) { + for (j = tIdx + 1; j < layerElem->nodeNum; ++j) { + CopyNSegment(layerElem->wghtMat->variables, j * layerElem->inputDim, layerElem->inputDim, layerElem->wghtMat->variables, (j - 1) * layerElem->inputDim); + CopyNVectorSegment(layerElem->biasVec->variables, j, 1, layerElem->biasVec->variables, j - 1); + } + --layerElem->nodeNum; + } + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) { + if (hss.si->pdf[i].targetIdx > tIdx + 1) { + --hss.si->pdf[i].targetIdx; + hss.si->pdf[i].targetIdx *= -1; + } + } + EndHMMScan(&hss); + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) + if (hss.si->pdf[i].targetIdx < 0) + hss.si->pdf[i].targetIdx *= -1; + } + } + + // saves the model + saveHMMSet = TRUE; +}*/ + +/* ----------------------- CH - Convert GMM-HMMs to an initial ANN-HMMs --------------------- */ + +static void BorrowOneANNMacro(char *invoker, char type, Ptr structure, HMMSet *srcset, HMMSet *dstset) { + MLink m; + LabId id; + + m = FindMacroStruct(dstset, type, structure); + if (m == NULL) { + m = FindMacroStruct(srcset, type, structure); + if (m != NULL) { + id = m->id; + if (FindMacroName(dstset, type, id) != NULL) + m = NULL; + } + if (m == NULL) + id = GetNextANNMacroName(invoker, dstset, type); + NewMacro(dstset, fidx, type, id, structure); + } +} + +void ConnectANNtoHMMs(void) { + char buf[MAXSTRLEN], mmfPath[MAXSTRLEN], lstPath[MAXSTRLEN]; + HMMScanState hss; + HMMSet *auxset; + LELink layerElem; + MLink m; + AILink annInfo, curInfo; + ADLink annDef; + int i, j, h, targetCnt, streamIdx = 1; + LabId id; + + if (hset->hsKind == ANNHS) + HError(2615, "ConnectANNtoHMMs: No HMMs found in the model set"); + + /* load the ANN model */ + ChkedAlpha("Auxiliary MMF file path", mmfPath); + ChkedAlpha("Auxiliary HMM list file path", lstPath); + auxset = (HMMSet *) New(&hmmHeap, sizeof(HMMSet)); + CreateHMMSet(auxset, &hmmHeap, TRUE); + AddMMF(auxset, mmfPath); + if (MakeHMMSet(auxset, lstPath) < SUCCESS) + HError(2600, "ConnectANNtoHMMs: MakeHMMSet failed"); + if (LoadHMMSet(auxset, NULL, NULL) < SUCCESS) + HError(2600, "ConnectANNtoHMMs: LoadHMMSet failed"); + /* fetch the ANN model */ + ChkedAlpha("ANN macro type", buf); + if (strcmp(buf, "~N") == 0) + ChkedAlpha("ANN macro name", buf); + annDef = GetANNDefByMacName("ConnectANNtoHMMs", buf, auxset); + /* import each of its component to hset */ + m = FindMacroStruct(hset, 'N', annDef); + if (m == NULL) { + m = FindMacroStruct(auxset, 'N', annDef); + if (m != NULL) { + id = m->id; + if (FindMacroName(hset, 'N', id) != NULL) + m = NULL; + } + if (m == NULL) + id = GetNextANNMacroName("ConnectANNtoHMMs", hset, 'N'); + NewMacro(hset, fidx, 'N', id, annDef); + } + /*annDef->nUse |= 1;*/ + if (hset->annSet == NULL) + InitANNSet(hset); + annInfo = (AILink) New(hset->hmem, sizeof(ANNInfo)); + annInfo->annDef = annDef; + annInfo->index = hset->annSet->annNum++; + annInfo->fidx = fidx; + curInfo = hset->annSet->defsTail; + if (curInfo == NULL) + hset->annSet->defsHead = annInfo; + else { + curInfo->next = annInfo; + annInfo->prev = curInfo; + } + annInfo->prev = curInfo; + annInfo->next = NULL; + hset->annSet->defsTail = annInfo; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + BorrowOneANNMacro("ConnectANNtoHMMs", 'L', layerElem, auxset, hset); + if (layerElem->feaMix != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'F', layerElem->feaMix, auxset, hset); + if (layerElem->wghtMat != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'M', layerElem->wghtMat, auxset, hset); + if (layerElem->biasVec != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'V', layerElem->biasVec, auxset, hset); + if (layerElem->actfunVecs != NULL) + for (j = 0; j <= layerElem->actfunParmNum; ++i) + if (layerElem->actfunVecs[j] != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'V', layerElem->actfunVecs[j], auxset, hset); + } + /* to do Tandem or Hybrid */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + streamIdx = ChkedInt("Target stream index", 1, hset->swidth[0]); + ChkedAlpha("Next keyword", buf); + } + if (strcmp(buf, "") == 0) { + hset->hsKind = HYBRIDHS; + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) + if (hss.si->pdf[streamIdx].targetIdx >= 0) + hss.si->pdf[streamIdx].targetIdx = -1; + EndHMMScan(&hss); + targetCnt = 0; + layerElem = annDef->layerList[annDef->layerNum - 1]; + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) { + if (hss.si->pdf[streamIdx].targetIdx < 0) { + hss.si->pdf[streamIdx].densKind = ANNDK; + hss.si->pdf[streamIdx].targetSrc = layerElem; + hss.si->pdf[streamIdx].targetIdx = ++targetCnt; + hss.si->pdf[streamIdx].targetPen = 0.0; + ++hss.si->pdf[streamIdx].targetSrc->nUse; + hss.si->pdf[streamIdx].nMix = 1; + } + } + EndHMMScan(&hss); + if (targetCnt != layerElem->nodeNum) { + if (trace & T_BAS) + HError(-2681, "ConnectANNtoHMMs: Change target number to %d to match HMM state number", targetCnt); + ChangeOneLayerDims("ChangeOneANNLayerDims", layerElem, annDef->layerNum - 1, targetCnt, layerElem->inputDim); + } + /* remove redundant macros */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'v') + DeleteMacro(hset, m); + } + else if (strcmp(buf, "") == 0) + HError(2640, "ConnectANNtoHMMs: Tandem system connection function not implemented yet"); + else + HError(2650, "ConnectANNtoHMMs: Unknown connection method, or expected"); + + /* note, should not reset the auxset here*/ + /* saves the model */ + saveHMMSet = TRUE; + +} + /* -----Regression Class Clustering Tree Building Routines -------------- */ /* linked list of components that are grouped into a cluster */ @@ -6340,7 +8039,6 @@ void Initialise(char *hmmListFn) CreateHeap(&questHeap,"Question Heap",MSTAK,1,1.0,8000,16000); CreateHeap(&tmpHeap,"Temporary Heap",MSTAK,1,1.0,40000,400000); - if(MakeHMMSet(&hSet,hmmListFn)annSet != NULL) { + CheckANNConsistency(hset); + FindANNCycles(hset); + ResetDrvContext(hset); + SetDrvContext(hset); + InitXYBatch(hset); + } FixAllGConsts(hset); /* in case any bad gConsts around */ badGC=FALSE; PurgeMacros(hset); if (mmfFn!=NULL) SaveInOneFile(hset,mmfFn); - if(SaveHMMSet(&hSet,newDir,newExt,NULL,inBinary)spdf.dpdf; ZeroShortVec(dw); for (i=1; i<=seq->nItems; i++){ - vqidx = (int)GetItem(seq,i); + vqidx = (long int)GetItem(seq,i); if (vqidx<1 || vqidx>M) - HError(2170,"UniformSegment: vqidx out of range[%d]",vqidx); + HError(2170,"UniformSegment: vqidx out of range[%ld]",vqidx); ++dw[vqidx]; ++count; } for (m=1; m<=M; m++){ @@ -1256,7 +1262,3 @@ void SaveModel(char *outfn) /* END: HInit.c */ /* ----------------------------------------------------------- */ - - - - diff --git a/HTKTools/HLConf.c b/HTKTools/HLConf.c new file mode 100755 index 0000000..720218d --- /dev/null +++ b/HTKTools/HLConf.c @@ -0,0 +1,1986 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Gunnar Evermann */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1999-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HLConf.c Lattice confusion network */ +/* ----------------------------------------------------------- */ + +char *hlconf_version = "!HVER!HLConf: 3.5.0 [CUED 12/10/15]"; +char *hlconf_sccs_id = "$Id: HLConf.c,v 1.8 2015/10/12 12:07:24 cz277 Exp $"; + +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HWave.h" +#include "HLabel.h" +#include "HAudio.h" +#include "HParm.h" +#include "HANNet.h" +#include "HModel.h" +#include "HUtil.h" +#include "HDict.h" +#include "HLM.h" +#include "HNet.h" +#include "HRec.h" +#include "HLat.h" + +#include + +/* -------------------------- Trace Flags & Vars ------------------------ */ + +#define T_TOP 00001 /* Basic progress reporting */ +#define T_TRAN 00002 /* Output Transcriptions */ +#define T_CN 00010 /* Confusion network clustering */ +#define T_LAT 00020 /* Lattice operation */ +#define T_MEM 00040 /* Memory usage, start and finish */ + +static int trace = 0; + +/* ---------------- Configuration Parameters --------------------- */ + +static ConfParam *cParm[MAXGLOBS]; +static int nParm = 0; /* total num params */ + +/* -------------------------- Global Variables etc ---------------------- */ + + +typedef enum _ConfMethod { + CM_GEOMEAN, CM_MAX +} ConfMethod; + +static char *dictfn; /* dict filename from commandline */ +static char *latInDir = NULL; /* Lattice input dir, set by -L */ +static char *latInExt = "lat"; /* Lattice Extension, set by -X */ + +static FileFormat ifmt=UNDEFF; /* Label input file format */ +#if 0 +static char *labInDir = NULL; /* input label file directory */ +static char *labInExt = "rec"; /* input label file extension */ +#endif + +static FileFormat ofmt=UNDEFF; /* Label output file format */ +static char *labOutDir = NULL; /* output label file directory */ +static char *labOutExt = "rec"; /* output label file extension */ +static char *labOutForm = NULL; /* output label format */ + +static double lmScale = 1.0; /* LM scale factor */ +static double acScale = 1.0; /* acoustic scale factor */ +static LogDouble wordPen = 0.0; /* inter model log penalty */ +static double prScale = 1.0; /* pronunciation scale factor */ +static float confNetPrune = -5.0; /* second pass confusion network pruning */ +/* cz277 - scale conf score */ +static float latScoreScale = 1.0; + +static Vocab vocab; /* wordlist or dictionary */ + +static ConfMethod confMethod = CM_MAX; + +static Boolean confnet = FALSE; /* perform confnet clustering */ +static Boolean writeConfNet = FALSE; /* write scf files? */ + +/* weights for Levenshtein alignment */ +static int subPen = 4; /* NIST values */ +static int delPen = 3; +static int insPen = 3; + +static Boolean fixPronProb = FALSE; +static Boolean clampACLike = TRUE; +static Boolean addNullWord = TRUE; + +static char *labFileMask = NULL; +static char *labOFileMask = NULL; +static char *latFileMask = NULL; +static char *latOFileMask = NULL; + +/* -------------------------- Heaps ------------------------------------- */ + +static MemHeap latHeap; +static MemHeap cnHeap; +static MemHeap transHeap; + +/* -------------------------- Prototypes -------------------------------- */ +void SetConfParms(void); +void ReportUsage(void); +void CalcConfFile(char *latfn); +void ConfNetClusterFile (char *latfn_in, char *latfn_ou, char *labfn_ou); +void InitSimScore(void); + + +/* ---------------- Process Command Line ------------------------- */ + +/* SetConfParms: set conf parms relevant to this tool */ +void SetConfParms(void) +{ + int i; + Boolean b; + double f; + char buf[MAXSTRLEN]; + + nParm = GetConfig("HLCONF", TRUE, cParm, MAXGLOBS); + if (nParm>0){ + if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; + if (GetConfStr(cParm,nParm,"CONFMETHOD",buf)) { + if (strcmp (buf, "GEOMEAN") == 0) + confMethod = CM_GEOMEAN; + else if (strcmp (buf, "MAX") == 0) + confMethod = CM_MAX; + else + HError (4121, "HLConf: unknown CONFMETHOD"); + } + if (GetConfBool (cParm,nParm,"CLAMPACLIKE",&b)) clampACLike = b; + if (GetConfBool (cParm,nParm,"FIXPRONPROB",&b)) fixPronProb = b; + if (GetConfBool (cParm,nParm,"ADDNULLWORD",&b)) addNullWord = b; + if (GetConfFlt (cParm, nParm, "CONFNETPRUNE", &f))confNetPrune = f; + /* cz277 - scale conf score */ + if (GetConfFlt(cParm, nParm, "SCALELATSCORE", &f)) { + latScoreScale = f; + if (latScoreScale <= 0.0) + HError(4122, "HLConf: SCALELATSCORE must be positive"); + } + + if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { + labFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATFILEMASK",buf)) { + latFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATOFILEMASK",buf)) { + latOFileMask = CopyString (&gstack, buf); + } + } +} + +void ReportUsage(void) +{ + printf("\nUSAGE: HLConf [options] vocabFile Files...\n\n"); + printf(" Option Default\n\n"); + printf(" -i s Output transcriptions to MLF s off\n"); + printf(" -l s dir to store label files current\n"); + printf(" -o s output label formating NCSTWMX none\n"); + printf(" -p f inter model trans penalty (log) 0.0\n"); + printf(" -r f pronunciation scale factor 1.0\n"); + printf(" -s f grammar scale factor 1.0\n"); + printf(" -a f acoustic scale factor 1.0\n"); + printf(" -y s output label file extension rec\n"); + printf(" -z perform confusion net clustering off\n"); + printf(" -Z write confusion networks off\n"); + PrintStdOpts("ILSXTGP"); + printf("\n\n"); +} + +int main(int argc, char *argv[]) +{ + char *s, *latfn, latfn_in[MAXSTRLEN], latfn_ou[MAXSTRLEN], labfn_ou[MAXSTRLEN]; + + /*#### new error code range */ + if(InitShell (argc, argv, hlconf_version, hlconf_sccs_id) < SUCCESS) + HError (4100, "HLConf: InitShell failed"); + + InitMem(); + InitMath(); + InitWave(); + InitLabel(); + InitAudio(); + if (InitParm() 0) { + if (NextArg() != STRINGARG) + HError (4119, "HLConf: Transcription file name expected"); + latfn = GetStrArg(); + if (latFileMask) { + if (!MaskMatch (latFileMask, latfn_in, latfn)) + HError(4119,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latFileMask, latfn); + } + else + strcpy (latfn_in, latfn); + + if (latOFileMask) { + if (!MaskMatch (latOFileMask, latfn_ou, latfn)) + HError(4119,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latOFileMask, latfn); + } + else + strcpy (latfn_ou, latfn); + + if (labOFileMask) { + if (!MaskMatch (labOFileMask, labfn_ou, latfn)) + HError(4119,"HLRescore: LABOFILEMASK %s has no match with segemnt %s", labOFileMask, latfn); + } + else + strcpy (labfn_ou, latfn); + + if (trace & T_TOP) { + printf ("File: %s\n", latfn); fflush(stdout); + } + if (confnet) + ConfNetClusterFile (latfn_in, latfn_ou, labfn_ou); + else { + abort(); +#if 0 + CalcConfFile (latfn); +#endif + } + } + + if (trace & T_MEM) { + printf("Memory State on Completion\n"); + PrintAllHeapStats(); + } + + return(0); +} + +void ClampACLike (Lattice *lat) +{ + int i; + LArc *la; + + for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) { + if (la->aclike > 0) { + HError (-4122, "HLattice: aclike of arc is %f setting to 0.0\n", la->aclike); /*#### GE fix errorcode */ + la->aclike = 0.0; + } + } +} + + +/* calc (unnormalalised!) posterior of arc */ +#define LArcPosterior(lat, la) (LNodeFw((la)->start) + \ + LArcTotLike((lat),(la)) + \ + LNodeBw((la)->end)) + + +#if 0 /* time dep conf scores -- stuff for Luis */ + +/* the main confidence calculation function, + assumes that forward/backward scores are stored in lattice + + confidence scores are stored in the lab->score fields of the Transcription +*/ +void CalcConfScores(Lattice *lat, LogDouble pX, Transcription *trans) +{ + LabList *labList; + LLink lab; + Word word; + LArc *la; + int i, l, nlab; + HTime t, framedur = 1e7; /* 100 frames per second #### fix this! */ + LogDouble postLA, postCor, postAll; + LogDouble confCor, maxPostCor; + int lenCor; + + labList = GetLabelList (trans, 1); + nlab = CountLabs (labList); + + /* for each word: */ + for (l = 1; l <= nlab; ++l) { + confCor = 0; + lenCor = 0; + maxPostCor = LZERO; + + lab = GetLabN (labList, l); + word = GetWord (&vocab, lab->labid, FALSE); + if (!word) + HError (9999, "HLConf: word %s not in dict", lab->labid->name); + + if (trace & T_TOP) { + printf ("%8.0f%8.0f", lab->start, lab->end); + printf (" %8s %5f\n", lab->labid->name, lab->score); + } + + /* for each frame in word: */ + for (t = lab->start / framedur; t <= lab->end / framedur; t += 0.01) { /* #### fix frame<->t ! */ + postCor = LZERO; + postAll = LZERO; + for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) { /* check all arcs */ + if ((la->start->time <= t) && (la->end->time > t)) { /* arc intersects time t? */ + postLA = LArcPosterior(lat, la) - pX; /* normalised posterior */ + + if (la->end->word->wordName == lab->labid) { /* correct word? */ + postCor = LAdd (postCor, postLA); + } + /* for sanity check */ + postAll = LAdd (postAll, postLA); + } + } + if (postCor != LZERO) { /* ignore frames with zero prob */ + confCor += postCor; + ++lenCor; + } + if (postCor > maxPostCor) + maxPostCor = postCor; + + if (trace & T_TOP) + printf ("t %.2f postCor: log %f lin %f postAll: log %f\n", t, postCor, L2F (postCor), postAll); + } + /* normalise by length (geom. mean) */ + if (lenCor > 0) + confCor = confCor / lenCor; + else + confCor = LZERO; + + + switch (confMethod) { + case CM_GEOMEAN: + lab->score = L2F (confCor); + break; + case CM_MAX: + lab->score = L2F (maxPostCor); + break; + default: + abort (); + break; + } + + if (trace & T_TOP) + printf ("confCor %f %f\n", lab->score, L2F (lab->score)); + } /* for each label */ +} + + +/* CalcConfFile (char *latfn) + + called once for each Lattice File + performs calculation of confidence scores based on time dependent posteriors + cf. [Evermann & Woodland:ICASSP2000] + */ +void CalcConfFile(char *latfn) +{ + Lattice *lat; + char lfn[MAXSTRLEN]; + FILE *lf; + Boolean isPipe; + Transcription *trans; + LogDouble pX; /* prob of data; p(X) = alpha(final) = beta(root) */ + + MakeFN(latfn, latInDir, latInExt, lfn); + + if ((lf = FOpen(lfn,NetFilter,&isPipe)) == NULL) + HError(4010,"HLConf: Cannot open Lattice file %s", lfn); + + lat = ReadLattice (lf, &latHeap, &vocab, FALSE, FALSE); + FClose(lf, isPipe); + + /*#### GE: why doesn't HRec:Readlattice exit as it should? + probably more HAPI rubbish... */ + if (!lat) + HError (9999, "HLConf: can't read lattice"); + + lat->lmscale = lmScale; + lat->wdpenalty = wordPen; + lat->acscale = acScale; + /*### add prscale? */ + + pX = LatForwBackw (lat, &latHeap); + +#if 0 + /* print lattice arcs with posteriors */ + for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) { + printf ("S %d E %d W %s post %lf\n", + la->start->n, la->end->n, + la->end->word->wordName->name, + LArcPosterior (lat,la)); + } +#endif + + /* read transcription */ + MakeFN(latfn, labInDir, labInExt, lfn); + trans = LOpen(&transHeap, lfn, ifmt); + + + /* calc conf scores */ + CalcConfScores (lat, pX, trans); + + /* write transcription */ + PrintTranscription (trans, "Transcription with conf scores"); + if (labOutForm!=NULL) + FormatTranscription (trans, + 1e7, FALSE, FALSE, /* #### fix frame stuff */ + strchr(labOutForm,'X')!=NULL, + strchr(labOutForm,'N')!=NULL,strchr(labOutForm,'S')!=NULL, + strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, + strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); + + MakeFN (latfn, labOutDir, labOutExt, lfn); + if (LSave (lfn, trans, ofmt) < SUCCESS) + HError (3214, "CalcConfFile: Cannot save file %s", lfn); + + if (trace & T_MEM) { + printf("Memory State after processing lattice\n"); + PrintAllHeapStats(); + } + ResetHeap (&transHeap); + ResetHeap (&latHeap); +} +#endif + + +/* ---------------------------------------------------------------------- */ +/* confusion network clustering */ + +/*------------------------------ data structures -------------------------*/ + +typedef struct _ConfNet ConfNet; +typedef struct _SCluster SCluster; +typedef struct _SCWord SCWord; + +struct _SCWord { + Word word; + LogDouble post; + HTime startT; + HTime endT; + SCWord *next; +}; + +struct _SCluster { + int n; + + SCWord *arc; + int *predBV; /* precedence relation BitVector */ + + HTime startT; /* boundary time of the cluster */ + HTime endT; /* i.e. 'outer' limits of link times */ +#ifdef DEBUG_SANITY + int status; /* used only for debugging */ +#endif + SCluster *next; + SCluster *prev; +}; + + +struct _ConfNet { + MemHeap *heap; + int nClusters; + int bvsize; + SCluster *head; /* doubly linked list with sentinels */ + SCluster *tail; +}; + + + +/*GE + entry for a linked list holding a pair of links that are + candidates for clustering and their distance score + */ + +typedef struct _ClusterCand ClusterCand; + +struct _ClusterCand { + int l1; + int l2; + SCluster *sc1; + SCluster *sc2; + double score; + ClusterCand *next; +}; + + +/*------------------------------ prototypes ----------------------------*/ +double SimScore(ConfNet *cn, SCluster *sc1, SCluster *sc2); + + +/*--------------------------bit vector code ----------------------------*/ + + +/* ### these should really be defined as macros. + unless the automatic inlining of the compiler works + really well that would be much faster. +*/ + +/* allocBV + return pointer to new, EMPTY bitvector +*/ +int *allocBV(MemHeap *heap, int size) +{ + int *bv; + + bv = (int *) New (heap, size * sizeof(int)); + memset(bv, 0, size * sizeof(int)); + + return (bv); +} + +/* copyBV + */ +void copyBV(int *src, int*dest, int size) +{ + int i; + + assert(dest); + for(i=0; i= end1)) + return 0.0; + else { + norm=end1-start1+end2-start2; + /* 1 |---------| + 2 |-- */ + if (start2 < start1 ) { + /* 1 |---------| + 2 |------| */ + if (end2 < end1) + return ((end2 - start1)/norm); + /* 1 |---------| + 2 |-------------| */ + else + return ((end1 - start1)/norm); + } + /* 1 |---------| + 2 |--- */ + else { + /* 1 |---------| + 2 |----| */ + if (end2 < end1) + return ((end2 - start2)/norm); + /* 1 |---------| + 2 |-------| */ + else + return ((end1 - start2)/norm); + } + } +} + +/* + overlapSC +*/ +HTime overlapSC(SCluster *sc1, SCluster *sc2) +{ + return overlapT(sc1->startT, sc1->endT, + sc2->startT, sc2->endT); +} + + + + + +/*-------------------------Levenshtein distance ------------------------*/ + +/*GE cell in grid for Levenshtein DP alignment -- from OracleLM.c */ +typedef struct cell +{ + int score; /* weighted alignment score */ + int ins; /* Total number of insertions */ + int del; /* Total number of deletions */ + int sub; /* Total number of substitutions */ + int cor; /* Total number of matches */ +} Cell; + +/*GE + - cache entry for phonetic similarity values + - currently setup as a linked list. + + ### This should really be a hash table + */ +typedef struct simcache { + Word w1; + Word w2; + double dist; + struct simcache *next; +} SimCacheEntry; + +#define MAXNPHONES 100 +static Cell **SimGrid=NULL; +static SimCacheEntry *SimCache=NULL; + + +/*GE + InitSimScore() + - initialise grid for DP alignment and cache for similarity scores + +*/ +void InitSimScore(void) +{ + int i; + + if ((SimGrid = (Cell **)malloc((MAXNPHONES+1)*sizeof(Cell*))) == NULL) + HError(4123,"InitSimScore: Cannot create grid pointer array"); + for (i=0; i<=MAXNPHONES;i++) + if ((SimGrid[i] = (Cell*) calloc(MAXNPHONES+1,sizeof(Cell))) == NULL) + HError(4123,"InitSimScore: Cannot create grid column %d",i); + + /* setup error weights */ + subPen = 2; + delPen = 1; + insPen = 1; + + SimCache=NULL; +} + +/*GE + CalcWER() + + - perform Levenshtein DP alignment of hyp & ref + - code mostly nicked from OracleLM.c + - changed to use global grid memory, to avoid tons of + alloc/free for each alignment +*/ +Cell CalcWER(Cell **grid, int hypSize, LabId *hyp, int refSize, LabId *ref) +{ + Cell *gridi,*gridi1,ans; + int h,d,v,i,j; + +#if 0 + if ((grid = (Cell **)malloc((hypSize+1)*sizeof(Cell*))) == NULL) + HError(2,"CalcWER: Cannot create grid pointer array"); + for (i=0; i<=hypSize;i++) + if ((grid[i] = (Cell*) calloc(refSize+1,sizeof(Cell))) == NULL) + HError(2,"CalcWER: Cannot create grid column %d",i); +#endif + + grid[0][0].score = grid[0][0].cor = 0; + grid[0][0].ins = grid[0][0].del = grid[0][0].sub = 0; + + for (i=1;i<=hypSize;i++) { + grid[i][0] = grid[i-1][0]; + grid[i][0].score += insPen; + ++grid[i][0].ins; + } + for (i=1;i<=refSize;i++) { + grid[0][i] = grid[0][i-1]; + grid[0][i].score += delPen; + ++grid[0][i].del; + } + + for (i=1;i<=hypSize;i++){ + gridi = grid[i]; gridi1 = grid[i-1]; + for (j=1;j<=refSize;j++) { + h = gridi1[j].score +insPen; + d = gridi1[j-1].score; + if (ref[j-1] != hyp[i-1]) + d += subPen; + v = gridi[j-1].score + delPen; + if (v <= d && v <= h) { + gridi[j] = gridi[j-1]; + gridi[j].score = v; + ++gridi[j].del; + } + else if (d <= h) { + gridi[j] = gridi1[j-1]; + gridi[j].score = d; + if (ref[j-1] == hyp[i-1]) + ++gridi[j].cor; + else + ++gridi[j].sub; + } + else { + gridi[j] = gridi1[j]; + gridi[j].score = h; + ++ gridi[j].ins; + } + } + } + + ans=grid[hypSize][refSize]; + +#if 0 + for (i=0;i<=hypSize;i++) + free(grid[i]); + free(grid); +#endif + + return(ans); +} + + +/*GE + PronDist() + + - calculate phonetic distance between canonical pronunciations + of two words. + */ +double PronDist(Pron p1, Pron p2) +{ + LabId *phones1, *phones2; + int np1, np2; + Cell align; + double dist=0.0; + + assert(p1); + assert(p2); + + phones1 = p1->phones; + np1 = p1->nphones; + phones2 = p2->phones; + np2 = p2->nphones; + +#if 0 + if (np2 > np1) { + npt=np1; pt=p1; + np1=np2; p1=p2; + np2=npt; p2=pt; + } +#endif + + assert (SimGrid); + align = CalcWER (SimGrid, np1, phones1, np2, phones2); + dist = align.score / ((double) (np1+np2)); + + assert (dist <= 1.0); + return (1.0 - dist); +} + +/*GE + WordDist() +*/ +double WordDist(Word w1, Word w2) +{ + double dist=0.0; + SimCacheEntry *sce; + Pron p1, p2; + + if (w1 == w2) + return (1.0); + + if (w1 < w2) { + Word temp; + temp = w1; + w1 = w2; + w2 = temp; + } + + /* look in cache */ + /* ### optimise by using hash tables */ + for (sce = SimCache; sce; sce = sce->next) + if ((sce->w1 == w1) && (sce->w2 == w2)) + break; + + if (sce) { + return (sce->dist); + } + + p1 = w1->pron; + p2 = w2->pron; + + if (p1 && p2) { + dist = PronDist(p1, p2); + } + else { +#if 1 + printf("NO Pronunciation for %s %s\n", w1->wordName->name, w2->wordName->name); +#endif + dist=1.0; + } + assert (dist >= 0.0); + + /* enter w1/w2 dist into cache */ + sce = (SimCacheEntry *) New (&gcheap, sizeof(SimCacheEntry)); + + sce->w1 = w1; + sce->w2 = w2; + sce->dist = dist; + sce->next = SimCache; + SimCache = sce; + + return (dist); +} + +/*GE + SimScore() + + - calculate similarity of two SClusters, handle averaging and stuff + */ +double SimScore(ConfNet *cn, SCluster *sc1, SCluster *sc2) +{ + int nw1, nw2, n; + SCWord *scw1, *scw2; + double wd=0, dist=0.0; + + n=0; + for (nw1=0, scw1 = sc1->arc; scw1; ++nw1, scw1 = scw1->next) { + for (nw2=0, scw2 = sc2->arc; scw2; ++nw2, scw2 = scw2->next) { + ++n; + /* + printf("SimScore: %s (%ld) %s (%ld)\n", + scw1->sym->name, scw1->sym, + scw2->sym->name, scw2->sym); + */ + wd = WordDist(scw1->word, scw2->word); + + /* #### EXPT: GE 25.11.99 */ + /* disabled for now. This should become a command line option */ +#if 1 + dist += wd * L2F(scw1->post) * L2F(scw2->post); +#else + dist += wd; +#endif +#if 0 + printf("SImScore %-9s %-9s %.4f %e %f %f ", + scw1->sym->name, scw2->sym->name, + wd, dist, + scw1->posterior, scw2->posterior); + if (getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize)) + printf(">>>\n"); + else + printf("\n"); + +#endif + } + } + +#if 0 + printf(" %f\n", (dist/n)); +#endif + return (dist/n); +} + + +/*------------------------------ the code ------------------------------*/ + +SCWord *NewSCWord(MemHeap *heap) +{ + SCWord *scw; + + scw = (SCWord *) New (heap, sizeof (SCWord)); + + scw->word = NULL; + scw->post = 0.0; + scw->startT = scw->endT = 0.0; + scw->next = NULL; + + return scw; +} + +SCluster *NewSCluster(MemHeap *heap) +{ + SCluster *sc; + + sc = (SCluster *) New (heap, sizeof (SCluster)); + sc->n = -1; + sc->arc = NULL; + sc->predBV = NULL; + sc->startT = sc->endT = 0.0; + sc->prev = sc->next = NULL; + + return sc; +} + +/* insert b after a */ +void InsertSC (SCluster *a, SCluster *b) +{ + + b->next = a->next ; + b->prev = a; + a->next = b; + b->next->prev = b; +} + + +void CalcPosteriors (Lattice *lat) +{ + /* store arc posteriors in la->score */ + int i; + LArc *la; + LogDouble pX; /* prob of data; p(X) = alpha(final) = beta(root) */ + + LatAttachInfo (&latHeap, sizeof (FBinfo), lat); + + pX = LatForwBackw (lat, LATFB_SUM); + + for (i = 0; i < lat->na; ++i) { + la = &lat->larcs[i]; + la->score = LArcPosterior (lat, la) - pX; + } +} + +static int la_cmp(const void *v1,const void *v2) +{ + LArc *la1,*la2; + HTime t; + + la1 = *((LArc **) v1); + la2 = *((LArc **) v2); + + t = la1->start->time - la2->start->time; + if (t != 0) { + if (t > 0) + return 1; + else + return -1; + } + else { + t = la1->end->time - la2->end->time; + if (t != 0) { + if (t > 0) + return 1; + else + return -1; + } + else + return ((int) (la1->end->word - la2->end->word)); + } +} + +ConfNet *InitConfNet (MemHeap *heap, Lattice *lat) +{ + /* init clustering: combine arcs with same word× into clusters */ + int i; + ConfNet *cn; + SCluster *sc; + LArc *la, **orderLA; + + /* alloc & init ConfNet */ + cn = (ConfNet *) New (heap, sizeof (ConfNet)); + cn->nClusters = 0; + cn->heap = heap; + + /* alloc sentinels */ + cn->head = NewSCluster (heap); + cn->tail = NewSCluster (heap); + cn->head->next = cn->tail; + cn->tail->prev = cn->head; + + + /*# sort arcs based on start time, end time & word ==> orderLA */ + orderLA = (LArc **) New (&gstack, lat->na * sizeof(LArc *)); + for (i = 0; i < lat->na; ++i) + orderLA[i] = &lat->larcs[i]; + + qsort (orderLA, lat->na, sizeof (LArc *), la_cmp); + + sc = NULL; + for (i = 0; i < lat->na; ++i) { + la = orderLA[i]; + if (sc && sc->arc->startT == la->start->time && + sc->arc->endT == la->end->time && + sc->arc->word == la->end->word) { /* combine */ + + /* add arc la to cluster sc */ + sc->arc->post = LAdd (sc->arc->post, la->score); + + la->hook = (Ptr) sc; + } + else { + sc = NewSCluster (heap); + InsertSC (cn->tail->prev, sc); /* insert at end */ + cn->nClusters++; + sc->n = cn->nClusters; + + /* put arc la into cluster sc */ + sc->arc = NewSCWord (heap); + sc->arc->word = la->end->word; + sc->arc->post = la->score; + sc->startT = sc->arc->startT = la->start->time; + sc->endT = sc->arc->endT = la->end->time; + + la->hook = (Ptr) sc; + } + } + + Dispose (&gstack, orderLA); + orderLA = NULL; + + /* initialise precedence bit vectors */ + + cn->bvsize = ceil(cn->nClusters / (8.0 * sizeof (int))); + i = 0; + for (sc = cn->head->next; sc != cn->tail; sc = sc->next) { + sc->predBV = allocBV (heap, cn->bvsize); + ++i; + } + assert (i == cn->nClusters); + + return cn; +} + + +void CalcPrecedence (ConfNet *cn, Lattice *lat) +{ + /* calculate predecessor list for each SCluster */ + int i; + LArc *la, *follLA; + SCluster *sc, *follSC; + LNode *ln, **topOrder; + + topOrder = (LNode **) New (&gstack, lat->nn * sizeof(LNode *)); + LatTopSort (lat, topOrder); + + for (i = 0; i < lat->nn; ++i) { + ln = topOrder[i]; /* traverse in topological order */ + + for (la = ln->foll; la; la = la->farc) { + assert (la->hook); + + sc = (SCluster *) la->hook; + /* for all outgoing arcs */ + for (follLA = la->end->foll; follLA; follLA = follLA->farc) { + follSC = (SCluster *) follLA->hook; + assert (sc != follSC); + + /* add sc's predecessors to follSC */ + orBV (sc->predBV, follSC->predBV, cn->bvsize); + /* add sc itself */ + setBV (sc->n, follSC->predBV, cn->bvsize); + } + + la->hook = NULL; /* sanity check */ + } + } + Dispose (&gstack, topOrder); +} + + +void PrintConfNet (ConfNet *cn) +{ + int i; + SCluster *sc; + SCWord *scw; + + sc = cn->head; + for (i = 0; i < cn->nClusters; ++i) { + sc = sc->next; + printf ("SC %d %.2f -- %.2f\n", sc->n, sc->startT, sc->endT); + for (scw = sc->arc; scw; scw = scw->next) { + printf (" SCW %.2f -- %.2f %f %s\n", scw->startT, scw->endT, + scw->post, scw->word->wordName->name); + } + } + assert (sc->next == cn->tail); +} + +/*GE + InsertCC() + - insert new cluster candidate into sorted list +*/ +ClusterCand *InsertCC(ClusterCand *cc1, + ClusterCand *ccList) +{ + ClusterCand *cc2; + + /* cc1 will be first */ + if (!ccList || (cc1->score > ccList->score)) { + cc1->next = ccList; + ccList = cc1; + } + else { + /* find cc2 after which cc1 is to be inserted */ + for (cc2 = ccList; + cc2->next && (cc2->next->score > cc1->score); + cc2 = cc2->next) + ; + cc1->next = cc2->next; + cc2->next = cc1; + } + + return ccList; +} + + +/*GE + FindClusterCand() + - generate list of candidate pairs for clustering + + pass 2: only consider clusters with the same word + pass 3: cluster different words + +*/ +ClusterCand *FindClusterCand(ConfNet *cn, int pass) +{ + SCluster *sc1, *sc2; + ClusterCand *cc, *ccList; + int i, j, count=0; + HTime overlap; + + /* consider all pairs of clusters (i,j) with ihead->next; i <= cn->nClusters; ++i, sc1 = sc1->next) { + for (j = i+1, sc2 = sc1->next; j <= cn->nClusters; ++j, sc2 = sc2->next) { + +#if 0 + printf("i %d %.2f -> %.2f ", sc1->n, sc1->startT, sc1->endT); + printf("j %d %.2f -> %.2f\n", sc2->n, sc2->startT, sc2->endT); +#endif + /* for inter=0 the clusters are still sorted by end time + optimised by stopping at + sc2->end->time start->time */ + + if (pass == 2 && (sc2->startT >= sc1->endT)) + break; + + assert(sc1->startT <= sc1->arc->startT); + assert(sc1->endT >= sc1->arc->endT); + assert(sc2->startT <= sc2->arc->startT); + assert(sc2->endT >= sc2->arc->endT); + + if ((pass >= 3) || (sc1->arc->word == sc2->arc->word)) { + overlap = overlapSC (sc1, sc2); + assert(overlap >= 0.0); + + if ((overlap > 0.0 || pass == 4) + && (!getBV(sc1->n, sc2->predBV, cn->bvsize) + && !getBV(sc2->n, sc1->predBV, cn->bvsize))) { + ++count; + cc = (ClusterCand *) New (cn->heap, sizeof(ClusterCand)); + + cc->l1 = i; + cc->l2 = j; + cc->sc1 = sc1; + cc->sc2 = sc2; + + switch (pass) { + case 2: + cc->score = overlap; + break; + case 3: + case 4: + cc->score = SimScore (cn, sc1, sc2); + break; + default: + abort(); + break; + } + if (trace&T_CN) + printf ("cluster %d %d %f\n", cc->l1, cc->l2, cc->score); + + ccList = InsertCC (cc, ccList); + } + } + } /* for j */ + } /* for i */ + + if (trace & T_CN) { + printf("FindClusterCandidate: found %d candidate pairs\n", count); + } + +#ifdef DEBUG_SANITY + for (clust1=clustList; clust1; clust1=clust1->next) + --count; + assert(count==0); +#endif + + return ccList; +} + + +/*GE + MergeSClusters() + + - merge two SClusters if they are different and not + in relation + - update precedence relation on all SClusters affected + - do NOT update the foll/pred pointers -- it's a wste of time + we rely on the precednce bitvectors instead. +*/ +int MergeSClusters (ConfNet *cn, SCluster *sc1, SCluster *sc2, Boolean merge) +{ + int i; + SCluster *sca; + /* SCList *scl1, *scl2; */ + + /* clusters equal? */ + if (sc1 == sc2) { + printf("clusters are equal!\n"); + return 0; /* not merged */ + } + + /* does sc1 preceed sc2 or vice versa? */ + if ((getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize))) { + printf("clusters are in order!\n"); + return 0; /* not merged */ + } + + +#if 0 + printf ("MERGE %d %.2f -- %.2f %d %.2f -- %.2f %s\n", sc1->n, sc1->startT, sc1->endT, + sc2->n, sc2->startT, sc2->endT, sc1->arc->word->wordName->name); +#endif + + if (merge) { + /* merge word entries */ + assert(sc1->arc->word == sc2->arc->word); + sc1->arc->post = LAdd(sc1->arc->post, sc2->arc->post); + } + else { + /* chain sc2's arcs to the end of sc1's linked list */ + /* ### this should really combine entries for the same word + ### can that really still happen at this stage?? */ + SCWord *t; + for (t = sc1->arc; t->next; t = t->next) + ; + t->next = sc2->arc; + sc2->arc = NULL; + } + + /* combine BVs */ + orBV (sc2->predBV, sc1->predBV, cn->bvsize); + /* now sc1->predBV lists all predecessors of sc1 AND sc2 + we add these to all successors of the old sc1 and sc2 + */ + + /* propagate BV forward from sc1: + : we don't need to worry about calculating transitive + : closures or traversing the clusters in the right order + : as we just add the predBV of sc2 to sc1's successors + : and vice versa. */ + /* this loop is hopefully faster than a recursive traversal */ + for (i = 0, sca = cn->head->next; i < cn->nClusters; ++i, sca = sca->next) { + if (sca->n >= 0) { + if (getBV (sc1->n, sca->predBV, cn->bvsize)){ + /* sca succeeds sc1! */ + orBV (sc1->predBV, sca->predBV, cn->bvsize); + /* setBV(sc2->n, sca->predBV, cn->bvsize); */ + } + if (getBV (sc2->n, sca->predBV, cn->bvsize)){ + /* sca succeeds sc2! */ + orBV (sc1->predBV, sca->predBV, cn->bvsize); + setBV (sc1->n, sca->predBV, cn->bvsize); + } + } + } + + /* deactivate sc2 */ + sc2->n = -1; + + + + /* update times */ + if (sc2->startT < sc1->startT) + sc1->startT = sc2->startT; + if (sc2->endT > sc1->endT) + sc1->endT = sc2->endT; + + + sc2->prev->next = sc2->next; + sc2->next->prev = sc2->prev; + + --cn->nClusters; + /* #### delete sc2 */ + + return 1; +} + +/*GE + UpdateClusterCand() + - loop over list of clustering candidates + and update all entries which were affected by + last merger (sca/scb) +*/ +ClusterCand *UpdateClusterCand(ConfNet *cn, ClusterCand *cl, + SCluster *sca, SCluster *scb) +{ + ClusterCand *cc1, *cc2, *newcc=NULL; + SCluster *sc1, *sc2; + double dist; + int count=0; + int ncount=0; + int dcount=0; + + for (cc1=cl; cc1; cc1=cc1->next) { + /* sc1 and sc2 were cluster HEADS before combining sca and scb */ + + sc1=cc1->sc1; + sc2=cc1->sc2; + ++count; + + if ((sc1==sca) || (sc2==sca) + ||(sc1==scb) || (sc2==scb)){ + /* entry was affected by last clustering */ + + if (sc1 == scb) + sc1 = cc1->sc1 = sca; + if (sc2 == scb) + sc2 = cc1->sc2 = sca; + + + if ((sc1 == sc2) + || getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize)) { + /* clusters are equal or in precedence => delete entry */ + cc1->l1 = cc1->l2=-1; + cc1->sc1 = cc1->sc2 = NULL; + ++dcount; + /* #### delete entry! */ + } + else { + /* calc new score */ + dist = SimScore(cn, sc1, sc2); + + cc2 = (ClusterCand *) New (cn->heap, sizeof(ClusterCand)); + + cc2->next = newcc; + cc2->l1 = sc1->n; + cc2->l2 = sc2->n; + cc2->sc1 = sc1; + cc2->sc2 = sc2; + + cc2->score = dist; + newcc = cc2; + + cc1->l1 = cc1->l2 = -1; + cc1->sc1 = cc1->sc2 = NULL; + /* #### delete entry! */ + + ++ncount; + } + } + } /* for cc1 */ + + + if (trace&T_CN) + printf("UCC: %d entries and %d new entries %d entries deleted\n", + count, ncount, dcount); + + /* ## maybe delete deactivated entries here, instead of skipping + them in ProcessClusterCand? + */ + + /* insert newcc entries into list */ + for(cc1 = newcc; cc1; cc1 = cc2) { + cc2 = cc1->next; + cc1->next = NULL; + cl = InsertCC (cc1, cl); + } + + count = 0; + for (cc1 = cl; cc1; cc1 = cc2) { + cc2 = cc1->next; + while (cc2 && (!cc2->sc1 || !cc2->sc2 + || (cc2->sc1 == cc1->sc1 && cc2->sc2 == cc1->sc2))) { + cc2 = cc2->next; + ++count; + } + cc1->next = cc2; + } + if (trace&T_CN) + printf ("purged %d entries\n", count); + + + return cl; +} + + +/* + ProcessClusterCand + +*/ +int ProcessClusterCand (ConfNet *cn, ClusterCand *ccList, int pass) +{ + ClusterCand *cc1, *cc2; + SCluster *sc1, *sc2; + int count; + + count=0; + for (cc1 = ccList; cc1; cc1 = cc2) { + if ((cc1->l1 != -1) && (cc1->l2 != -1)) { + + /* combine the two CLUSTERS corresponding to this entry */ + sc1 = cc1->sc1; + sc2 = cc1->sc2; + + cc2 = cc1->next; + + if ((sc1 != sc2) + && !(getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize))) { +#if 0 + printf("merge %d/%d %s (%.2f -- %.2f)", + clust1->l1, sc1->n, sc1->word->sym->name, + sc1->tstart, sc1->tend); + printf(" %d/%d %s (%.2f -- %.2f)\n", + clust1->l2, sc2->n, sc2->word->sym->name, + sc2->tstart, sc2->tend); +#endif + count += MergeSClusters (cn, sc1, sc2, pass==2 ? TRUE : FALSE); + + if (pass >= 2) /* #### maybe (inter>=1) ? */ + cc2 = UpdateClusterCand (cn, cc2, sc1, sc2); + } + else{ +#if 0 + printf("skip %d/%d %s %.2f -- %.2f j %d/%d %s %.2f -- %.2f\n", + clust1->l1, sc1->n, sc1->word->sym->name, + sc1->word->start, sc1->word->end, + clust1->l2, sc2->n, sc2->word->sym->name, + sc2->word->start, sc2->word->end); +#endif + } + } + else /* deactivated entry */ + cc2 = cc1->next; + + } + + if (trace&T_CN) + printf("ProcessClusterCand: combined %d links\n", count); + + return count; +} + + +void PruneConfNet (ConfNet *cn, LogDouble thresh) +{ + int pCount = 0; + SCluster *sc; + + for (sc = cn->head->next; sc != cn->tail; sc = sc->next) { + if (sc->arc->post < thresh) { + ++pCount; + sc->prev->next = sc->next; + sc->next->prev = sc->prev; + } + } + if (trace & T_CN) + printf ("PruneConfNet: pruned %d entries\n", pCount); + + cn->nClusters -= pCount; +} + + +/* sc_cmp + + helper function for SortConfNet, called from qsort() +*/ +static int bvSize = 0; /* hack! */ +static int sc_cmp(const void *v1,const void *v2) +{ + SCluster *sc1, *sc2; + + sc1 = *((SCluster **) v1); + sc2 = *((SCluster **) v2); + + if (getBV (sc1->n, sc2->predBV, bvSize)) + return -1; + else + return 1; +} + +/* + SortConfNet + + sort the SCluster in ConfNet into precedence order. +*/ +void SortConfNet (ConfNet *cn) +{ + int i; + SCluster **scArray, *sc1; + + scArray = (SCluster **) New (cn->heap, cn->nClusters * sizeof (SCluster *)); + for (i = 0, sc1 = cn->head->next; sc1 != cn->tail; sc1 = sc1->next, ++i) { + scArray[i] = sc1; + } + assert (i == cn->nClusters); + + if (cn->nClusters == 1) + return; /* no need to sort */ + + bvSize = cn->bvsize; + qsort (scArray, cn->nClusters, sizeof (SCluster *), sc_cmp); + + assert (cn->nClusters >= 1); + + cn->head->next = scArray[0]; + scArray[0]->prev = cn->head; + scArray[0]->next = scArray[1]; + for (i = 1; i < cn->nClusters-1; ++i) { + sc1 = scArray[i]; + sc1->prev = scArray[i-1]; + sc1->next = scArray[i+1]; + } + + i = cn->nClusters-1; + cn->tail->prev = scArray[i]; + scArray[i]->prev = scArray[i-1]; + scArray[i]->next = cn->tail; + + Dispose (cn->heap, scArray); + +#if 1 /* sanity check */ + /* check whether SClusters are in correct order */ + for (sc1 = cn->head->next; sc1 != cn->tail; sc1 = sc1->next) { + if ((sc1->prev != cn->head) + && (!getBV(sc1->prev->n, sc1->predBV, cn->bvsize))) { + printf("##### ERRROR sc %d does not precede sc %d\n", + sc1->prev->n, sc1->n); + } + } +#endif +} + + +ConfNet *ClusterLat2ConfNet (MemHeap *heap, Lattice *lat) +{ + ConfNet *cn; + ClusterCand *ccList; + + CalcPosteriors (lat); + + /* init clustering: combine arcs with same word× into clusters */ + cn = InitConfNet (heap, lat); + + CalcPrecedence (cn, lat); + + PruneConfNet (cn, -10.0); + + /* pass 2 */ + if (trace&T_CN) { + printf ("pass 2..."); + fflush (stdout); + } + ccList = FindClusterCand (cn, 2); + ProcessClusterCand (cn, ccList, 2); + + /* PruneConfNet (cn, -5.0); */ + PruneConfNet (cn, confNetPrune); + if (trace & T_CN) + PrintConfNet (cn); + + /* pass 3 */ + if (trace&T_CN) { + printf ("pass 3..."); + fflush (stdout); + } + ccList = FindClusterCand (cn, 3); + ProcessClusterCand (cn, ccList, 3); + + + /* pass 4 -- why do I need this? */ + ccList = FindClusterCand (cn, 4); + if (ccList) { + if (trace&T_CN) { + printf ("pass 4..."); + fflush (stdout); + } + ProcessClusterCand (cn, ccList, 3); + } + + if (trace&T_CN) { + printf ("done\n"); + fflush (stdout); + } + + SortConfNet (cn); + + if (trace&T_CN) + PrintConfNet (cn); + + return cn; +} + + +Transcription *TranscriptionFromConfNet (ConfNet *cn) +{ + Transcription *trans; + LabList *lList; + LLink lab; + SCluster *sc; + SCWord *scw, *bestSCW; + LogDouble logsum, bestSCWlogpost; + double post; + int i; + + trans = CreateTranscription (&transHeap); + lList = CreateLabelList (&transHeap, 0); + + sc = cn->head; + for (i = 0; i < cn->nClusters; ++i) { + sc = sc->next; + + bestSCW = NULL; + bestSCWlogpost = LZERO; + logsum = LZERO; + + /* find best word and calculate sum of posteriors */ + for (scw = sc->arc; scw; scw = scw->next) { + logsum = LAdd (logsum, scw->post); + if (scw->post > bestSCWlogpost) { + bestSCWlogpost = scw->post; + bestSCW = scw; + } + } + + post = L2F (bestSCWlogpost); + /* word more likely than deleting this SC alltogether? */ + if (post > (1 - L2F(logsum))) { + /* #### take outSym from first pron? */ + if (bestSCW->word->pron && bestSCW->word->pron->outSym) { + + lab = CreateLabel (&transHeap, 0); + lab->labid = bestSCW->word->pron->outSym; + lab->score = post; + lab->start = sc->startT * 1.0e7; + lab->end = sc->endT * 1.0e7; + + /* insert at end of label list */ + lab->pred = lList->tail->pred; + lab->succ = lList->tail; + lab->succ->pred = lab->pred->succ = lab; + } + } + } + assert (sc->next == cn->tail); + + /* fix times in lList */ + { + HTime nextstart=0.0; + for (lab = lList->head; lab; lab = lab->succ) { + if (lab->labid) { /* ignore sentinels */ + lab->start = nextstart; + + if(lab->succ->labid) + nextstart = lab->succ->start; + else + nextstart = lab->end; + + /* average current end and next start */ + lab->end = (lab->end + nextstart) / 2.0; + if (lab->end < lab->start) + lab->end = lab->start+1; + + nextstart = lab->end; + } + } + } + + AddLabelList (lList, trans); + return trans; +} + +void WriteConfnet (ConfNet *cn, char *fn) +{ + FILE *SCF; + Boolean isPipe; + SCluster *sc1; + SCWord *scw; + LogDouble sum; + int k; + + SCF=FOpen (fn, NetOFilter, &isPipe); + if (!SCF) + HError (4110, "cannot open scf file '%s'", fn); + + /* store number of Sausages */ + OutputIntField('N', cn->nClusters, FALSE, "%d", SCF); + fprintf(SCF, "\n"); + + /* for historical reasons the SCFiles contain the SClusters + in reverse order! */ + for (sc1 = cn->tail->prev; sc1 != cn->head; sc1 = sc1->prev) { + + /* store number of words in Sausage */ + sum=LZERO; + for (k = 0, scw = sc1->arc; scw; scw = scw->next) { + ++k; + sum = LAdd (sum, scw->post); + } + if ((sum < 0.0) && (addNullWord)) + ++k; + + OutputIntField('k', k, FALSE, "%d", SCF); + fprintf(SCF, "\n"); + + for (scw = sc1->arc; scw; scw = scw->next) { + if (fprintf(SCF, "W=%-19s ", + ReWriteString (scw->word->wordName->name, + NULL, ESCAPE_CHAR)) < 0) + HError (4114, "WriteConfnet: write failed on scf file"); + OutputFloatField('s', scw->startT, FALSE, "%-7.2f", SCF); + OutputFloatField('e', scw->endT, FALSE, "%-7.2f", SCF); + OutputFloatField('p', scw->post, FALSE, "%-9.5f", SCF); + fprintf(SCF, "\n"); + } + + if ((sum < 0.0) && (addNullWord)) { + /* output !NULL link */ + if (fprintf(SCF, "W=%-19s ", + ReWriteString(vocab.nullWord->wordName->name, + NULL, ESCAPE_CHAR)) < 0) + HError (4114, "WriteConfnet: write failed on scf file"); + OutputFloatField('s', sc1->arc->startT, FALSE, "%-7.2f", SCF); + OutputFloatField('e', sc1->arc->endT, FALSE, "%-7.2f", SCF); + OutputFloatField('p', LSub(0.0, sum), FALSE, "%-9.5f", SCF); + fprintf(SCF, "\n"); + } + } + + FClose (SCF, isPipe); +} + +void ConfNetClusterFile (char *latfn_in, char *latfn_ou, char *labfn_ou) +{ + Lattice *lat; + char lfn[MAXSTRLEN]; + FILE *lf; + Boolean isPipe; + ConfNet *cn; + Transcription *trans; + + if (trace & T_MEM) { + printf("Memory State before processing confnet\n"); + PrintAllHeapStats(); + } + + + MakeFN(latfn_in, latInDir, latInExt, lfn); + + if ((lf = FOpen(lfn,NetFilter,&isPipe)) == NULL) + HError(4110,"HLConf: Cannot open Lattice file %s", lfn); + + lat = ReadLattice (lf, &latHeap, &vocab, FALSE, FALSE); + FClose(lf, isPipe); + if (!lat) + HError (4113, "HLConf: can't read lattice"); + + /* cz277 - scale conf score */ + /*lat->lmscale = lmScale; + lat->wdpenalty = wordPen; + lat->acscale = acScale; + lat->prscale = prScale;*/ + lat->lmscale = lmScale * latScoreScale; + lat->wdpenalty = wordPen * latScoreScale; + lat->acscale = acScale * latScoreScale; + lat->prscale = prScale * latScoreScale; + + if (fixPronProb) + FixPronProbs (lat, &vocab); + + if (clampACLike) + ClampACLike (lat); + + LatCheck (lat); + + cn = ClusterLat2ConfNet (&cnHeap, lat); + + trans = TranscriptionFromConfNet (cn); + + /* save 1-best transcription */ + /* the following is from HVite/HDecode */ + if (trans) { + char labOutfn[MAXSTRLEN]; + + if (labOutForm != NULL) + FormatTranscription (trans, 100, FALSE, FALSE, /* #### fix frameDur! */ + strchr(labOutForm,'X')!=NULL, + strchr(labOutForm,'N')!=NULL,strchr(labOutForm,'S')!=NULL, + strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, + strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); + + MakeFN (labfn_ou, labOutDir, labOutExt, labOutfn); + + if (LSave (labOutfn, trans, ofmt) < SUCCESS) + HError(4114, "ConfNetClusterFile: Cannot save file %s", labOutfn); + if (trace & T_TRAN) { + PrintTranscription (trans, "1-best hypothesis"); + printf ("\n"); + } + } + + if (writeConfNet) { + char scfFN[MAXSTRLEN]; + + MakeFN (latfn_ou, labOutDir, "scf", scfFN); + + WriteConfnet (cn, scfFN); + + } + + if (trace & T_MEM) { + printf("Memory State after processing confnet\n"); + PrintAllHeapStats(); + } + + ResetHeap (&latHeap); + ResetHeap (&cnHeap); + ResetHeap (&transHeap); +} + + +/* ------------------------- End of HLConf.c ------------------------- */ + diff --git a/HTKTools/HLEd.c b/HTKTools/HLEd.c old mode 100644 new mode 100755 index bba9da3..fb06b92 --- a/HTKTools/HLEd.c +++ b/HTKTools/HLEd.c @@ -3,24 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLEd.c: Edit label file(s) */ +/* File: HLEd.c Edit label file(s) */ /* ----------------------------------------------------------- */ -char *hled_version = "!HVER!HLEd: 3.4.1 [CUED 12/03/09]"; -char *hled_vc_id = "$Id: HLEd.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; +char *hled_version = "!HVER!HLEd: 3.5.0 [CUED 12/10/15]"; +char *hled_vc_id = "$Id: HLEd.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -111,6 +127,9 @@ static Vocab vocab; /* And the associated vocab */ static MemHeap tempHeap; /* Storage for current file */ static MemHeap permHeap; /* Permanent storage */ +static char * labFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * labOFileMask = NULL; /* mask for reading lablels (lattices) */ + /* ------------------ Process Command Line ------------------------- */ /* Summary: print a summary of all HLEd commands */ @@ -285,24 +304,31 @@ int main(int argc, char *argv[]) void SetConfParms(void) { int i; + char buf[MAXSTRLEN]; nParm = GetConfig("HLED", TRUE, cParm, MAXGLOBS); if (nParm>0) { if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; } + if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { + labFileMask = CopyString(&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString(&gstack, buf); + } } /* Initialise: confparms, str->int map and memory */ void Initialise(void) { - int i; + long int i; char buf[MAXSTRLEN]; LabId labid; SetConfParms(); asterix = GetLabId("*",TRUE); for (i=1;i<=99;i++) { - sprintf(buf,"%d",i); + sprintf(buf,"%ld",i); labid=GetLabId(buf,TRUE); labid->aux=(void*) i; } @@ -553,11 +579,11 @@ void PrintScript(char *scriptFN) printf(" ]\n"); break; case SETLEV: - printf("Set Level to %d\n",(int)i->cmd.args[0]->aux); + printf("Set Level to %ld\n",(long int)i->cmd.args[0]->aux); break; case DELLEV: if (i->cmd.nArgs==1) - printf("Delete Level %d\n",(int)i->cmd.args[0]->aux); + printf("Delete Level %ld\n",(long int)i->cmd.args[0]->aux); else printf("Delete Current Level\n"); break; @@ -641,7 +667,8 @@ void ReadScript(char *scriptFn) ScriptItem *i, *tail=NULL; EdOp op; LabId id,args[MAXARGS]; - int n,nArgs; + int nArgs; + long int n; if(InitSource(scriptFn, &src, NoFilter)cmd.nArgs = ReadIdList(&src,i->cmd.args); if (i->cmd.nArgs!=1 || - (n=(int)i->cmd.args[0]->aux)<1 || n>99 ) + (n=(long int)i->cmd.args[0]->aux)<1 || n>99 ) HError(1230,"ReadScript: ML must have 1 arg between 1 and 99"); break; case DELLEV: @@ -737,7 +764,7 @@ void ReadScript(char *scriptFn) if (i->cmd.nArgs>1) HError(1230,"ReadScript: DL can have at most 1 arg"); if (i->cmd.nArgs==1 && - ((n=(int)i->cmd.args[0]->aux)<1 || n>99) ) + ((n=(long int)i->cmd.args[0]->aux)<1 || n>99) ) HError(1230,"ReadScript: DL arg must be between 1 and 99"); break; case SORT: @@ -1137,7 +1164,7 @@ LabId MakeTriId(LabId l, LabId c, LabId r) { char buf[MAXSTRLEN]; LabId item; - + if ( l!= NULL){ strcpy(buf,l->name); strcat(buf,"-"); strcat(buf,c->name); @@ -1373,7 +1400,9 @@ void EditFile(char *labfn) { ScriptItem *i; char outfn[255]; - int m,d,r,c,a,clev,nlev,list; + char lfn[MAXSTRLEN],buf[MAXSTRLEN],buf2[MAXSTRLEN],buf3[MAXSTRLEN]; + int m,d,r,c,a,nlev,list; + long int clev; Transcription *ct,*levs,*at; LabList *ll,*rl; LLink l; @@ -1381,7 +1410,14 @@ void EditFile(char *labfn) if (trace&T_TOP) { printf("Editing file: %s\n",labfn); fflush(stdout); } - ct = LOpen(&tempHeap,labfn,ifmt); + if (labFileMask != NULL ) { /* support for rescoring label masks */ + if (!MaskMatch(labFileMask,buf,labfn)) + HError(2319,"DoAlignment: mask %s has no match with segemnt %s",labFileMask,labfn); + MakeFN(buf,PathOf(labfn,buf2),ExtnOf(labfn,buf3),lfn); + } else { + strcpy (lfn, labfn); + } + ct = LOpen(&tempHeap,lfn,ifmt); at = CreateTranscription(&tempHeap); triStrip = FALSE; /* reset to default value */ @@ -1426,7 +1462,7 @@ void EditFile(char *labfn) d += DeleteOp(ll,i->cmd.args); break; case DELLEV: if (i->cmd.nArgs==1) - DeleteLevel(levs,(int)i->cmd.args[0]->aux); + DeleteLevel(levs,(long int)i->cmd.args[0]->aux); else DeleteLevel(levs,clev); break; @@ -1437,7 +1473,7 @@ void EditFile(char *labfn) case ISIL: a += ISilOp(ll,i->cmd.args); break; case SETLEV: - clev=(int)i->cmd.args[0]->aux; + clev=(long int)i->cmd.args[0]->aux; if (clev>nlev) { ll = NULL; HError(-1231,"EditLevel: Level %d does not exist",clev); @@ -1462,7 +1498,14 @@ void EditFile(char *labfn) AddLabelList(ll, at); } } - MakeFN(labfn,newDir,newExt,outfn); + if (labFileMask != NULL ) { /* support for rescoring label masks */ + char buf[MAXSTRLEN]; + if (!MaskMatch(labOFileMask,buf,labfn)) + HError(2319,"DoAlignment: mask %s has no match with segemnt %s",labOFileMask,labfn); + MakeFN(buf,newDir,newExt,outfn); + } else { + MakeFN(labfn,newDir,newExt,outfn); + } if (newLabs != NULL) for (clev=1;clev<=at->numLists;clev++) { ll=GetLabelList(at, clev); diff --git a/HTKTools/HLRescore.c b/HTKTools/HLRescore.c old mode 100644 new mode 100755 index e139c5c..bc8d582 --- a/HTKTools/HLRescore.c +++ b/HTKTools/HLRescore.c @@ -3,37 +3,41 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Gunnar Evermann */ /* */ -/* author: Gunnar Evermann */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLRescore.c: Lattice rescoring/pruning */ +/* File: HLRescore.c Lattice rescoring/pruning */ /* ----------------------------------------------------------- */ -/*#### todo: +/* TODO: - implement lattice oracle WER calculation - allow batch processing? */ -char *hlrescore_version = "!HVER!HLRescore: 3.4.1 [CUED 12/03/09]"; +char *hlrescore_version = "!HVER!HLRescore: 3.5.0 [CUED 12/10/15]"; char *hlrescore_vc_id = "$Id: HLRescore.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -43,6 +47,7 @@ char *hlrescore_vc_id = "$Id: HLRescore.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Ex #include "HLabel.h" #include "HAudio.h" #include "HParm.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -93,9 +98,9 @@ static char *wpNetFile = NULL; /* word pair LM network filename */ static Lattice *wpNet; /* the word level recognition network */ static Vocab vocab; /* wordlist or dictionary */ -static char *startWord; /* word at start of Lattice (!SENT_START) */ +static char *startWord="!SENT_START"; /* word at start of Lattice (!SENT_START) */ static LabId startLab; /* corresponding LabId */ -static char *endWord; /* word at end of Lattice (!SENT_END) */ +static char *endWord="!SENT_END"; /* word at end of Lattice (!SENT_END) */ static LabId endLab; /* corresponding LabId */ static LabId nullLab; /* !NULL LabId */ static char *startLMWord; /* word at start in LM () */ @@ -110,6 +115,11 @@ static LogDouble pruneOutThresh = - LZERO; /* beam for pruning (-u) */ static LogDouble pruneInArcsPerSec = 0.0; /* arcs per second threshold (-t) */ static LogDouble pruneOutArcsPerSec = 0.0; /* arcs per second threshold (-u) */ +static char *labFileMask = NULL; +static char *labOFileMask = NULL; +static char *latFileMask = NULL; +static char *latOFileMask = NULL; + /* operations to perform: */ static Boolean pruneInLat = FALSE; /* -t */ static Boolean writeLat = FALSE; /* -w */ @@ -131,8 +141,8 @@ static MemHeap transHeap; void SetConfParms (void); void ReportUsage (void); -void ProcessLattice (char *latfn); -void ProcessLabels (char *labfn); +void ProcessLattice (char *latfn_in, char *latfn_ou); +void ProcessLabels (char *labfn_in, char *labfn_ou); /* ---------------- Process Command Line ------------------------- */ @@ -157,6 +167,18 @@ void SetConfParms(void) endLMWord = CopyString (&gstack, buf); if (GetConfBool (cParm, nParm, "FIXBADLATS", &b)) fixBadLats = b; if (GetConfBool (cParm, nParm, "SORTLATTICE", &b)) sortLattice = b; + if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { + labFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATFILEMASK",buf)) { + latFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATOFILEMASK",buf)) { + latOFileMask = CopyString (&gstack, buf); + } } } @@ -457,20 +479,52 @@ int main(int argc, char *argv[]) if (NextArg() != STRINGARG) HError (4019, "HLRescore: Transcription file name expected"); if (!lab2Lat) { - latfn = GetStrArg(); + char latfn_in[MAXFNAMELEN]; + char latfn_ou[MAXFNAMELEN]; - if (trace & T_TOP) - printf ("File: %s\n", latfn); fflush(stdout); + latfn = GetStrArg(); + if (latFileMask) { + if (!MaskMatch (latFileMask, latfn_in, latfn)) + HError(2319,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latFileMask, latfn); + } + else + strcpy (latfn_in, latfn); + + if (latOFileMask) { + if (!MaskMatch (latOFileMask, latfn_ou, latfn)) + HError(2319,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latOFileMask, latfn); + } + else + strcpy (latfn_ou, latfn); + + if (trace & T_TOP) + printf ("File: %s\n", latfn); fflush(stdout); + + ProcessLattice (latfn_in, latfn_ou); + } else { + char labfn_in[MAXFNAMELEN]; + char labfn_ou[MAXFNAMELEN]; - ProcessLattice (latfn); - } - else { labfn = GetStrArg(); + if (labFileMask) { + if (!MaskMatch (labFileMask, labfn_in, labfn)) + HError(2319,"HLRescore: LABFILEMASK %s has no match with segemnt %s", labFileMask, labfn); + } + else + strcpy (labfn_in, labfn); + + if (labOFileMask) { + if (!MaskMatch (labOFileMask, labfn_ou, labfn)) + HError(2319,"HLRescore: LABOFILEMASK %s has no match with segemnt %s", labOFileMask, labfn); + } + else + strcpy (labfn_ou, labfn); if (trace & T_TOP) printf ("File: %s\n", labfn); fflush(stdout); - ProcessLabels (labfn); + /* obtain label using labfilename, but need to store lattice as original */ + ProcessLabels (labfn_in, labfn_ou); } } @@ -488,14 +542,14 @@ int main(int argc, char *argv[]) apply all the requested operations on lattice */ -void ProcessLattice (char *latfn) +void ProcessLattice (char *latfn_in, char *latfn_ou) { Lattice *lat; char lfn[MAXSTRLEN]; FILE *lf; Boolean isPipe; - MakeFN (latfn, latInDir, latInExt, lfn); + MakeFN (latfn_in, latInDir, latInExt, lfn); if ((lf = FOpen(lfn,NetFilter,&isPipe)) == NULL) HError(4010,"HLRescore: Cannot open Lattice file %s", lfn); @@ -559,7 +613,7 @@ void ProcessLattice (char *latfn) strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); - MakeFN (latfn, labOutDir, labOutExt, lfn); + MakeFN (latfn_ou, labOutDir, labOutExt, lfn); if (LSave (lfn, trans, ofmt) < SUCCESS) HError (4014, "ProcessLattice: Cannot save file %s", lfn); ResetHeap (&transHeap); @@ -587,7 +641,7 @@ void ProcessLattice (char *latfn) for(i=0, ln=lat->lnodes; inn; i++, ln++) ln->score=0.0; - MakeFN (latfn, labOutDir, latInExt, lfn); + MakeFN (latfn_ou, labOutDir, latInExt, lfn); lf = FOpen (lfn, NetOFilter, &isPipe); if (!lf) HError (4014, "ProcessLattice: Could not open file '%s' for lattice output", lfn); @@ -628,18 +682,17 @@ void ProcessLattice (char *latfn) apply all the requested operations on labels */ -void ProcessLabels (char *labfn) +void ProcessLabels (char *labfn_in, char *labfn_ou) { Lattice *lat; char lfn[MAXSTRLEN]; FILE *lf; Boolean isPipe; LabList *ll = NULL, *expll = NULL; - LLink l; Transcription *reftrans; int i, N; - MakeFN (labfn, labInDir, labInExt, lfn); + MakeFN (labfn_in, labInDir, labInExt, lfn); reftrans = LOpen(&labHeap, lfn, ifmt); if (reftrans->numLists >= 1) @@ -652,13 +705,13 @@ void ProcessLabels (char *labfn) /* add start and end word symbols if needed */ if (GetLabN(ll, 1)->labid != startLab) { - l = AddLabel(&labHeap, expll, startLab, 0.0, 0.0, 0.0); + AddLabel(&labHeap, expll, startLab, 0.0, 0.0, 0.0); } for (i=1; i<=N; i++) { - l = AddLabel(&labHeap, expll, GetLabN(ll, i)->labid, 0.0, 0.0, 0.0); + AddLabel(&labHeap, expll, GetLabN(ll, i)->labid, 0.0, 0.0, 0.0); } if (GetLabN(ll, 1)->labid != endLab) { - l = AddLabel(&labHeap, expll, endLab, 0.0, 0.0, 0.0); + AddLabel(&labHeap, expll, endLab, 0.0, 0.0, 0.0); } lat = LatticeFromLabels(expll, nullLab, &vocab, &labHeap); @@ -678,7 +731,7 @@ void ProcessLabels (char *labfn) if (trace & T_LAT) printf ("lattice size: %d nodes/ %d arcs\n", lat->nn, lat->na); - lat->utterance = labfn; + lat->utterance = labfn_ou; lat->vocab = dictfn; lat->voc = &vocab; lat->acscale = acScale; @@ -720,7 +773,7 @@ void ProcessLabels (char *labfn) strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); - MakeFN (labfn, labOutDir, labOutExt, lfn); + MakeFN (labfn_ou, labOutDir, labOutExt, lfn); if (LSave (lfn, trans, ofmt) < SUCCESS) HError (4014, "ProcessLattice: Cannot save file %s", lfn); ResetHeap (&transHeap); @@ -748,7 +801,7 @@ void ProcessLabels (char *labfn) for(i=0, ln=lat->lnodes; inn; i++, ln++) ln->score=0.0; - MakeFN (labfn, labOutDir, latInExt, lfn); + MakeFN (labfn_ou, labOutDir, latInExt, lfn); lf = FOpen (lfn, NetOFilter, &isPipe); if (!lf) HError (4014, "ProcessLattice: Could not open file '%s' for lattice output", lfn); @@ -785,9 +838,5 @@ void ProcessLabels (char *labfn) ResetHeap (&labHeap); } - -/* CC-mode style info for emacs - Local Variables: - c-file-style: "htk" - End: -*/ +/* ------------------------- End of HLRescore.c ------------------------- */ + diff --git a/HTKTools/HLStats.c b/HTKTools/HLStats.c old mode 100644 new mode 100755 index 6a43312..20a8d54 --- a/HTKTools/HLStats.c +++ b/HTKTools/HLStats.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLStats.c: gather statistics from transcriptions */ +/* File: HLStats.c Gather statistics from transcriptions */ /* ----------------------------------------------------------- */ -char *hlstats_version = "!HVER!HLStats: 3.4.1 [CUED 12/03/09]"; +char *hlstats_version = "!HVER!HLStats: 3.5.0 [CUED 12/10/15]"; char *hlstats_vc_id = "$Id: HLStats.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -31,6 +47,7 @@ char *hlstats_vc_id = "$Id: HLStats.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $" #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HDict.h" #include "HLM.h" @@ -366,7 +383,8 @@ void InitWordInfo(WordInfo *w, LabId id, Cntr *pCntr) /* InitStats: Create and init all necessary global accumulators */ void InitStats(char *listFn) { - int h,p,l; + int h; + long int l,p; MLink q,hm; HLink hmm; HMMSet *hset; @@ -420,7 +438,7 @@ void InitStats(char *listFn) if (hm==NULL || hmm->hook==0) HError(1390,"InitStats: No physical name found for %s", q->id->name); - InitWordInfo(lTab+l,q->id,pTab+(int)hmm->hook); + InitWordInfo(lTab+l,q->id,pTab+(long int)hmm->hook); l++; } qsort(lTab+1,lSize,sizeof(WordInfo),wd_cmp); @@ -489,13 +507,13 @@ void GatherStats(Transcription *t) if (l->labid==exitId) en--; /* Coerce previous labels to be enterId */ - for (i=0; iaux; - lt = lTab+(int)enterId->aux; ++lt->count; + for (i=0; iaux; + lt = lTab+(long int)enterId->aux; ++lt->count; /* Process actual labels in list */ for (i=st; i<=en; i++) { l = GetLabN(ll,i); - lab=(int)l->labid->aux; + lab=(int)(long int)l->labid->aux; dur = (float)(l->end - l->start)/10000.0; lt=lTab+lab; /* increment stats */ @@ -507,7 +525,7 @@ void GatherStats(Transcription *t) if (doBigram) { /* We ignore all transitions into enterId and exitId */ /* May wish to warn user about badly formed sentences */ - if (!(lab==(int)enterId->aux || (lab==(int)exitId->aux))) { + if (!(lab==(int)(long int)enterId->aux||(lab==(int)(long int)exitId->aux))){ for (j=ASIZE-1;j>0;j--) in[j]=in[j-1]; in[0]=lab; ae = GetAEntry(in,TRUE); @@ -518,11 +536,11 @@ void GatherStats(Transcription *t) /* Deal with transition into EXIT */ if (doBigram) { for (j=ASIZE-1;j>0;j--) in[j]=in[j-1]; - in[0]=(int)exitId->aux; + in[0]=(int)(long int)exitId->aux; ae = GetAEntry(in,TRUE); ae->count++; } - lt = lTab+(int)exitId->aux; ++lt->count; + lt = lTab+(long int)exitId->aux; ++lt->count; } /* ----------------------- Output Results -------------------- */ @@ -536,7 +554,7 @@ int CmpCntr(const void *p1, const void *p2) c1=(Cntr *)p1; c2=(Cntr *)p2; diff=c1->count-c2->count; - if (diff==0) return((int)c2->name->aux-(int)c1->name->aux); + if (diff==0) return((long int)c2->name->aux-(long int)c1->name->aux); else return(diff); } @@ -550,7 +568,7 @@ int CmpWordInfo(const void *p1, const void *p2) c1=(WordInfo *)p1; c2=(WordInfo *)p2; diff=c1->count-c2->count; - if (diff==0) return((int)c2->name->aux-(int)c1->name->aux); + if (diff==0) return((long int)c2->name->aux-(long int)c1->name->aux); else return(diff); } @@ -663,10 +681,10 @@ static float BuildNEntry(NEntry *ne,Vector boff,float bent) ne->nse=0; tot=cnt=0.0; bsum=1.0; - if (ne->word[0]!=(int)exitId->aux) + if (ne->word[0]!=(long int)exitId->aux) for (ae=(AEntry *) ne->user; ae!=NULL; ae=ae->link) { tot+=ae->count; - if (ae->word[0]!=0 && ae->word[0]!=(int)enterId->aux && + if (ae->word[0]!=0 && ae->word[0]!=(long int)enterId->aux && ae->count>bigThresh) cnt+=(ae->count-disCount),ne->nse++,bsum-=boff[ae->word[0]]; } @@ -680,7 +698,7 @@ static float BuildNEntry(NEntry *ne,Vector boff,float bent) bowt = (bsum>0.0) ? (1.0-cnt/tot)/bsum : 0.0; ent = (bowt>0.0) ? bowt*(bent-log2(bowt)) : 0.0; for (cse=ne->se,ae=(AEntry *) ne->user; ae!=NULL; ae=ae->link) - if (ae->word[0]!=0 && ae->word[0]!=(int)enterId->aux && + if (ae->word[0]!=0 && ae->word[0]!=(long int)enterId->aux && ae->count>bigThresh) { prob=((double)ae->count-disCount)/tot; cse->word=ae->word[0]; @@ -706,7 +724,8 @@ void OutputBoBigram(void) SEntry *se; AEntry **aelists; lmId ndx[NSIZE]; - int i,tot,counts[NSIZE+1]; + int tot,counts[NSIZE+1]; + long int i; double uent,ent,bent; lm.heap=&statHeap; @@ -723,7 +742,7 @@ void OutputBoBigram(void) RebuildAETab(aelists); /* Un-hash hashtable */ for (i=1,tot=0.0;i<=lSize;i++) { /* Calculate unigrams first */ - if (i==(int)enterId->aux) + if (i==(long int)enterId->aux) nglm->unigrams[i]=0.0; else if (lTab[i].countunigrams[i]=uniFloor; @@ -752,9 +771,9 @@ void OutputBoBigram(void) ent = BuildNEntry(ne,nglm->unigrams,uent); nglm->counts[2]+=ne->nse; if (trace&T_BIG) - if (i!=(int)exitId->aux){ - if (i==(int)enterId->aux) - bent+=nglm->unigrams[(int)exitId->aux]*ent; + if (i!=(long int)exitId->aux){ + if (i==(long int)enterId->aux) + bent+=nglm->unigrams[(long int)exitId->aux]*ent; else bent+=nglm->unigrams[i]*ent; printf(" %-20s - %4d foll, ent %6.3f [= %6.2f]\n", @@ -795,7 +814,8 @@ void OutputMatBigram(void) Vector vec; double vsum,fsum,tot,scale; double ent,bent,prob,fent; - int i,j,nf,tf=0,nu,tu=0,np,tp=0,tn=0; + int nf,tf=0,nu,tu=0,np,tp=0,tn=0; + long int i,j; lm.heap=&statHeap; lm.type=matBigram; @@ -826,7 +846,7 @@ void OutputMatBigram(void) ae->count=0; scale = (1.0 - fsum) / vsum; for (j=1;j<=lSize;j++) { - if (j==(int)enterId->aux) vec[j]=0.0; + if (j==(long int)enterId->aux) vec[j]=0.0; else if (tot==0.0) vec[j]=1.0/(lSize-1); else vec[j]=bigFloor; } @@ -848,7 +868,7 @@ void OutputMatBigram(void) ent += fent; nf--; np++; } - if (i!=(int)exitId->aux){ + if (i!=(long int)exitId->aux){ j=lTab[i].count; bent+=j*ent;tn+=j; if (tot==0.0) diff --git a/HTKTools/HList.c b/HTKTools/HList.c old mode 100644 new mode 100755 index 2d99f22..0ba3bfc --- a/HTKTools/HList.c +++ b/HTKTools/HList.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HList.c: List a Speech File or Audio Source */ +/* File: HList.c List a speech file or audio source */ /* ----------------------------------------------------------- */ -char *hlist_version = "!HVER!HList: 3.4.1 [CUED 12/03/09]"; -char *hlist_vc_id = "$Id: HList.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; +char *hlist_version = "!HVER!HList: 3.5.0 [CUED 12/10/15]"; +char *hlist_vc_id = "$Id: HList.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -44,6 +47,7 @@ char *hlist_vc_id = "$Id: HList.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" @@ -290,12 +294,13 @@ Boolean IsWave(char *srcFile) { FILE *f; long nSamp,sampP, hdrS; - short sampS,kind; + /*short sampS,kind;*/ + short kind; + unsigned short sampS; /* cz277 - cbu */ Boolean isPipe,bSwap,isWave; char buf[MAXSTRLEN]; ParmKind tgtPK=ANON; FileFormat srcFF=HTK; - Boolean isEXF; /* srcFile is extended file */ char actfname[MAXFNAMELEN]; /* actual filename */ long stIndex, enIndex; /* start and end indices */ @@ -307,7 +312,7 @@ Boolean IsWave(char *srcFile) if (tgtPK == ANON){ if ((srcFF == HTK || srcFF == ESIG) && srcFile != NULL){ strncpy (actfname, srcFile, MAXFNAMELEN); - isEXF = GetFileNameExt (srcFile, actfname, &stIndex, &enIndex); + GetFileNameExt (srcFile, actfname, &stIndex, &enIndex); if ((f = FOpen (actfname, WaveFilter, &isPipe)) == NULL) HError(1110,"IsWave: cannot open File %s",srcFile); diff --git a/HTKTools/HMMIRest.c b/HTKTools/HMMIRest.c old mode 100644 new mode 100755 index 0da6dfd..db90590 --- a/HTKTools/HMMIRest.c +++ b/HTKTools/HMMIRest.c @@ -32,7 +32,7 @@ char *hmmirest_version = "!HVER!HMMIRest: 3.4.1 [CUED 12/03/09]"; char *hmmirest_vc_id = "$Id: HMMIRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; - +char *toolname = "HMMIRest";/*ar527: for error reporting*/ #include "HShell.h" /* HMM ToolKit Modules */ #include "HMem.h" @@ -43,6 +43,7 @@ char *hmmirest_vc_id = "$Id: HMMIRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -307,14 +308,14 @@ void SetConfParms(void) if (!strcmp (buf, "DUMP")) updateMode = UPMODE_DUMP; else if (!strcmp (buf, "UPDATE")) updateMode = UPMODE_UPDATE; else if (!strcmp (buf, "BOTH")) updateMode = UPMODE_BOTH; - else HError(2319, "Unknown UPDATEMODE specified (must be DUMP, UPDATE or BOTH)"); + else HError(2719, "%s: Unknown UPDATEMODE specified (must be DUMP, UPDATE or BOTH)",toolname); } } - if (MPE && uFlagsMLE) HError(1, "Can't combine MPE with ML update of some parameters (code could be simply added)."); - if (MMIPrior && !THREEACCS) HError(999, "MMI Prior must be used in MPE update (THREEACCS)."); - if ((STATICPRIOR && PriorK==0.0) || (!STATICPRIOR && PriorK==1.0)) HError(999, "Specify either PRIORK or STATICPRIOR (PRIORK overwrites value given by STATICPRIOR)."); + if (MPE && uFlagsMLE) HError(2740, "%s: Can't combine MPE with ML update of some parameters (code could be simply added).",toolname); + if (MMIPrior && !THREEACCS) HError(2719, "%s: MMI Prior must be used in MPE update (THREEACCS).",toolname); + if ((STATICPRIOR && PriorK==0.0) || (!STATICPRIOR && PriorK==1.0)) HError(2719, "%s: Specify either PRIORK or STATICPRIOR (PRIORK overwrites value given by STATICPRIOR).",toolname); /* if(ISmoothTau && !ISmoothTauTransSet){ ISmoothTauTrans = 10; printf("Smoothing transitions with tau=%f since ISMOOTHTAUT not set\n",ISmoothTauTrans); } if(ISmoothTau && !ISmoothTauWeightsSet){ ISmoothTauTrans = 10; printf("Smoothing weights with tau=%f since ISMOOTHTAUW not set\n",ISmoothTauWeights); } */ } @@ -381,6 +382,9 @@ int main(int argc, char *argv[]) char datafn1[MAXSTRLEN], *datafn, *datafn2, *s, latfn[MAXSTRLEN], datafn_lat[MAXFNAMELEN]; Lattice *denLats[MAXLATS], *numLats[MAXLATS]; int latn; int maxSnt=0; + Boolean ldBinary=TRUE;/*replaces global in <= V3.4.1 HEREST variable; default value is the same as in HTRAIN*/ + /* from mjfg, cz277 - 141022 */ + Boolean sentFail=FALSE; void Initialise(char *hmmListFn); void UpdateModels(void); @@ -400,9 +404,9 @@ int main(int argc, char *argv[]) InitWave(); InitVQ(); InitModel(); - if(InitParm()avg correctness) */ - ReadInt(&src,&i,1,TRUE); /* i the number of timeperiods (MPE->num correct words).*/ + ReadFloat(&src,&x,1,ldBinary); /*x is the average log prob (MPE->avg correctness) */ + ReadInt(&src,&i,1,ldBinary); /* i the number of timeperiods (MPE->num correct words).*/ CloseSource( &src ); if(!MPE){ totalPr1 += x*i; totalT += i; } @@ -636,11 +642,11 @@ int main(int argc, char *argv[]) if(!ML_MODE){ /* ..Then load MMI acc. */ accfn = GetStrArg(); - if(!strstr(accfn,".acc.2")) HError(-1, "Expecting a *.acc.2 file, got %s", accfn); + if(!strstr(accfn,".acc.2")) HError(-2719, "%s: Expecting a *.acc.2 file, got %s", toolname, accfn); src=LoadAccsParallel(&hset, accfn, uFlagsAccs, 1); - ReadFloat(&src,&x,1,TRUE); /*!x must be the average log prob*/ - ReadInt(&src,&i,1,TRUE); /*!and i the number of timeperiods.*/ + ReadFloat(&src,&x,1,ldBinary); /*!x must be the average log prob*/ + ReadInt(&src,&i,1,ldBinary); /*!and i the number of timeperiods.*/ CloseSource( &src ); /*pr2 contains the MMI stats.*/ @@ -651,11 +657,11 @@ int main(int argc, char *argv[]) if(THREEACCS){ /* (MPE case). */ accfn = GetStrArg(); - if(!strstr(accfn, ".3")) HError(1, "Error, expecting a HDR?.acc.3 file, got %s", accfn); + if(!strstr(accfn, ".3")) HError(2719, "%s: Error, expecting a HDR?.acc.3 file, got %s", toolname,accfn); src=LoadAccsParallel(&hset, accfn, uFlagsAccs, 2/*third position(1st==0) of hset*/); /*src is the still-open file.*/ - ReadFloat(&src,&x,1,TRUE); /*!x must be the average log prob*/ - ReadInt(&src,&i,1,TRUE); /*!and i the number of timeperiods.*/ + ReadFloat(&src,&x,1,ldBinary); /*!x must be the average log prob*/ + ReadInt(&src,&i,1,ldBinary); /*!and i the number of timeperiods.*/ CloseSource( &src ); totalPr1 += x*i; totalT += i; @@ -665,11 +671,11 @@ int main(int argc, char *argv[]) if(MMIPrior){ /* (MPE case). */ accfn = GetStrArg(); - if(!strstr(accfn, ".4")) HError(1, "Error, expecting a HDR?.acc.4 file, got %s", accfn); + if(!strstr(accfn, ".4")) HError(2719, "%s: Error, expecting a HDR?.acc.4 file, got %s", toolname,accfn); src=LoadAccsParallel(&hset, accfn, uFlagsAccs, 3/*fourth position(1st==0) of hset*/); /*src is the still-open file.*/ - ReadFloat(&src,&x,1,TRUE); /*!x must be the average log prob*/ - ReadInt(&src,&i,1,TRUE); /*!and i the number of timeperiods.*/ + ReadFloat(&src,&x,1,ldBinary); /*!x must be the average log prob*/ + ReadInt(&src,&i,1,ldBinary); /*!and i the number of timeperiods.*/ CloseSource( &src ); /*pr3 contains the MMI stats.*/ @@ -680,14 +686,14 @@ int main(int argc, char *argv[]) Boolean isPipe; if(NextArg() != STRINGARG) - HError(2319,"HERest: data file name expected"); + HError(2719,"%s: data file name expected",toolname); if ( maxSnt != 0 && nSnt>maxSnt ) GetStrArg(); /*Pass over file. */ else { /* apply F-B. */ if (twoDataFiles){ if ((NumArgs() % 2) != 0) - HError(2319,"HERest: Odd num of training files for single pass training"); + HError(2719,"%s: Odd num of training files for single pass training",toolname); strcpy(datafn1,GetStrArg()); datafn = datafn1; datafn2 = GetStrArg(); } else { @@ -703,7 +709,7 @@ int main(int argc, char *argv[]) this can be used to discard extra info (various cluster IDs, etc) */ if (latFileMask) { if (!MaskMatch (latFileMask, datafn_lat, datafn)) - HError(2319,"HERest: LATFILEMASK %s has no match with segemnt %s", latFileMask, datafn); + HError(2719,"%s: LATFILEMASK %s has no match with segemnt %s", toolname, latFileMask, datafn); } else strcpy (datafn_lat, datafn); @@ -713,14 +719,14 @@ int main(int argc, char *argv[]) for(latn = 0; latn0); - if (parMode>0 || (parMode==0 && (updateMode&UPMODE_DUMP))){ MakeFN("HDR$.acc.1",newDir,NULL,newFn); f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs, 0); if(MPE){ /* .1 acc contains the MPE crit at the end. */ x = TotalCorr/TotalNWords; - WriteFloat(f, &x, 1, TRUE); - WriteInt(f, &TotalNWords, 1, TRUE); + WriteFloat(f, &x, 1, ldBinary); + WriteInt(f, &TotalNWords, 1, ldBinary); } else { x = totalPr1/totalT; - WriteFloat(f,&x,1,TRUE); - WriteInt(f,&totalT,1,TRUE); + WriteFloat(f,&x,1,ldBinary); + WriteInt(f,&totalT,1,ldBinary); } fclose( f ); @@ -845,8 +857,8 @@ int main(int argc, char *argv[]) MakeFN("HDR$.acc.2",newDir,NULL,newFn); f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs, 1); x = totalPr2/totalT; /*MMI den prob in either MMI or MPE case.*/ - WriteFloat(f,&x,1,TRUE); - WriteInt(f,&totalT,1,TRUE); + WriteFloat(f,&x,1,ldBinary); + WriteInt(f,&totalT,1,ldBinary); fclose( f ); } @@ -855,8 +867,8 @@ int main(int argc, char *argv[]) f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs,2/*3rd position (numbered 2) on hset1(during alignment);*/); x = totalPr1/totalT; /* This is where the MLE prob is stored. */ - WriteFloat(f, &x, 1, TRUE); - WriteInt(f, &totalT, 1, TRUE); + WriteFloat(f, &x, 1, ldBinary); + WriteInt(f, &totalT, 1, ldBinary); fclose( f ); } @@ -865,8 +877,8 @@ int main(int argc, char *argv[]) f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs, 3/*4th position (numbered 3) on hset1(during alignment);*/); x = totalPr3/totalT; /* This is where the MMI den prob is stored. */ - WriteFloat(f, &x, 1, TRUE); - WriteInt(f, &totalT, 1, TRUE); + WriteFloat(f, &x, 1, ldBinary); + WriteInt(f, &totalT, 1, ldBinary); fclose( f ); } @@ -884,6 +896,7 @@ int main(int argc, char *argv[]) if (updateMode&UPMODE_UPDATE) UpdateModels(); } + Exit(EXITSTATUS); return (0); /* keep compiler happy */ } @@ -898,7 +911,6 @@ void Initialise(char *hmmListFn) CreateHeap(&accStack, "accStore", MSTAK, 1, 1.0, 50000, 500000); CreateHeap(&latStack,"latStore", MSTAK, 1, 1.0, 50000, 500000); - /* Load HMMs and init HMMSet related global variables */ MakeHMMSet( &hset, hmmListFn ); LoadHMMSet( &hset,hmmDir,hmmExt); @@ -920,7 +932,6 @@ void Initialise(char *hmmListFn) ZeroAccsParallel(&hset, uFlagsAccs, NumAccs); } - P = hset.numPhyHMM; L = hset.numLogHMM; vSize = hset.vecSize; @@ -929,12 +940,12 @@ void Initialise(char *hmmListFn) hsKind = hset.hsKind; if(S > 1) - HError(-1, "HMMIRest: Code is intended to support multiple streams but code has not been debugged. Be warned!"); + HError(-2740, "%s: Code is intended to support multiple streams but code has not been debugged. Be warned!",toolname); /*Check that hset is the right kind.*/ if(!(hsKind == PLAINHS || hsKind == SHAREDHS || hsKind == TIEDHS)) - HError(1, "HMMIRest: hset kind not PLAIN or SHARED or TIED."); + HError(2730, "%s: hset kind not PLAIN or SHARED or TIED.",toolname); if((!(hset.ckind == NULLC)) && (!(hset.ckind == DIAGC))) - HError(1, "HMMIRest: cov kind not DIAGC."); + HError(2724, "%s: cov kind not DIAGC.",toolname); /* Additional code for the adaptation updates */ /*!Deleted*/ @@ -943,7 +954,6 @@ void Initialise(char *hmmListFn) InitialiseFBInfo(&fbInfo, &hset, uFlags|(uFlags&UPMEANS||uFlags&UPVARS ? UPMEANS|UPVARS : 0), twoDataFiles); /*That modification to uFlags means: if either mean or var is updated, accumulate both.*/ - /* Set the variance floor */ SetVFloor( &hset, vFloor, minVar); /*This sets the array minVar up... but it only works if minimum variances have been set within the hmmset (e.g, @@ -959,7 +969,7 @@ void Initialise(char *hmmListFn) if (xfInfo.inSpkrPat == NULL) xfInfo.inSpkrPat = xfInfo.outSpkrPat; if (xfInfo.paSpkrPat == NULL) xfInfo.paSpkrPat = xfInfo.outSpkrPat; if (uFlags != UPXFORM) - HError(999,"Can only update linear transforms OR model parameters!"); + HError(2719,"%s: Can only update linear transforms OR model parameters!",toolname); xfInfo.useOutXForm = TRUE; /* This initialises things - temporary hack - THINK!! */ CreateAdaptXForm(&hset, "tmp"); @@ -1019,14 +1029,14 @@ void StatReport(void) /*This is used by other programs so I have had to change i int px; if ((f = fopen(statFN,"w")) == NULL){ - HError(2311,"StatReport: Unable to open stats file %s",statFN); + HError(2711,"%s:StatReport: Unable to open stats file %s",toolname,statFN); return; } NewHMMScan(&hset,&hss); px=1; do { hmm = hss.hmm; - PrintStats(f,px,hmm,(int)hmm->hook); + PrintStats(f,px,hmm,(int)(unsigned long int)hmm->hook); px++; } while (GoNextHMM(&hss)); EndHMMScan(&hss); @@ -1060,9 +1070,9 @@ void FloorMixes(MixtureElem *mixes, int M, float floor) } nWeight++; } - if (fsum>1.0) HError(2327,"FloorMixes: Floor sum too large"); + if (fsum>1.0) HError(2727,"%s:FloorMixes: Floor sum too large",toolname); if (fsum == 0.0) return; /*all >= floor*/ - if (sum == 0.0) HError(2328,"FloorMixes: No mixture weights above floor"); + if (sum == 0.0) HError(2728,"%s:FloorMixes: No mixture weights above floor", toolname); /*all <= floor*/ scale = (1.0-fsum)/sum; /*fsum is the sum of floor * (no of vals <= floor), sum is sum of >= floor.*/ @@ -1089,9 +1099,9 @@ void FloorTMMixes(Vector mixes, int M, float floor) } nWeight++; } - if (fsum>1.0) HError(2327,"FloorTMMixes: Floor sum too large"); + if (fsum>1.0) HError(2727,"%s:FloorTMMixes: Floor sum too large",toolname); if (fsum == 0.0) return; - if (sum == 0.0) HError(2328,"FloorTMMixes: No mixture weights above floor"); + if (sum == 0.0) HError(2728,"%s:FloorTMMixes: No mixture weights above floor",toolname); scale = (1.0-fsum)/sum; for (m=1; m<=M; m++){ @@ -1117,9 +1127,9 @@ void FloorDProbs(ShortVec mixes, int M, float floor) mixes[m] = DProb2Short(floor); } } - if (fsum>1.0) HError(2327,"FloorDProbs: Floor sum too large"); + if (fsum>1.0) HError(2727,"%s:FloorDProbs: Floor sum too large",toolname); if (fsum == 0.0) return; - if (sum == 0.0) HError(2328,"FloorDProbs: No probabilities above floor"); + if (sum == 0.0) HError(2728,"%s:FloorDProbs: No probabilities above floor",toolname); scale = (1.0-fsum)/sum; for (m=1; m<=M; m++){ fltWt = Short2DProb(mixes[m]); @@ -1167,7 +1177,6 @@ void UpdateTrans(int px, HLink hmm) Vector NewWghts = CreateVector(&gstack, N); Vector OldWghts = CreateVector(&gstack, N); - ta1 = GetHook(hmm->transP); ta2 = (ML_MODE?NULL:ta1+1); ta3 = (THREEACCS?ta1+2:NULL); /*non-NULL in MPE case, where it is the ML accs. */ @@ -1183,7 +1192,7 @@ void UpdateTrans(int px, HLink hmm) UpdateWeightsOrTrans(N, ta1->tran[i], ta2?ta2->tran[i]:NULL, NewWghts, OldWghts, CTrans); for(j=1;j<=N;j++) if(NewWghts[i] == 0 && OldWghts[i] != 0) - HError(-1, "Transitions going to zero: advise setting e.g. ISMOOTHTAUT = 10 "); + HError(-2790, "%s: Transitions going to zero: advise setting e.g. ISMOOTHTAUT = 10 ",toolname); for(j=1;j<=N;j++) hmm->transP[i][j]=(NewWghts[j]>0.0?log(NewWghts[j]):LZERO); } @@ -1217,7 +1226,7 @@ float GiveDimMixD(MixPDF *mp, int k, int priortype){ va1=GetHook(mp->cov.var); va2=va1+1; } else - HError(999,"GiveMixD: Wrong prior type!"); + HError(2719,"%s:GiveMixD: Wrong prior type!",toolname); occ1=ma1->occ; occ2=ma2->occ; if(occ2==0 || (uFlagsMLE&UPVARS)) return 0; @@ -1256,7 +1265,7 @@ float GiveDimMixD(MixPDF *mp, int k, int priortype){ D=MAX(D,occ2*E); if(! FINITE(D)) - HError(1, "NaN in GiveMixD"); + HError(2791, "%s: NaN in GiveMixD",toolname); return D; } @@ -1281,7 +1290,7 @@ Boolean UpdateGauss(int stream, MixPDF *mp){ float D; int k; /* 3rd set of occs only required in MPE case where ML update has been specified for certain parms.. */ - float occ1,occ2,occ3,sqAcc1,sqAcc2,sqAcc3,Acc1,Acc2,Acc3, oldVar,newVar,newMean; + float occ1,occ2,occ3,sqAcc1,sqAcc2,sqAcc3,Acc1,Acc2,Acc3,newVar,newMean; int vSize = hset.swidth[stream]; Vector mean; Covariance cov; @@ -1306,18 +1315,18 @@ Boolean UpdateGauss(int stream, MixPDF *mp){ /* already checked that there is enough occupancy. */ - if(fabs(va1->occ - ma1->occ) > 0.1) HError(1, "Mean and variance occupation counts differ. Means and variances must not be separately tied."); + if(fabs(va1->occ - ma1->occ) > 0.1) HError(2792, "%s: Mean and variance occupation counts differ. Means and variances must not be separately tied.",toolname); if((va3 ? va3->occ : va1->occ) < MinOcc) return FALSE; /* if ML occ < MinOcc dont update. */ if(mp->ckind != DIAGC) - HError(999,"UpdateGauss: unknown ckind %d",mp->ckind); + HError(2724,"%s:UpdateGauss: covariance kind is not DIAGC",toolname); D= GiveMixD(mp,stream,0); /*Use constants on a mix level.*/ for (k=1; k<=vSize-hset.projSize; k++){ /*For each vector component.*/ - sqAcc1 = va1->cov.var[k]; sqAcc2 = va2?va2->cov.var[k]:0.0; sqAcc3 = va3?va3->cov.var[k]:0.0; oldVar = cov.var[k]; + sqAcc1 = va1->cov.var[k]; sqAcc2 = va2?va2->cov.var[k]:0.0; sqAcc3 = va3?va3->cov.var[k]:0.0; Acc1 = ma1->mu[k], Acc2 = ma2?ma2->mu[k]:0.0; Acc3 = ma3 ? ma3->mu[k]:0.0; newMean = @@ -1351,7 +1360,7 @@ Boolean UpdateGauss(int stream, MixPDF *mp){ void UpdateWeightsAndTrans(void){ HMMScanState hss; HLink hmm; - int px,n; + int px; void UpdateWeight(int s, StreamElem *ste); NewHMMScan(&hset,&hss); @@ -1368,10 +1377,6 @@ void UpdateWeightsAndTrans(void){ do{ void UpdateTrans(int px, HLink hmm); hmm=hss.hmm; - n = (int)hmm->hook; /*The number of training egs seen*/ - - /* n is NO LONGER USED. */ - if (uFlags & UPTRANS) UpdateTrans(px,hmm); px++; @@ -1391,7 +1396,7 @@ static void FixWeightsForICrit(float Tau, Boolean THREEACCS){ M = hss.M; wa_dst = (WtAcc*)hss.ste->hook; wa_src = (THREEACCS ? wa_dst+2 : wa_dst); /* THREEACCS should be true for the forseeable use of this. */ for(m=1;m<=M;m++) wa_dst->c[m] += Tau * (wa_src->occ ? wa_src->c[m]/wa_src->occ : 1/M); - if(!wa_src->occ) HError(-1, "wa_src->occ zero, in FixWeightsForICrit."); + if(!wa_src->occ) HError(-2793, "%s: Source mixture component weight is zero, in FixWeightsForICrit.",toolname); wa_dst->occ += Tau; } EndHMMScan(&hss); @@ -1532,7 +1537,7 @@ void AddPriorsFromPriorHMM(int dst_index, float Tau, float K, Boolean IsMMI, flo va_dst = ((VaAcc*)GetHook(mp->cov.var)) + dst_index; { - if(hss_prior.mp->ckind!=DIAGC) HError(1, "Wrong ckind in prior HMMSet."); + if(hss_prior.mp->ckind!=DIAGC) HError(2724, "%s: Wrong ckind in prior HMMSet.",toolname); for(i=1;i<=VectorSize(mp->mean);i++){ float srcmu = hss_prior.mp->mean[i], srcvar = srcmu*srcmu + hss_prior.mp->cov.var[i]; @@ -1598,13 +1603,13 @@ static void FixHMMForICrit(){ Boolean ISmoothingDone=FALSE; if(PriorTau>0||PriorK>0||PriorK>0||PriorTauTrans>0) { - if(!hset_prior_initialised) HError(-1, "Config indicates that you intend to use a prior model (-Hprior), but none supplied."); + if(!hset_prior_initialised) HError(-2719, "%s: Config indicates that you intend to use a prior model (-Hprior), but none supplied.",toolname); } else { - if(hset_prior_initialised) HError(1, "Config indicates that you are not making use of the prior model (-Hprior), which has been supplied."); + if(hset_prior_initialised) HError(2719, "%s: Config indicates that you are not making use of the prior model (-Hprior), which has been supplied.",toolname); } if(hset_prior_initialised){ /* Using a prior HMM set */ - if(hset.ckind == FULLC) HError(1, "Prior HMM set not supported with FULLC."); + if(hset.ckind == FULLC) HError(2731, "%s: Prior HMM set not supported with FULLC.",toolname); if(PriorTauWeights) SmoothWeightsFromPriorHMM(THREEACCS ? 2 : 0, PriorTauWeights); if(PriorTauTrans) SmoothTransFromPriorHMM(THREEACCS ? 2 : 0, PriorTauTrans); if (THREEACCS){ /* if MPE... */ @@ -1656,7 +1661,7 @@ void UpdateWeightsOrTrans(int M, float *acc1, float *acc2, float *mixes, float * /*if(fabs(objective-last_objective) < 1.0e-8*(fabs(objective)+fabs(last_objective)) || iter > 100) break; */ if(objective < last_objective && objective < last_last_objective && !(last_last_objective==0) && fabs(objective-last_objective) > fabs(objective)*0.0001 ) - HError(-1, "Objective not increasing: %f<%f,<%f", objective, last_objective, last_last_objective); + HError(-2794, "%s: Objective not increasing: %f<%f,<%f", toolname, objective, last_objective, last_last_objective); if(iter>100) break; /*this seems to work fine.*/ /*find max f_m*/ @@ -1699,7 +1704,7 @@ void UpdateWeight(int s, StreamElem *ste){ break; case TIEDHS: M = hset.tmRecs[s].nMix; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } if( (wa3?wa3->occ:wa1->occ) > MinOccWeights ){ /* more than MinOccWeights ML stats */ @@ -1713,14 +1718,14 @@ void UpdateWeight(int s, StreamElem *ste){ case TIEDHS: for(n=1;n<=M;n++) NewWghts[n] = OldWghts[n] = ste->spdf.tpdf[n]; break; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } if(uFlagsMLE & UPMIXES && wa2) for(n=1;n<=M;n++) wa2->c[n] = 0.0; UpdateWeightsOrTrans(M, wa1->c, wa2?wa2->c:NULL, NewWghts, OldWghts, CWeights); for(i=1;i<=M;i++) if(NewWghts[i] == 0 && OldWghts[i] != 0) - HError(-1, "Weights going to zero: advise setting e.g. ISMOOTHTAUW = 10 "); + HError(-2795, "%s: Weights going to zero: advise setting e.g. ISMOOTHTAUW = 10 ",toolname); switch (hsKind){ case PLAINHS: @@ -1734,7 +1739,7 @@ void UpdateWeight(int s, StreamElem *ste){ ste->spdf.tpdf[n]=(NewWghts[n] > MINMIX ? NewWghts[n] : 0.0); } break; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } Dispose(&gstack, NewWghts); /*disposes of both.*/ @@ -1747,7 +1752,7 @@ void UpdateWeight(int s, StreamElem *ste){ case TIEDHS: FloorTMMixes(ste->spdf.tpdf,M,mixWeightFloor); break; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } } } @@ -1773,7 +1778,7 @@ void FloorVars(HMMSet *hset1, int s){ int vsize; int i; if(!(hset1->hsKind==PLAINHS || hset1->hsKind==SHAREDHS)){ - HError(1, "Percentile var flooring not supported for this kind of hmm set. (e.g. tied.) should be easy."); + HError(2732, "%s: Percentile var flooring not supported for this kind of hmm set. (e.g. tied.) should be easy.",toolname); } else { float **varray; int M=0,m=0,floored=0,equal=0; @@ -1791,7 +1796,7 @@ void FloorVars(HMMSet *hset1, int s){ NewHMMScan(hset1,&hss1); while(GoNextMix(&hss1,FALSE)){ int k; - if(hss1.mp->ckind != DIAGC ) HError(1, "FloorVars expects DIAGC covariances. "); + if(hss1.mp->ckind != DIAGC ) HError(2733, "%s: FloorVars expects DIAGC covariances. ",toolname); for(k=1;k<=vsize;k++){ varray[k][m] = hss1.mp->cov.var[k]; @@ -1804,7 +1809,7 @@ void FloorVars(HMMSet *hset1, int s){ qsort((char *) varray[i], M, sizeof(float), fltcompare); } m=0; - if(varFloorPercent <=0 || varFloorPercent >= 100) HError(1, "varFloorPercent should be <100 and >0.."); + if(varFloorPercent <=0 || varFloorPercent >= 100) HError(2719, "%s: varFloorPercent should be <100 and >0..",toolname); NewHMMScan(hset1,&hss1); @@ -1854,8 +1859,7 @@ void UpdateModels(void) { /*Measure total occupancy and update Gaussians. */ double mlocc=0,numocc=0,denocc=0; int nMix=0,nLeft=0; - MuAcc *ma1,*ma2, *ma3; VaAcc *va1,*va2,*va3; - + MuAcc *ma1,*ma2, *ma3; if(hset.hsKind==PLAINHS || hset.hsKind==SHAREDHS){ NewHMMScan(&hset, &hss); @@ -1864,10 +1868,6 @@ void UpdateModels(void) ma2 = (ML_MODE?NULL:ma1+1); ma3 = (THREEACCS?ma1+2:NULL); - va1 = (VaAcc*)GetHook(hss.mp->cov.var); - va2 = (ML_MODE?NULL:va1+1); - va3 = (THREEACCS?va1+2:NULL); - numocc+=ma1->occ; if(ma2) denocc+=ma2->occ; if(ma3) mlocc+=ma3->occ; @@ -1884,10 +1884,6 @@ void UpdateModels(void) ma2 = (ML_MODE?NULL:ma1+1); ma3 = (THREEACCS?ma1+2:NULL); - va1 = (VaAcc*)GetHook(hss.mp->cov.var); - va2 = (ML_MODE?NULL:va1+1); - va3 = (THREEACCS?va1+2:NULL); - numocc+=ma1->occ; if(ma2) denocc+=ma2->occ; if(ma3) mlocc+=ma3->occ; @@ -1895,7 +1891,7 @@ void UpdateModels(void) if(UpdateGauss(s, hss.mp)) nMix++; else nLeft++; } } - } else HError(1, "Unknown hsetkind."); + } else HError(2730, "%s: Unknown hsetkind.",toolname); printf("Numocc=%f,Denocc=%f\n",numocc,denocc); } diff --git a/HTKTools/HNForward.c b/HTKTools/HNForward.c new file mode 100755 index 0000000..3a9691d --- /dev/null +++ b/HTKTools/HNForward.c @@ -0,0 +1,1123 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNForward.c ANN forwarding and evalutation program */ +/* ----------------------------------------------------------- */ + +char *hnforward_version = "!HVER!HNForward: 3.5.0 [cz277 12/10/15]"; +char *hnforward_vc_id = "$Id: HNForward.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +/* + This program is designed for evaluating or forwarding ANNs +*/ + +#include "config.h" +#ifdef IMKL +#include "mkl.h" +#endif +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HLabel.h" +#include "HAudio.h" +#include "HParm.h" +#include "HDict.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HUtil.h" +#include "HAdapt.h" +#include "HFB.h" +#include "HNet.h" /* for Lattice */ +#include "HLM.h" +#include "HLat.h" /* for Lattice */ +#include "HArc.h" +#include "HFBLat.h" +#include "HNCache.h" + +#include +#include +#include +/* -------------------------- Trace Flags & Vars ------------------------ */ + +/* Trace Flags */ +#define T_TOP 0001 /* Top level tracing */ +#define T_TIM 0002 /* Output timings */ +static int trace = 0; +#define EXIT_STATUS 0 /* Exit status */ + +/* -------------------------- Global Variables etc ---------------------- */ + +#define MAX(a, b) ((a)>(b)?(a):(b)) +#define MIN(a, b) ((a)<(b)?(a):(b)) +#define ABS(a) ((a)>0?(a):-(a)) +#define FINITE(x) (!isnan(x) && x<1.0e+30 && x>-1.0e+30) + +typedef struct _CriteriaInfo { + double cSampAcc; + double MMSEAcc; + double XENTAcc; + double MPEAcc; + double tUttAcc; + double tNWordAcc; + double tSampAcc; + double LLHAcc; + double LLHVal; + double NumLLHAcc; + double DenLLHAcc; + int MMIFRAcc; + double cSampAccMapMax; + double cSampAccMapSum; + double MMSEAccMapSum; + double XENTAccMapSum; + double LLHAccMapSum; + double LLHValMapSum; +} CriteriaInfo; + +typedef struct _SpeakerInfo{ /* list of spkr records */ + int uttCnt; /* utterance count associated with this speaker */ + CriteriaInfo criteria[SMAX]; /* criteriion values associated with this speaker */ + struct _SpeakerInfo *next; /* to the next speaker */ + char *name; /* current speaker name */ +} SpeakerInfo; + +static char *hmmListFn = NULL; /* model list filename (optional) */ +static char *hmmDir = NULL; /* directory to look for HMM def files */ +static char *hmmExt = NULL; /* HMM def file extension */ +static char *mappingFn = NULL; /* the name of target mapping file */ +static XFInfo xfInfo; /* transforms/adaptations */ +static HMMSet hset; /* the HMM set */ +static UPDSet uFlags = 0; /* */ + +static IntVec recVec = NULL; /* the vector contains hypothesis labels */ +static IntVec recVecLLH = NULL; +static IntVec recVecMapSum = NULL; /* the vector contains the mapped hypothesis labels */ +static IntVec recVecLLHMapSum = NULL; +static char *labDir = NULL; /* label (transcription) file directory */ +static char *labExt = "lab"; /* label file extension */ +static FileFormat dff = UNDEFF; /* data file format */ +static FileFormat lff = UNDEFF; /* label file format */ +static char *labFileMask = NULL; /* mask for reading labels */ +static Boolean useLLF = FALSE; /* use directory based LLF files instead of individual lattices */ + +static char *denLatDir[MAXLATS]; /* denominator lattices */ +static int nDenLats = 0; /* number of denominator lattices */ +static char *numLatDir[MAXLATS]; /* numerator-alignment lattices */ +static int nNumLats = 0; /* number of numerator lattices */ +static char *latExt = "lat"; /* lattice file extension */ +static char *latFileMask = NULL; /* mask for reading lattices */ +static char *latMask_Num = NULL; /* mask for reading numerator lattices */ +static char *latMask_Den = NULL; /* mask for reading denominator lattices */ +static char numLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for numerator lattices */ +static char denLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for denominator lattices */ +static Vocab vocab; /* fake vocabulary */ +static int corrIdx = 0; +static int recogIdx1 = 1; +static int recogIdx2 = 999; +static Boolean procNumLats; +static Boolean procDenLats; +static float probScale = 1.0; + +static ObjFunKind showObjFunKind = UNKOF; +static float minFrameConfMat = 0.0; +static FBLatInfo fbInfo; /* structure for forward-backward */ + +static CriteriaInfo criteriaAll[SMAX]; /* the value of the criteria functions for all data */ +static CriteriaInfo criteriaUtt[SMAX]; /* the value of the criteria functions for current utterance */ +static SpeakerInfo *speakerInfoHead = NULL; /* the header of the speaker info list */ +static int speakerCnt = 0; /* the total number of speakers */ +static int failedSpeakers = 0; /* num time speaker pattern failed to match */ + +static FILE *scriptIn = NULL; /* script file for input */ +static int scriptCntIn = 0; /* number of words in scriptIn */ +static FILE *scriptOut = NULL; /* script file for output */ +static int scriptCntOut = 0; /* number of words in scriptOut */ + +static LabelKind labelKind = NULLLK; /* the kind of the labels */ +static LabelInfo *labelInfo = NULL; /* the structure for the labels */ +static DataCache *cacheIn[SMAX]; /* the cache structures for the train set */ +static Observation obsIn; /* array of input observations */ +static Observation obsOut; /* array of output observation */ +static FileFormat tgtFF = HTK; /* the file format of the output data */ +static ParmKind tgtPK = USER; /*ANN;*/ /* ANN parmkind */ +/*static ParmBuf parmBuf;*/ /* parm buffer */ +static ParmBuf parmBuf; +/*static ParmBuf dstPBuf;*/ +static BufferInfo bufInfo; /* buffer info */ + +/* ------------------------- Global Options ----------------------------- */ + +static Boolean optHasLabMat = FALSE; /* whether do supervised learning or not (associated with NULLLK) */ +static Boolean optShowUttStats = FALSE; /* whether show criteria value for each utterance */ +static Boolean optGenANNFeas = FALSE; /* whether generate the ANN features or not */ +static Boolean optMapTarget = FALSE; /* do target mapping or not */ +static Boolean optIncNumInDen = TRUE; +static Boolean optShowSeqObjVal = FALSE; +static Boolean optShowFrameConfMat = FALSE; + +/* ------------------------------ Heaps --------------------------------- */ + +static MemHeap modelHeap; /* the memory heap for models */ +static MemHeap cacheHeap; /* the memory heap for data caches */ +static MemHeap transHeap; /* the memory heap for transcriptions */ +static MemHeap latHeap; /* the memory heap for lattices */ +static MemHeap feaHeap; + +/* -------------------- Configuration Parameters ------------------------ */ + +static ConfParam *cParm[MAXGLOBS]; /* configuration parameters */ +static int nParm = 0; /* total num params */ + +/* -------------------------- Prototypes -------------------------------- */ + + + +/* ----------------------- Process Command Line ------------------------- */ + +void SetConfParms(void) +{ + int intVal; + double doubleVal; + Boolean boolVal; + char buf[MAXSTRLEN], buf2[MAXSTRLEN]; + char *charPtr, *charPtr2; + + nParm = GetConfig("HNFORWARD", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) { + trace = intVal; + } + /* set evaluation criteria */ + if (GetConfStr(cParm, nParm, "EVALCRITERION", buf)) { + charPtr = buf; + while (charPtr != NULL) { + charPtr2 = strchr(charPtr, '|'); + if (charPtr2 != NULL) { + *charPtr2 = '\0'; + } + strcpy(buf2, charPtr); + if (charPtr2 != NULL) { + *charPtr2 = '|'; + ++charPtr2; + } + charPtr = charPtr2; + if (strcmp(buf2, "ML") == 0) { /* log-likelihood */ + showObjFunKind = showObjFunKind | MLOF; + } + else if ((strcmp(buf2, "MMI") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | MMIOF; + optShowSeqObjVal = TRUE; + } + else if (strcmp(buf2, "MMSE") == 0) { + showObjFunKind = showObjFunKind | MMSEOF; + } + else if ((strcmp(buf2, "MPE") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | MPEOF; + optShowSeqObjVal = TRUE; + } + /*else if ((strcmp(buf2, "MWE") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | MWEOF; + } + else if ((strcmp(buf2, "SMBR") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | SMBROF; + }*/ + else if (strcmp(buf2, "XENT") == 0) { + showObjFunKind = showObjFunKind | XENTOF; + } + } + } + /* set target file format */ + if (GetConfStr(cParm, nParm, "TARGETFORMAT", buf)) { + tgtFF = Str2Format(buf); + } + /* */ + if (GetConfBool(cParm, nParm, "SHOWFRAMECM", &boolVal)) { + optShowFrameConfMat = TRUE; + } + /* */ + if (GetConfFlt(cParm, nParm, "FRAMECMTHRES", &doubleVal)) { + minFrameConfMat = (float) doubleVal; + } + /* label file mask */ + if (GetConfStr(cParm, nParm, "LABFILEMASK", buf)) { + labFileMask = (char *) malloc(strlen(buf) + 1); + strcpy(labFileMask, buf); + } + /* lattice file mask */ + if (GetConfStr(cParm, nParm, "LATFILEMASK", buf)) { + latFileMask = (char *) malloc(strlen(buf) + 1); + strcpy(latFileMask, buf); + } + if (GetConfStr(cParm, nParm, "LATMASKNUM", buf)) { + latMask_Num = (char *) malloc(strlen(buf) + 1); + strcpy(latMask_Num, buf); + } + if (GetConfStr(cParm, nParm, "LATMASKDEN", buf)) { + latMask_Den = (char *) malloc(strlen(buf) + 1); + strcpy(latMask_Den, buf); + } + /* speaker adaptation mask */ + if (GetConfStr(cParm, nParm, "INXFORMMASK", buf)) { + xfInfo.inSpkrPat = (char *) malloc(strlen(buf) + 1); + strcpy(xfInfo.inSpkrPat, buf); + } + /*if (GetConfStr(cParm, nParm, "PAXFORMMASK", buf)) { + xfInfo.paSpkrPat = (char *) malloc(strlen(buf) + 1); + strcpy(xfInfo.paSpkrPat, buf); + }*/ + if (GetConfBool(cParm, nParm, "USELLF", &boolVal)) { + useLLF = boolVal; + } + if (GetConfBool(cParm, nParm, "INCNUMLATINDENLAT", &boolVal)) { + optIncNumInDen = boolVal; + } + } + +} + +void ReportUsage (void) +{ + printf("\nUSAGE: HNForward [options] [HMMList]\n\n"); + printf(" Option Default\n\n"); + printf(" -a Use input transformation off\n"); + printf(" -d s Dir to find HMM definitions current\n"); + printf(" -f Show utterance statistics off\n"); + printf(" -h s Speaker name pattern none\n"); + printf(" -l s Label kind [fea, lab, lat, null] null\n"); + printf(" -m s Target mapping file s off\n"); + printf(" -o s Extensions for new HMM files as src\n"); + printf(" -q s Directory for numerator lats [needed. May use >1 -q option]\n"); + printf(" -qp s Subdir pattern for numerator lats none\n"); + printf(" -r s Directory for denominator lats [needed. May use >1 -r option]\n"); + printf(" -rp s Subdir pattern for denominator lats none\n"); + printf(" -x s Extension for HMM files none\n"); + printf(" -N s Script file for forwarded data none\n"); + PrintStdOpts("BFGHIJLMSTX"); /* E, K removed */ + printf("\n\n"); +} + +/* */ +SpeakerInfo *GetSpeakerInfo(char *uttFN) { + char name[MAXSTRLEN]; + LabId id; + SpeakerInfo *sPtr, *tPtr; + Boolean found; + + found = MaskMatch(xfInfo.inSpkrPat, name, uttFN); + if (!found) { + ++failedSpeakers; + return NULL; + } + id = GetLabId(name, TRUE); + if (id->aux == 0) { + sPtr = (SpeakerInfo *) New(&gcheap, sizeof(SpeakerInfo)); + memset(&sPtr->criteria, 0, sizeof(CriteriaInfo) * SMAX); + sPtr->name = id->name; + sPtr->next = NULL; + id->aux = (Ptr) sPtr; + ++speakerCnt; + if (speakerInfoHead == NULL || strcmp(sPtr->name, speakerInfoHead->name) < 0) { + sPtr->next = speakerInfoHead; + speakerInfoHead = sPtr; + } + else { + for (tPtr = speakerInfoHead; tPtr != NULL; tPtr = tPtr->next) { + if (tPtr->next == NULL || strcmp(sPtr->name, tPtr->next->name) < 0) { + sPtr->next = tPtr->next; + tPtr->next = sPtr; + break; + } + } + } + } + else + sPtr = (SpeakerInfo *) id->aux; + + return sPtr; +} + +float CalApproxAvgBatchLikelhood(DataCache *cache, int batLen) { + LELink layerElem; + ANNSet *annSet; + int i, labTgt; + float llh = 0.0; + + annSet = cache->hmmSet->annSet; + layerElem = annSet->outLayers[cache->streamIdx]; + for (i = 0; i < batLen; ++i) { + labTgt = cache->labVec[i]; + llh += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + labTgt]; + } + llh /= batLen; + + return llh; +} + +/* */ +void AccCriteria(DataCache *cache, int batLen, CriteriaInfo *criteria) { + LELink layerElem; + int i, labTgt, recTgt, recTgtMapSum, recLLHTgt, recTgtLLHMapSum; + IntVec mapVec; + ANNSet *annSet; + + annSet = ((HMMSet *) cache->hmmSet)->annSet; + /* do accumulateion */ + layerElem = annSet->outLayers[cache->streamIdx]; + /* for tSamp */ + criteria->tSampAcc += batLen; + /* for accuracy */ + for (i = 1; i <= batLen; ++i) { + labTgt = cache->labVec[i]; + recTgt = recVec[i]; + if (labTgt == recTgt) { + ++criteria->cSampAcc; + } + /* for LLH values */ + if (showObjFunKind & MLOF) { + recLLHTgt = recVecLLH[i]; + if (labTgt == recLLHTgt) { + criteria->LLHVal += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + recLLHTgt]; + } + } + } + /* for mapped accuracy by max and sum*/ + if (optMapTarget) { + mapVec = hset.annSet->mapStruct->mapVectors[cache->streamIdx]; + for (i = 1; i <= batLen; ++i) { + labTgt = mapVec[cache->labVec[i] + 1]; + recTgtMapSum = recVecMapSum[i]; + if (labTgt == recTgtMapSum) { + ++criteria->cSampAccMapSum; + } + UpdateTargetMapStats(hset.annSet, labTgt, recTgtMapSum); + /* for LLH values */ + if (showObjFunKind & MLOF) { + recTgtLLHMapSum = recVecLLHMapSum[i]; + if (labTgt == recTgtLLHMapSum) { + criteria->LLHValMapSum += cache->hmmSet->annSet->mapStruct->llhMatMapSum[cache->streamIdx]->matElems[(i - 1) * hset.annSet->mapStruct->mappedTargetNum + recTgtMapSum]; + } + } + } + } + /* for MMSE */ + if (showObjFunKind & MMSEOF) { + criteria->MMSEAcc += CalMMSECriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->MMSEAccMapSum += CalMMSECriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } + /* for XENT */ + if (showObjFunKind & XENTOF) { + criteria->XENTAcc += CalXENTCriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->XENTAccMapSum += CalXENTCriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } + /* for ML? */ + if (FALSE && (showObjFunKind & MLOF) && (cache->streamIdx == 1)) { + criteria->LLHVal += fbInfo.pr; + } + + /* for MPE */ + if ((showObjFunKind & MPEOF) && (cache->streamIdx == 1)) { + criteria->MPEAcc += fbInfo.AvgCorr; + criteria->tNWordAcc += fbInfo.MPEFileLength; + } + /* for MMI */ + if ((showObjFunKind & MMIOF) && (cache->streamIdx == 1)) { + criteria->NumLLHAcc += fbInfo.latPr[corrIdx]; + criteria->DenLLHAcc += fbInfo.latPr[recogIdx1]; + } +} + +void PrintCriteria(CriteriaInfo *criteria) { + float accVal; + int cSampInt, tSampInt; + + cSampInt = (int) criteria->cSampAcc; + tSampInt = (int) criteria->tSampAcc; + accVal = criteria->cSampAcc / criteria->tSampAcc; + printf("\t\tAccuracy = %.2f%% [%d right out of %d samples]\n", accVal * 100.0, cSampInt, tSampInt); + + if (showObjFunKind & XENTOF) { + printf("\t\tCross Entropy = %.2f\n", criteria->XENTAcc / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMean Square Error = %.2f\n", criteria->MMSEAcc / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/frame = %e\n", criteria->LLHVal / criteria->tSampAcc); + } + + if (optMapTarget) { + printf("\n"); + /* for sum */ + cSampInt = (int) criteria->cSampAccMapSum; + accVal = criteria->cSampAccMapSum / criteria->tSampAcc; + printf("\t\tMapped Accuracy by Sum = %.2f%% [%d right out of %d samples]\n", accVal * 100.0, cSampInt, tSampInt); + if (showObjFunKind & XENTOF) { + printf("\t\tMapped Cross Entropy by Sum = %.2f\n", criteria->XENTAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMapped Mean Square Error by Sum = %.2f\n", criteria->MMSEAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/frame by Sum = %e\n", criteria->LLHValMapSum / criteria->tSampAcc); + } + printf("\n"); + /* show confusion matrices */ + if (optShowFrameConfMat) { + ShowMapConfusionMatrices(hset.annSet, 0.0); + /* rest counters */ + ClearMappedTargetCounters(hset.annSet); + } + } + fflush(stdout); +} + +ReturnStatus InitScriptOutFile(char *fn) { + char buf[MAXSTRLEN]; + + /*CheckFn(fn);*/ + if (optGenANNFeas) + HError(4220, "InitScriptOutFile: Only one output script file is allowed"); + optGenANNFeas = TRUE; + if ((scriptOut = fopen(fn, "r")) == NULL) + HError(4210, "InitScriptOutFile: Cannot open output script file %s", fn); + while (GetNextScpWord(scriptOut, buf) != NULL) + ++scriptCntOut; + rewind(scriptOut); + return SUCCESS; +} + +void Initialise(void) { + Boolean eSep; + int s, tgtSize; + short tgtSwidth[SMAX]; + + /* initialise the memory heaps */ + CreateHeap(&cacheHeap, "cache heap", CHEAP, 1, 0, 100000000, ULONG_MAX); + CreateHeap(&transHeap, "transcription heap", MSTAK, 1, 0, 8000, 80000); + CreateHeap(&latHeap, "lattice heap", MSTAK, 1, 1.0, 50000, 500000); + CreateHeap(&feaHeap, "feature heap", MSTAK, 1, 0, 100000, ULONG_MAX); + + /* load HMMs and HMMSet related global variables */ + if (trace & T_TOP) { + printf("Reading ANN models...\n"); + fflush(stdout); + } + if (hmmListFn != NULL && MakeHMMSet(&hset, hmmListFn) < SUCCESS) + HError(4200, "Initialise: MakeHMMSet failed"); + if (LoadHMMSet(&hset, hmmDir, hmmExt) < SUCCESS) + HError(4200, "Initialise: LoadHMMSet failed"); + if (hset.annSet == NULL) + HError(4200, "Initialise: No ANN model available"); + /* init train struct */ + if (optHasLabMat) + InitTrainInfo(&hset, TRUE, FALSE, FALSE, TRUE); + /* setup the mappings */ + if (optMapTarget) { + SetupStateInfoList(&hset); + if (SetupTargetMapList(&hset, mappingFn, 0) < SUCCESS) + HError(4200, "Initialise: Failed to load the target mapping file"); + InitMapStruct(&hset); + recVecMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + recVecLLHMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + /*ClearMappedTargetCounters(hset.annSet);*/ + } + CreateTmpNMat(hset.hmem); + + SetStreamWidths(hset.pkind, hset.vecSize, hset.swidth, &eSep); + if (trace & T_TOP) { + printf("ANN model structure:\n"); + ShowANNSet(&hset); + fflush(stdout); + } + + /* initialise adaptation */ + if (xfInfo.inSpkrPat == NULL) + xfInfo.inSpkrPat = xfInfo.outSpkrPat; + if (xfInfo.paSpkrPat == NULL) + xfInfo.paSpkrPat = xfInfo.outSpkrPat; + + /* initialise labels */ + if (labelKind != NULLLK) { + labelInfo = (LabelInfo *) New(&gcheap, sizeof(LabelInfo)); + memset(labelInfo, 0, sizeof(LabelInfo)); + labelInfo->labelKind = labelKind; + if ((labelKind & FEALK) != 0) { + /* MakeObservation(&gcheap, ...); */ + } + if ((labelKind & LABLK) != 0) { + labelInfo->labFileMask = labFileMask; + labelInfo->labDir = labDir; + labelInfo->labExt = labExt; + } + if ((labelKind & LATLK) != 0) { + /* The actual dict is not needed, only the structure; this relates to HNet and reading lattices. */ + InitVocab(&vocab); + labelInfo->latFileMask = latFileMask; + labelInfo->latMaskNum = latMask_Num; + labelInfo->numLatDir = numLatDir; + labelInfo->nNumLats = nNumLats; + labelInfo->numLatSubDirPat = numLatSubDirPat; + labelInfo->latMaskDen = latMask_Den; + labelInfo->denLatDir = denLatDir; + labelInfo->nDenLats = nDenLats; + labelInfo->denLatSubDirPat = denLatSubDirPat; + labelInfo->latExt = latExt; + labelInfo->vocab = (Ptr) &vocab; + labelInfo->useLLF = useLLF; + probScale = GetProbScale(); + labelInfo->incNumInDen = optIncNumInDen; + } + labelInfo->uFlags = uFlags; + } + if (optHasLabMat) { + recVec = CreateIntVec(&gcheap, GetNBatchSamples()); + recVecLLH = CreateIntVec(&gcheap, GetNBatchSamples()); + /* initialise the criteria */ + memset(&criteriaAll, 0, sizeof(CriteriaInfo) * SMAX); + } + + /* initialise the cache structures */ + obsIn = MakeObservation(&gcheap, hset.swidth, hset.pkind, FALSE, eSep); + scriptIn = GetTrainScript(&scriptCntIn); + if (trace & T_TOP) { + printf("%d utterances to process\n", scriptCntIn); + } + for (s = 1; s <= hset.swidth[0]; ++s) { + cacheIn[s] = CreateCache(&cacheHeap, scriptIn, scriptCntIn, &hset, &obsIn, s, GetDefaultNCacheSamples(), NONEVK, &xfInfo, labelInfo, TRUE); + } + + if ((labelKind & LATLK) != 0) { + InitialiseFBInfo(&fbInfo, &hset, cacheIn[1]->labelInfo->uFlags, FALSE); + for (s = 1; s <= hset.swidth[0]; ++s) { + fbInfo.llhMat[s] = hset.annSet->llhMat[s]; + fbInfo.occMat[s] = hset.annSet->outLayers[s]->yFeaMats[1]; /* cz277 - many */ + } + } + + /* set the output observation */ + if (optGenANNFeas) { + tgtSize = 0; + ZeroStreamWidths(hset.swidth[0], tgtSwidth); + for (s = 1; s <= hset.swidth[0]; ++s) { + tgtSwidth[s] = hset.annSet->outLayers[s]->nodeNum; + tgtSize += tgtSwidth[s]; + } + SetStreamWidths(tgtPK, tgtSize, tgtSwidth, &eSep); + obsOut = MakeObservation(&gcheap, tgtSwidth, tgtPK, FALSE, eSep); + } + +} + +void ShowCriteriaInfo(CriteriaInfo *criteria) { + int i, S; + + S = hset.swidth[0]; + for (i = 1; i <= S; ++i) { + if (S > 1) { + printf("Stream %d: ", i); + } + PrintCriteria(&criteria[i]); + } +} + +void LoadFeaMatToParmBuf(int nFrame) { + int s, i; + LELink layerElem; + + for (s = 1; s <= hset.swidth[0]; ++s) { + layerElem = hset.annSet->outLayers[s]; + for (i = 0; i < nFrame; ++i) { + /*for (j = 0; j < layerElem->nodeNum; ++j) { + obsOut.fv[s][j + 1] = (float) layerElem->yFeaMat->matElems[i * layerElem->nodeNum + j]; + }*/ + CopyNFloatSeg2FloatSeg(&layerElem->yFeaMats[1]->matElems[i * layerElem->nodeNum], layerElem->nodeNum, &obsOut.fv[s][1]); /* cz277 - many */ + AddToBuffer(parmBuf, obsOut); + } + } +} + +int main(int argc, char *argv[]) { + char *str; + char buf[MAXSTRLEN], uttName[MAXSTRLEN], fnbuf[MAXSTRLEN]; + clock_t stClock, edClock; + int i, S, nLoaded, sampCnt, batchCnt, tSampCnt, tUttCnt, uttCnt, uttLen; + Boolean finish = FALSE, skipOneUtt=FALSE, sentFail; + LELink layerElem; + SpeakerInfo *speakerInfo=NULL; + UttElem *uttElem; + Lattice *MPECorrLat = NULL; + + if (InitShell(argc, argv, hnforward_version, hnforward_vc_id) < SUCCESS) + HError(4200, "HNForward: InitShell failed"); + InitMem(); + InitMath(); + InitSigP(); + InitWave(); + InitLabel(); + InitAudio(); +#ifdef CUDA + InitCUDA(); +#endif + InitANNet(); + InitModel(); + if (InitParm() < SUCCESS) + HError(4200, "HNForward: InitParm failed"); + InitUtil(); + /* cz277 - xform */ + /*InitAdapt(&xfInfo);*/ + InitAdapt(); + InitXFInfo(&xfInfo); + + InitLat(); + InitNCache(); + + if (!InfoPrinted() && NumArgs() == 0) { + ReportUsage(); + } + if (NumArgs() == 0) { + Exit(0); + } + + CreateHeap(&modelHeap, "model heap", MSTAK, 1, 0.0, 100000000, ULONG_MAX); + CreateHMMSet(&hset, &modelHeap, TRUE); + SetConfParms(); + + /* load each command */ + while (NextArg() == SWITCHARG) { + str = GetSwtArg(); + /* set each option */ + switch (str[0]) { + case 'a': + xfInfo.useInXForm = TRUE; + break; + case 'd': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: HMM definition directory expected"); + hmmDir = GetStrArg(); + break; + case 'f': + optShowUttStats = TRUE; + break; + case 'h': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Speaker name pattern expected"); + xfInfo.outSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) { + xfInfo.inSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) + xfInfo.paSpkrPat = GetStrArg(); + } + if (NextArg() != SWITCHARG) + HError(4219, "HNForward: Cannot have -h as the last option"); + break; + case 'l': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label kind expected"); + str = GetStrArg(); + if (strcasecmp(str, "LAB") == 0 || strcasecmp(str, "LABEL") == 0) { + labelKind = LABLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "LAT") == 0 || strcasecmp(str, "LATTICE") == 0) { + labelKind = LATLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "FEA") == 0 || strcasecmp(str, "FEATURE") == 0) { + labelKind = FEALK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "NULL") == 0) { + labelKind = NULLLK; + optHasLabMat = FALSE; + } + else { + HError(4219, "HNForward: Unknown label kind"); + } + break; + case 'm': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Target mapping file expected"); + optMapTarget = TRUE; + mappingFn = GetStrArg(); + break; + case 'q': + if (strcmp(str, "q") == 0) { + numLatDir[nNumLats++] = GetStrArg(); + } + else if (strcmp(str, "qp") == 0) { + strcpy(numLatSubDirPat, GetStrArg()); + if (strchr(numLatSubDirPat, '%') == NULL) + HError(4219, "HNForward: Numerator lattice path mask invalid"); + } + else { + HError(4219, "HNForward: Unknown option %s", str); + } + break; + case 'r': + if (strcmp(str, "r") == 0) { + denLatDir[nDenLats++] = GetStrArg(); + } + else if (strcmp(str, "rp") == 0) { + strcpy(denLatSubDirPat, GetStrArg()); + if (strchr(denLatSubDirPat, '%') == NULL) + HError(4219, "HNForward: Denominator lattice path mask invalid"); + } + else { + HError(4219, "HNForward: Unknown option %s", str); + } + break; + case 'x': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: HMM file extension expected"); + hmmExt = GetStrArg(); + break; + /*case 'E': + if (NextArg() != STRINGARG) { + HError(4219, "HNForward: Parent transform directory expected"); + } + xfInfo.usePaXForm = TRUE; + xfInfo.paXFormDir = GetSrArg(); + if (NextArg() != STRINGARG) { + xfInfo.paXFormExt = GetStrArg(); + } + if (NextArg() != SWITCHARG) { + HError(4219, "HNForward: Cannot have -E as the last option"); + } + break;*/ + case 'F': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Data file format expected"); + if ((dff = Str2Format(GetStrArg())) == ALIEN) + HError(4219, "HNForward: Warnings ALIEN data file format set"); + break; + case 'G': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label file format expected"); + if ((lff = Str2Format(GetStrArg())) == ALIEN) + HError(4219, "HNForward: Warnings ALIEN label file format set"); + break; + case 'H': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: HMM macro file name expected"); + AddMMF(&hset, GetStrArg()); + break; + case 'I': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: MLF file name expected"); + LoadMasterFile(GetStrArg()); + break; + case 'J': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Input transform directory expected"); + AddInXFormDir(&hset, GetStrArg()); + if (NextArg() != STRINGARG) { + if (xfInfo.inXFormExt == NULL) + xfInfo.inXFormExt = GetStrArg(); + else + HError(4219, "HNForward: Only one input transform extension may be specified"); + } + if (NextArg() != SWITCHARG) + HError(4219, "HNForward: Cannot have -J as the last option"); + break; + case 'L': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label file directory expected"); + labDir = GetStrArg(); + break; + case 'N': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Output script file name expected"); + InitScriptOutFile(GetStrArg()); + break; + case 'Q': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Lattice extension expected"); + latExt = GetStrArg(); + break; + case 'T': + trace = GetChkedInt(0, 0100000, str); + break; + case 'X': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label file extension expected"); + labExt = GetStrArg(); + break; + default: + HError(4219, "HNForward: Unknown switch %s", str); + } + } + /* load hmmListFn (optional) */ + if (NextArg() == STRINGARG) + hmmListFn = GetStrArg(); + else if (NextArg() != NOARG) + HError(4219, "HNForward: Only an optional HMM list file is possible at the end of the command line"); + /* command check */ + if (NumArgs() == 0 || hset.numFiles == 0) + HError(4219, "HNForward: At least one input HMM file should be given"); + +#ifdef CUDA + StartCUDA(); +#endif + /* cz277 - 151020 */ +#ifdef MKL + StartMKL(); +#endif + /* initialise */ + Initialise(); +#ifdef CUDA + ShowGPUMemUsage(); +#endif + + stClock = 0; + edClock = 0; + stClock = clock(); + + /* forward each utterance */ + S = hset.swidth[0]; + batchCnt = 0; + tSampCnt = 0; + tUttCnt = 0; + /* init the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheIn[i]); + + /* process until all data are finished */ + printf("\n"); + printf("Evaluating ************************\n"); + printf("\tProcessing the evaluation set...\n"); + while (!finish) { + sampCnt = 0; + uttCnt = 1; + strcpy(uttName, GetCurUttName(cacheIn[1])); + uttLen = GetCurUttLen(cacheIn[1]); + uttElem = GetCurUttElem(cacheIn[1]); + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + if (optShowSeqObjVal) { + /*uttElem = GetCurUttElem(cacheIn[1]);*/ + if (uttElem->uttLen > GetNBatchSamples()) { + printf("HNForward: %d samples in utterance %s exceeds batch size %d\n", uttElem->uttLen, uttElem->uttName, GetNBatchSamples()); + skipOneUtt = TRUE; + } + else { + skipOneUtt = FALSE; + } + /* init fbInfo */ + fbInfo.T = uttElem->uttLen; + LoadXFormsFromUttElem(uttElem, &fbInfo); + fbInfo.uFlags = cacheIn[1]->labelInfo->uFlags; + } + if (optHasLabMat && optShowUttStats) + memset(&criteriaUtt, 0, sizeof(CriteriaInfo) * SMAX); + /* write the data, if needed */ + if (optGenANNFeas) { + str = GetStrArg(); + strcpy(fnbuf, str); + parmBuf = OpenBuffer(&feaHeap, fnbuf, 50, UNDEFF, TRI_UNDEF, TRI_UNDEF); + GetBufferInfo(parmBuf, &bufInfo); + bufInfo.tgtPK = tgtPK; + CloseBuffer(parmBuf); + parmBuf = EmptyBuffer(&feaHeap, uttLen, obsOut, bufInfo); + /*CopyParmBufInfo(srcPBuf, dstPBuf);*/ + } + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheIn[i], &nLoaded, &uttCnt); + /* cz277 - mtload */ + /*UpdateCacheStatus(cacheIn[i]);*/ + LoadCacheData(cacheIn[i]); + } + /* whether skip this utterance or not */ + if (optShowSeqObjVal && skipOneUtt) + continue; + /* forward propagation */ + ForwardProp(hset.annSet, nLoaded, cacheIn[1]->CMDVecPL); + sentFail = FALSE; + /* synchronise the data */ + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + /* convert posteriors to llh */ + if ((showObjFunKind & MLOF) || optShowSeqObjVal) { + ApplyLogTrans(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, hset.annSet->llhMat[i]); /* cz277 - many */ + AddNVectorTargetPen(hset.annSet->llhMat[i], hset.annSet->penVec[i], nLoaded, hset.annSet->llhMat[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->llhMat[i]); +#endif + } + /* for mapped targets */ + if (optMapTarget) { + UpdateOutMatMapSum(hset.annSet, nLoaded, i); + /* convert posteriors to llh */ + if (showObjFunKind & MLOF) { + ApplyLogTrans(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, hset.annSet->mapStruct->llhMatMapSum[i]); + AddNVectorTargetPen(hset.annSet->mapStruct->llhMatMapSum[i], hset.annSet->mapStruct->penVecMapSum[i], nLoaded, hset.annSet->mapStruct->llhMatMapSum[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->llhMatMapSum[i]); +#endif + } +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->outMatMapSum[i]); +#endif + } +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->yFeaMats[1]); /* cz277 - many */ +#endif + } + /* for sequence processing */ + if (optShowSeqObjVal) { + if (procNumLats) { + LoadNumLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, NULL)) { + FBLatSecondPass(&fbInfo, corrIdx, 999); + sentFail = FALSE; + } + else { + sentFail = TRUE; + } + } + if (procDenLats) { + if (showObjFunKind & MPEOF) { + /*MPECorrLat = fbInfo.aInfo->lat[0];*/ + MPECorrLat = uttElem->numLats[0]; + } + else { + MPECorrLat = NULL; + } + LoadDenLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, MPECorrLat)) { + FBLatSecondPass(&fbInfo, recogIdx1, recogIdx2); + sentFail = FALSE; + } + else { + sentFail = TRUE; + } + } + } + /* compute the criteria */ + if (optHasLabMat) { + if (xfInfo.inSpkrPat != NULL) { + speakerInfo = GetSpeakerInfo(uttName); + } + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + FindMaxElement(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, recVec); /* cz277 - many */ + if (showObjFunKind & MLOF) { + FindMaxElement(hset.annSet->llhMat[i], nLoaded, layerElem->nodeNum, recVecLLH); + } + if (optMapTarget) { + FindMaxElement(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecMapSum); + if (showObjFunKind & MLOF) { + FindMaxElement(hset.annSet->mapStruct->llhMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecLLHMapSum); + } + UpdateLabMatMapSum(hset.annSet, nLoaded, i); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->labMatMapSum[i]); +#endif + } + if (!sentFail) { + AccCriteria(cacheIn[i], nLoaded, &criteriaAll[i]); + if (optShowUttStats) { + AccCriteria(cacheIn[i], nLoaded, &criteriaUtt[i]); + } + if (xfInfo.inSpkrPat != NULL) { + if(speakerInfo==NULL) + HError(4214, "HNForward: Speaker info not set"); + AccCriteria(cacheIn[i], nLoaded, &speakerInfo->criteria[i]); + } + } + } + } + /* write the data, if needed */ + if (optGenANNFeas) + LoadFeaMatToParmBuf(nLoaded); + /* update the statistics */ + batchCnt += 1; + + sampCnt += nLoaded; + tSampCnt += nLoaded; + } + if (optHasLabMat && optShowUttStats) { + printf("\t\tShow criterion values for %s:\n", uttName); + ShowCriteriaInfo(criteriaUtt); + } + /* write the data, if needed */ + if (optGenANNFeas) { + GetNextScpWord(scriptOut, buf); + if (SaveBuffer(parmBuf, buf, tgtFF) < SUCCESS) + HError(4214, "HNForward: Could not save parm file %s", buf); + /*CloseBuffer(parmBuf);*/ + /*printf("%s --> %s\n", uttName, buf);*/ + ResetHeap(&feaHeap); + } + /* cz277 - mtload */ + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheIn[i]); + tUttCnt += 1; + } + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* show criteria */ + if (optHasLabMat) { + printf("\t\tShow criterion values for all data:\n"); + ShowCriteriaInfo(criteriaAll); + } + + /* forwarding finished */ + edClock = clock(); + if (trace & T_TIM) + printf("\t\tTime cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + + /* free ANNSet */ + FreeANNSet(&hset); + for (i = 1; i <= S; ++i) + FreeCache(cacheIn[i]); + +#ifdef CUDA + StopCUDA(); +#endif + + Exit(EXIT_STATUS); + return 0; +} + + +/* ----------------------------------------------------------- */ +/* END: HNForward.c */ +/* ----------------------------------------------------------- */ + diff --git a/HTKTools/HNTrainSGD.c b/HTKTools/HNTrainSGD.c new file mode 100755 index 0000000..e2711b3 --- /dev/null +++ b/HTKTools/HNTrainSGD.c @@ -0,0 +1,3347 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNTrainSGD.c SGD based ANN model training program */ +/* ----------------------------------------------------------- */ + +char *hntrainsgd_version = "!HVER!HNTrainSGD: 3.5.0 [CUED 12/10/15]"; +char *hntrainsgd_vc_id = "$Id: HNTrainSGD.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +/* + This program is used to train various ANN models based on + SGD using a single machine. +*/ + +#include "config.h" +#ifdef IMKL +#include "mkl.h" +#endif +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HLabel.h" +#include "HAudio.h" +#include "HParm.h" +#include "HDict.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HUtil.h" +#include "HAdapt.h" +#include "HFB.h" +#include "HNet.h" /* for Lattice */ +#include "HLM.h" +#include "HLat.h" /* for Lattice */ +#include "HArc.h" +#include "HFBLat.h" +#include "HExactMPE.h" +#include "HNCache.h" + +#include +#include +#include +#include + +/* -------------------------- Trace Flags & Vars ------------------------ */ + +/* Trace Flags */ +#define T_TOP 0001 /* Top level tracing */ +#define T_TIM 0002 /* Output timings */ +#define T_SCH 0004 /* Scheduler behavior tracing */ +static int trace = 0; +#define EXIT_STATUS 0 /* Exit status */ + +/* -------------------------- Global Variables etc ---------------------- */ + +#define MAX(a, b) ((a)>(b)?(a):(b)) +#define MIN(a, b) ((a)<(b)?(a):(b)) +#define ABS(a) ((a)>0?(a):-(a)) +#define FINITE(x) (!isnan(x) && x<1.0e+30 && x>-1.0e+30) + +enum _TrainMode {FRAMETM, SEQTM}; +typedef enum _TrainMode TrainMode; + +enum _LRSchdKind {ADAGRADSK, EXPSK, LISTSK, NEWBOBSK}; +typedef enum _LRSchdKind LRSchdKind; + +enum _NewBobCrt {ACCNBC, MAPACCNBC, LLHVALNBC, MAPLLHVALNBC}; +typedef enum _NewBobCrt NewBobCrt; + +enum _BatchUpdateKind {BATLEVEL, UTTLEVEL}; +typedef enum _BatchUpdateKind BatchUpdateKind; + +typedef struct _CriteriaInfo { + double cSampAcc; + double MMSEAcc; + double XENTAcc; + double MPEAcc; + double tUttAcc; + double tNWordAcc; + double tSampAcc; + double LLHAcc; + double LLHVal; + double NumLLHAcc; + double DenLLHAcc; + int MMIFRAcc; + double cSampAccMapMax; + double cSampAccMapSum; + double MMSEAccMapSum; + double XENTAccMapSum; + double LLHAccMapSum; + double LLHValMapSum; +} CriteriaInfo; + +typedef struct _ModelSetInfo *MSILink; + +typedef struct _ModelSetInfo { + char *baseDir; + char *hmmExt; + char *macExt; + char **macFN; + int macCnt; + float crtVal; + MSILink next; + MSILink prev; + int epochIdx; + int updtIdx; +} ModelSetInfo; + +/* for AdaGrad */ +static int AdaGrad_K = 1; /* the K value for AdaGrad learning rate scheduler */ +/* for Exponential */ +static float Exp_Gamma = 0.0; /* the gamma parameter for Exponential learning rate scheduler */ +static float Exp_TrSampIdx = 0.0; /* the number of samples proceeded for Exponential learning rate scheduler */ +static float Exp_Base = 10.0; /* eta * Exp_Base^{-1.0 * Exp_TrSampIdx / Exp_Gamma}*/ +/* for List */ +static Vector List_LRs; /* the learning rate(s) */ +/* for NewBob */ +static float NewBob_RampStart = 0.005; /* the min_derror_ramp_start parameter for NewBob learning rate scheduler */ +static float NewBob_Stop = 0.005; /* the min_derror_stop parameter for NewBob learning rate scheduler */ +static int NewBob_Status = 0; /* the status of NewBob (0: initia, 1: ramping) */ +static float NewBob_DecayFactor = 0.5; +static NewBobCrt NewBob_Crt = ACCNBC; /* */ + +static LRSchdKind schdKind = NEWBOBSK; /* the kind of the learning rate scheduler */ +static float initLR = 0.01; /* the initial learning rates */ +static float curNegLR; +static float minLR = 0.0; /* the lower learning rate threshold */ +static int minEpochNum = -1; /* the minimum number of epoch to run */ +static int maxEpochNum = -1; /* the maximum number of epoch to run */ + +/*static float momentum = 0.0;*/ /* the factor for momentum */ +/* cz277 - mmt */ +static Vector List_MMTs = NULL; +static Vector List_WeightDecay = NULL; + +/*static float weightDecay = 0.0; */ /* the factor for weight decay */ +static int epochOff = 1; /* current epoch offset */ +static float logObsvPrior = 0.0; /* logP(O) */ + +static char *hmmListFn = NULL; /* model list filename (optional) */ +static char *hmmDir = NULL; /* directory to look for HMM def files */ +static char *hmmExt = NULL; /* HMM def file extension */ +static char *mappingFn = NULL; /* the name of target mapping file */ +static XFInfo xfInfo; /* transforms/adaptations */ +static char *newDir = NULL; /* directory to store new HMM def files */ +static char *newExt = NULL; /* extension of new retrained HMM files */ +static UPDSet uFlags = UPTARGETPEN | UPANNPARAM;/* update flags */ +static Boolean saveBinary = FALSE; /* save output in binary */ +static HMMSet hset; /* the HMM set */ +static char *epcBaseDir = NULL; /* the base directory for epoch models (default: newDir) */ +static char *epcDirPref = "epoch"; /* the prefix of the subdirectory to store the model per epoch */ +static char *fnUpdate = "UPDATE"; /* the file name for update files */ +static char *fncurNegLR = "NEGLEARNRATE"; /* the file name for negative learning rates */ +static char *fnSquareGrad = "SQUAREGRAD"; /* the file name for sum of squared gradients */ +static char *fnLRSchd = "SCHEDULER"; /* the file name for learning rate scheduler */ +static int updateIndex = 0; + +static IntVec recVec = NULL; /* the vector contains hypothesis labels */ +static IntVec recVecLLH = NULL; +static IntVec recVecMapSum = NULL; /* the vector contains the mapped hypothesis labels */ +static IntVec recVecLLHMapSum = NULL; +static char *labDir = NULL; /* label (transcription) file directory */ +static char *labExt = "lab"; /* label file extension */ +static FileFormat dff = UNDEFF; /* data file format */ +static FileFormat lff = UNDEFF; /* label file format */ +static char *labFileMask = NULL; /* mask for reading labels */ +static Boolean useLLF = FALSE; /* use directory based LLF files instead of individual lattices */ + +static char *denLatDir[MAXLATS]; /* denominator lattices */ +static int nDenLats = 0; /* number of denominator lattices */ +static char *numLatDir[MAXLATS]; /* numerator-alignment lattices */ +static int nNumLats = 0; /* number of numerator lattices */ +static char *latExt = "lat"; /* lattice file extension */ +static char *latFileMask = NULL; /* mask for reading lattices */ +static char *latMask_Num = NULL; /* mask for reading numerator lattices */ +static char *latMask_Den = NULL; /* mask for reading denominator lattices */ +static char numLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for numerator lattices */ +static char denLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for denominator lattices */ +static Vocab vocab; /* fake vocabulary */ +static int corrIdx = 0; +static int recogIdx1 = 1; +static int recogIdx2 = 999; +static Boolean procNumLats; +static Boolean procDenLats; +static float probScale = 1.0; + +static ObjFunKind objfunKind = XENTOF; /* the objective function for the ANN models */ +static ObjFunKind showObjFunKind = UNKOF; +static ObjFunKind objfunFSmooth = XENTOF; +static float FSmoothH = 1.0; /* F-smoothing is used when FSmoothH != 1.0 */ +static ObjFunKind objfunISmooth = MLOF; +static float ISmoothTau = 0; +static float minOccFrameReject = 0.0; + +static Boolean initialHV = FALSE; /* wheter to do the initial held-out validation */ +static FILE *scriptTr = NULL; /* script file for train set */ +static int scriptCntTr = 0; /* number of words in scriptTr */ +static int tSampCntTr = 0; /* number of samples in scriptTr */ +static FILE *scriptHV = NULL; /* script file for held-out validation set if any */ +static int scriptCntHV = 0; /* number of words in scriptHo */ +static int tSampCntHV = 0; /* number of samples in scriptHV number of samples in scriptHV */ + +static FILE *scriptFLabTr = NULL; +static int scriptCntFLabTr = 0; +static int tSampCntFLabTr = 0; +static FILE *scriptFLabHV = NULL; +static int scriptCntFLabHV = 0; +static int tSampCntFLabHV = 0; + +static LabelKind labelKind = NULLLK; /* the kind of the labels */ +static LabelInfo *labelInfo = NULL; /* the structure for the labels */ +static BatchUpdateKind updtKind = BATLEVEL; /* the update kind */ +static int numPerUpdt = 1; /* update the parameters once per updtUnitNum batches/utterances */ +static DataCache *cacheTr[SMAX]; /* the cache structures for the train set */ +static DataCache *cacheHV[SMAX]; /* the cache structures for the held-out validation set */ +static Observation obs; /* array of Observations */ + +static ModelSetInfo inputMSI; /* the MSI with the input model set */ +static MSILink headMSI; /* the head pointer for the MSI list */ +static MSILink tailMSI; /* the tail pointer for the MSI list */ +static float newMSI_CrtVal; /* the temporary global variable for ModelSetInfo.crtVal*/ + +static char **macroFN; /* the macro file name list */ +int macroCnt = 0; /* the macro number */ +static FBLatInfo fbInfo; +static int NumAccs; +static float MinOccTrans = 10.0; /* Minimum numerator (ML) occupancy for a transition row */ +static float CTrans = 1.0; + +/* cz277 - semi */ +static int bgWaitNBatchPL = 0; /* the number of batches be held */ +static int edAccBatchLenPL = 0; /* the length of batch start to be held */ +static VisitKind visitKindHV = NONEVK; /* default visit kind for held-out validation */ + +/* cz277 - gradlim */ +static float gradientClip = 0.0; /* 0.32 */ +static float updateClip = 0.0; /* 0.32 */ +static float gradientL2Scale = 0.0; +static float updateL2Scale = 0.0; +/*static float actfunUpdtPosClip = 0.32; +static float actfunUpdtNegClip = -0.32; +static float wghtUpdtPosClip = 0.32; // suggested values: 1.6, 0.08, 0.02, 0.002 -> 800, 40, 10, 1 +static float wghtUpdtNegClip = -0.32; +static float biasUpdtPosClip = 0.32; +static float biasUpdtNegClip = -0.32;*/ +/* cz277 - max norm */ +static float weightL2NormBound = 0.0; /* suggested value: 1.0, 0.8, 0.6... */ +/* cz277 - pact */ +static int staticUpdtCode = 0; +static float clipScaleFactor = 0.0; + +/* ------------------------- Global Options ----------------------------- */ + +static Boolean optHasSSG = FALSE; /* whether the trainInfo has SSG structure */ +static Boolean optHasNLR = FALSE; /* whether the trainInfo has NLR structure */ +static Boolean optHasMMT = FALSE; /* whether has momentum (should save the update file) */ +static Boolean optHasLabMat = FALSE; /* whether do supervised learning or not (associated with NULLLK) */ +/*static Boolean optSeqTrain = FALSE;*/ /* whether sequence training or not */ +static TrainMode optTrainMode = FRAMETM; /* frame level training, by default */ +static Boolean optSavEpcMod = FALSE; /* whether saves the HMM files for each epoch */ +static Boolean optSavSchd = FALSE; /* whether saves the learning rate scheduler */ +static Boolean optMapTarget = FALSE; /* do target mapping or not */ +static Boolean optHasFSmooth = FALSE; +static Boolean optHasISmooth = FALSE; +static Boolean optFrameReject = FALSE; +static Boolean optIncNumInDen = TRUE; +/*static Boolean optActfunUpdtClip = TRUE; +static Boolean optWghtUpdtClip = FALSE; +static Boolean optBiasUpdtClip = FALSE;*/ +/*static Boolean optScaleClipByDepth = FALSE;*/ +/* cz277 - max norm */ +static Boolean optWeightL2Norm = FALSE; +/* cz277 - pact */ +static Boolean optDoStaticUpdt = FALSE; +/* general parameters */ +static Boolean optNormLearnRate = FALSE; /* whether to normalise the learning rates according to the updated samples */ +static Boolean optNormWeightDecay = FALSE; +static Boolean optNormMomentum = FALSE; +static Boolean optNormGradientClip = FALSE; +static Boolean optNormUpdateClip = FALSE; +static Boolean optNormL2GradientScale = FALSE; +static Boolean optNormL2UpdateScale = FALSE; + +/* ------------------------------ Heaps --------------------------------- */ + +static MemHeap modelHeap; /* the memory heap for models */ +static MemHeap cacheHeap; /* the memory heap for data caches */ +static MemHeap transHeap; /* the memory heap for transcriptions */ +static MemHeap latHeap; /* the memory heap for lattices */ +static MemHeap accHeap; /* the accumulated memory heap */ + +/* -------------------- Configuration Parameters ------------------------ */ + +static ConfParam *cParm[MAXGLOBS]; /* configuration parameters */ +static int nParm = 0; /* total num params */ +static ParmKind flabPK; +static short vecSizeFLab = 0; +static Observation obsFLab; /* array of Observations */ + +/* -------------------------- Prototypes -------------------------------- */ + + +/* ----------------------- Process Command Line ------------------------- */ + +static int ParseFloatConfStr(char *parmName, ConfParam *cpVal, Vector *resVec, float minVal, float maxVal) { + Vector confVec=NULL; + int numParm=0, intVal; + char buf[MAXSTRLEN], *charPtr; + + if (cpVal->kind == FltCKind) { + confVec = CreateVector(&gcheap, 1); + confVec[1] = cpVal->val.f; + if (confVec[1] < minVal || confVec[1] >= maxVal) + HError(4321, "ParseFloatConfStr: float %e of %s out of range", confVec[1], parmName); + numParm = 1; + } + else if (cpVal->kind == IntCKind) { + confVec = CreateVector(&gcheap, 1); + confVec[1] = cpVal->val.i; + if (confVec[1] < minVal || confVec[1] >= maxVal) + HError(4321, "ParseFloatConfStr: float %e of %s out of range", confVec[1], parmName); + numParm = 1; + } + else if (cpVal->kind == StrCKind) { + /* count for the number of tokens */ + numParm = 0; + strcpy(buf, cpVal->val.s); + charPtr = strtok(buf, ","); + while (charPtr != NULL) { + ++numParm; + charPtr = strtok(NULL, ","); + } + if (numParm == 0) + HError(4320, "ParseFloatConfStr: No token available for %s", parmName); + /* malloc a new vector */ + confVec = CreateVector(&gcheap, numParm); + intVal = 1; + /* convert each token */ + strcpy(buf, cpVal->val.s); + charPtr = strtok(buf, ","); + while (charPtr != NULL) { + confVec[intVal] = (float) atof(charPtr); + if (confVec[intVal] < minVal || confVec[intVal] >= maxVal) + HError(4321, "ParseFloatConfStr: float %e of %s out of range", confVec[intVal], parmName); + ++intVal; + charPtr = strtok(NULL, ","); + } + } + else + HError(4322, "ParseFloatConfStr: Wrong parameter type for %s", parmName); + + *resVec = confVec; + return numParm; +} + +void SetConfParms(void) +{ + int intVal; + double doubleVal; + Boolean boolVal; + char buf[MAXSTRLEN], buf2[MAXSTRLEN]; + char *charPtr, *charPtr2; + ConfParam *cpVal; + + /* initialise HNTrainSGD parameters */ + nParm = GetConfig("HNTRAINSGD", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) + trace = intVal; + if (GetConfBool(cParm, nParm, "EPOCHSAVE", &boolVal)) + optSavEpcMod = boolVal; + /* set learning rate scheduler kind */ + if (GetConfStr(cParm, nParm, "LRSCHEDULER", buf)) { + if (strcmp(buf, "ADAGRAD") == 0) { + schdKind = ADAGRADSK; + optHasSSG = TRUE; + optHasNLR = TRUE; + } + else if (strcmp(buf, "EXPONENTIAL") == 0) { + schdKind = EXPSK; + optHasSSG = FALSE; + optHasNLR = FALSE; + Exp_TrSampIdx = 0; + } + else if (strcmp(buf, "LIST") == 0) { + schdKind = LISTSK; + optHasSSG = FALSE; + optHasNLR = FALSE; + } + else if (strcmp(buf, "NEWBOB") == 0) { + schdKind = NEWBOBSK; + optHasSSG = FALSE; + optHasNLR = FALSE; + optSavEpcMod = TRUE; + optSavSchd = FALSE; + } + else + HError(4322, "SetConfParms: Unknown learning rate scheduler kind"); + } + /* set parameters associated with the learning rate scheduler */ + switch (schdKind) { + case ADAGRADSK: + if (GetConfInt(cParm, nParm, "K", &intVal)) { + if (intVal < 1) + HError(4321, "SetConfParms: K for AdaGrad scheduler out of range"); + AdaGrad_K = intVal; + } + if (GetConfFlt(cParm, nParm, "LEARNRATE", &doubleVal)) { + if (doubleVal < 0.0) + HError(4321, "SetConfParms: Initial learning rate for AdaGrad scheduler out of range"); + initLR = (float) doubleVal; + } + break; + case EXPSK: + if (GetConfFlt(cParm, nParm, "GAMMA", &doubleVal)) { + if (doubleVal <= 0.0) + HError(4321, "SetConfParms: Gamma for Exponential scheduler out of range"); + Exp_Gamma = (float) doubleVal; + } + if (GetConfFlt(cParm, nParm, "BASE", &doubleVal)) { + if (doubleVal <= 1.0) + HError(4321, "SetConfParms: Base for Exponential scheduler out of range"); + Exp_Base = (float) doubleVal; + } + if (GetConfFlt(cParm, nParm, "LEARNRATE", &doubleVal)) { + if (doubleVal < 0.0) + HError(4321, "SetConfParms: Initial learning rate for Exponential scheduler out of range"); + initLR = (float) doubleVal; + } + break; + case LISTSK: + if (GetConfAny(cParm, nParm, "LEARNRATE", &cpVal)) + maxEpochNum = ParseFloatConfStr("LEARNRATE", cpVal, &List_LRs, 0.0, FLT_MAX); + break; + case NEWBOBSK: + if (GetConfFlt(cParm, nParm, "LEARNRATE", &doubleVal)) { + if (doubleVal <= 0.0) + HError(4321, "SetConfParms: Initial learning rate for NewBob scheduler out of range"); + initLR = (float) doubleVal; + } + if (GetConfStr(cParm, nParm, "NEWBOBCRT", buf)) { + if (strcmp(buf, "ACC") == 0) + NewBob_Crt = ACCNBC; + else if (strcmp(buf, "MAPACC") == 0) + NewBob_Crt = MAPACCNBC; + else if (strcmp(buf, "LLHVAL") == 0) { + NewBob_Crt = LLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else if (strcmp(buf, "MAPLLHVAL") == 0) { + NewBob_Crt = MAPLLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else + HError(4322, "SetConfParms: Unknown criterion for NewBob"); + } + if (GetConfFlt(cParm, nParm, "DECAYFACTOR", &doubleVal)) + NewBob_DecayFactor = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "RAMPSTART", &doubleVal)) + NewBob_RampStart = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "STOPDIFF", &doubleVal)) + NewBob_Stop = (float) doubleVal; + break; + default: + break; + } + if (schdKind != LISTSK && GetConfInt(cParm, nParm, "MINEPOCHNUM", &intVal)) + minEpochNum = intVal; + if (schdKind != LISTSK && GetConfFlt(cParm, nParm, "MINLEARNRATE", &doubleVal)) + minLR = (float) doubleVal; + if (schdKind != LISTSK && GetConfInt(cParm, nParm, "MAXEPOCHNUM", &intVal)) { + if (intVal <= 0 || intVal < minEpochNum) + HError(4321, "SetConfParms: Maximum number of epoch out of range"); + maxEpochNum = intVal; + } + if (GetConfBool(cParm, nParm, "NORMLEARNRATE", &boolVal)) + optNormLearnRate = boolVal; + /* cz277 - varlen */ + if (GetConfBool(cParm, nParm, "NORMWEIGHTDECAY", &boolVal)) + optNormWeightDecay = boolVal; + if (GetConfBool(cParm, nParm, "NORMMOMENTUM", &boolVal)) + optNormMomentum = boolVal; + if (GetConfBool(cParm, nParm, "NORMGRADIENTCLIP", &boolVal)) + optNormGradientClip = boolVal; + if (GetConfBool(cParm, nParm, "NORMUPDATECLIP", &boolVal)) + optNormUpdateClip = boolVal; + if (GetConfBool(cParm, nParm, "NORML2GRADIENTSCALE", &boolVal)) + optNormL2GradientScale = boolVal; + if (GetConfBool(cParm, nParm, "NORML2UPDATESCALE", &boolVal)) + optNormL2UpdateScale = boolVal; + + if (GetConfInt(cParm, nParm, "EPOCHOFFSET", &intVal)) { + if (intVal <= 0) + HError(4321, "SetConfParms: The offset of epoch index out of range"); + epochOff = intVal; + } + /* cz277 - mmt */ + if (GetConfAny(cParm, nParm, "MOMENTUM", &cpVal)) { + ParseFloatConfStr("MOMENTUM", cpVal, &List_MMTs, 0.0, FLT_MAX); + optHasMMT = FALSE; + for (intVal = 1; intVal <= VectorSize(List_MMTs); ++intVal) + if (List_MMTs[intVal] != 0.0) + optHasMMT = TRUE; + } + if (GetConfAny(cParm, nParm, "WEIGHTDECAY", &cpVal)) + ParseFloatConfStr("WEIGHTDECAY", cpVal, &List_WeightDecay, 0.0, FLT_MAX); + if (GetConfStr(cParm, nParm, "UPDATEMODE", buf)) { + if (strcmp(buf, "BATCHLEVEL") == 0) + updtKind = BATLEVEL; + else if (strcmp(buf, "UTTERANCELEVEL") == 0) + updtKind = UTTLEVEL; + else + HError(4322, "SetConfParms: Unknown batch based parameter update mode"); + } + if (GetConfInt(cParm, nParm, "NUMPERUPDATE", &intVal)) { + if (intVal <= 0) + HError(4321, "SetConfParms: NUMPERUPDATE should be positive integer"); + numPerUpdt = intVal; + } + /* set training criterion */ + if (GetConfStr(cParm, nParm, "CRITERION", buf)) { + if (strcmp(buf, "ML") == 0) { + objfunKind = MLOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MLOF; + } + else if (strcmp(buf, "MMI") == 0) { + objfunKind = MMIOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MMIOF; + } + else if (strcmp(buf, "MMSE") == 0) { + objfunKind = MMSEOF; + optTrainMode = FRAMETM; + } + else if (strcmp(buf, "MPE") == 0) { + objfunKind = MPEOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MPEOF; + } + else if (strcmp(buf, "MWE") == 0) { + objfunKind = MWEOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MWEOF; + } + else if (strcmp(buf, "SMBR") == 0) { + objfunKind = SMBROF; + optTrainMode = SEQTM; + } + else if (strcmp(buf, "XENT") == 0) { + objfunKind = XENTOF; + optTrainMode = FRAMETM; + } + else + HError(4322, "SetConfParms: Unknown objective function kind"); + } + /* set evaluation criteria */ + if (GetConfStr(cParm, nParm, "EVALCRITERIA", buf)) { + charPtr = buf; + while (charPtr != NULL) { + charPtr2 = strchr(charPtr, '|'); + if (charPtr2 != NULL) { + *charPtr2 = '\0'; + } + strcpy(buf2, charPtr); + if (charPtr2 != NULL) { + *charPtr2 = '|'; + ++charPtr2; + } + charPtr = charPtr2; + if (strcmp(buf2, "ML") == 0) + showObjFunKind = showObjFunKind | MLOF; + else if ((strcmp(buf2, "MMI") == 0) && (optTrainMode == SEQTM)) + showObjFunKind = showObjFunKind | MMIOF; + else if (strcmp(buf2, "MMSE") == 0) + showObjFunKind = showObjFunKind | MMSEOF; + else if ((strcmp(buf2, "MPE") == 0) && (optTrainMode == SEQTM)) + showObjFunKind = showObjFunKind | MPEOF; + else if (strcmp(buf2, "XENT") == 0) + showObjFunKind = showObjFunKind | XENTOF; + } + } + /* set the updating flag for transitions */ + if (GetConfBool(cParm, nParm, "UPDATETRANS", &boolVal)) { + if (boolVal) + uFlags = uFlags | UPTRANS; + else + uFlags = uFlags & (~UPTRANS); + } + if ((uFlags & UPTRANS) != 0 && GetConfFlt(cParm, nParm, "CTRANS", &doubleVal)) + CTrans = (float) doubleVal; + if ((uFlags & UPTRANS) != 0 && GetConfFlt(cParm, nParm, "MINOCCTRANS", &doubleVal)) + MinOccTrans = (float) doubleVal; + /* set the frame criterion for F-smoothing */ + if (GetConfStr(cParm, nParm, "FSMOOTHCRITERION", buf)) { + if (strcmp(buf, "MMSE") == 0) + objfunFSmooth = MMSEOF; + else if (strcmp(buf, "XENT") == 0) + objfunFSmooth = XENTOF; + else + HError(4322, "SetConfParms: Unknown objective function kind for F-smoothing"); + } + /* set the H value for F-smoothing */ + if (GetConfFlt(cParm, nParm, "FSMOOTHHVALUE", &doubleVal)) { + FSmoothH = (float) doubleVal; + if (FSmoothH != 1.0) + optHasFSmooth = TRUE; + } + /* set the sequence criterion for I-smoothing */ + if (GetConfStr(cParm, nParm, "ISMOOTHCRITERION", buf)) { + if (strcmp(buf, "ML") == 0) { + if (!(objfunKind == MMIOF && objfunKind == MPEOF && objfunKind == MWEOF && objfunKind == SMBROF)) + HError(4322, "SetConfParms: ML prior is only valid for MMI and MBR training objective functions"); + objfunISmooth = MLOF; + } + else if (strcmp(buf, "MMI") == 0) { + if (!(objfunKind == MPEOF && objfunKind == MWEOF && objfunKind == SMBROF)) + HError(4322, "SetConfParms: ML prior is only valid for MBR training objective functions"); + objfunISmooth = MMIOF; + } + else + HError(4322, "SetConfParms: Unknown objective function kind for I-smoothing"); + } + /* set the tau for I-smoothing */ + if (GetConfFlt(cParm, nParm, "ISMOOTHTAU", &doubleVal)) { + ISmoothTau = (float) doubleVal; + if (ISmoothTau != 0) + optHasISmooth = TRUE; + } + /* set whether do frame rejection */ + if (GetConfFlt(cParm, nParm, "MMIFRMINOCC", &doubleVal)) { + if (doubleVal > 0.0 && objfunKind == MMIOF) { + minOccFrameReject = doubleVal; + optFrameReject = TRUE; + } + } + /* set the updating flag for target penalties */ + if (GetConfBool(cParm, nParm, "UPDATETARGETPEN", &boolVal)) { + if (boolVal) + uFlags = uFlags | UPTARGETPEN; + else + uFlags = uFlags & (~UPTARGETPEN); + } + /* update the log observation prior */ + if (GetConfFlt(cParm, nParm, "LOGPRIOROBSV", &doubleVal)) + logObsvPrior = (float) doubleVal; + /* cz277 - semi */ + if (GetConfInt(cParm, nParm, "BGNPLBATCHWAIT", &intVal)) { + if (intVal < 0) + HError(4321, "SetConfParms: BGNPLBATCHWAIT should be non-negative integer"); + bgWaitNBatchPL = intVal; + } + if (GetConfInt(cParm, nParm, "EDPLBATCHLENACC", &intVal)) { + if (intVal < 0) + HError(4321, "SetConfParms: EDPLBATCHLENACC should be non-negative integer"); + edAccBatchLenPL = intVal; + } + if (GetConfFlt(cParm, nParm, "L2GRADIENTSCALE", &doubleVal)) + gradientL2Scale = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "GRADIENTCLIP", &doubleVal)) + gradientClip = (float) fabs(doubleVal); + if (GetConfFlt(cParm, nParm, "L2UPDATESCALE", &doubleVal)) + updateL2Scale = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "UPDATECLIP", &doubleVal)) + updateClip = (float) fabs(doubleVal); + if (GetConfFlt(cParm, nParm, "CLIPSCALEFACTOR", &doubleVal)) + clipScaleFactor = (float) doubleVal; + /*if (GetConfFlt(cParm, nParm, "ACTIVATIONUPDATECLIP", &doubleVal)) { + if (doubleVal <= 0.0) + optActfunUpdtClip = FALSE; + else { + optActfunUpdtClip = TRUE; + actfunUpdtPosClip = (float) doubleVal; + actfunUpdtNegClip = -1.0 * actfunUpdtPosClip; + } + } + if (GetConfFlt(cParm, nParm, "WEIGHTUPDATECLIP", &doubleVal)) { + if (doubleVal <= 0.0) + optWghtUpdtClip = FALSE; + else { + optWghtUpdtClip = TRUE; + wghtUpdtPosClip = (float) doubleVal; + wghtUpdtNegClip = -1.0 * wghtUpdtPosClip; + } + } + if (GetConfFlt(cParm, nParm, "BIASUPDATECLIP", &doubleVal)) { + if (doubleVal <= 0.0) + optBiasUpdtClip = FALSE; + else { + optBiasUpdtClip = TRUE; + biasUpdtPosClip = (float) doubleVal; + biasUpdtNegClip = -1.0 * biasUpdtPosClip; + } + }*/ + /* cz277 - max norm */ + if (GetConfFlt(cParm, nParm, "WEIGHTL2MAXNORMBOUND", &doubleVal)) { + if (doubleVal <= 0.0) + optWeightL2Norm = FALSE; + else { + optWeightL2Norm = TRUE; + weightL2NormBound = (float) doubleVal; + } + } + if (GetConfInt(cParm, nParm, "STATICUPDATECODE", &intVal)) + staticUpdtCode = intVal; + + /* label file mask */ + if (GetConfStr(cParm, nParm, "LABFILEMASK", buf)) + labFileMask = CopyString(&gcheap, buf); + /* lattice file mask */ + if (GetConfStr(cParm, nParm, "LATFILEMASK", buf)) + latFileMask = CopyString(&gcheap, buf); + if (GetConfStr(cParm, nParm, "LATMASKNUM", buf)) + latMask_Num = CopyString(&gcheap, buf); + if (GetConfStr(cParm, nParm, "LATMASKDEN", buf)) + latMask_Den = CopyString(&gcheap, buf); + /* speaker adaptation mask */ + if (GetConfStr(cParm, nParm, "INXFORMMASK", buf)) + xfInfo.inSpkrPat = CopyString(&gcheap, buf); + if (GetConfBool(cParm, nParm, "USELLF", &boolVal)) + useLLF = boolVal; + if (GetConfBool(cParm, nParm, "INCNUMLATINDENLAT", &boolVal)) + optIncNumInDen = boolVal; + } + /* HParm: HNTrainSGD */ + SetChannel("HPARMLABEL"); + nParm = GetConfig("HPARMLABEL", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfStr(cParm, nParm, "TARGETKIND", buf)) + flabPK = Str2ParmKind(buf); + if (GetConfInt(cParm, nParm, "VECSIZE", &intVal)) + vecSizeFLab = (short) intVal; + } + + /* fetch parameters associated with current training criterion */ + switch (objfunKind) { + case MMIOF: + procNumLats = TRUE; + procDenLats = TRUE; + recogIdx1 = 1; + recogIdx2 = 999; + corrIdx = 0; + break; + case MLOF: + procNumLats = TRUE; + procDenLats = FALSE; + recogIdx1 = 999; /* useless */ + recogIdx2 = 999; /* useless */ + corrIdx = 0; + break; + case MMSEOF: + break; + case MPEOF: + procNumLats = FALSE; + procDenLats = TRUE; + recogIdx1 = 0; + recogIdx2 = 1; + corrIdx = 2; + break; + case MWEOF: + HError(4301, "MWE not implemented yet"); + break; + case SMBROF: + HError(4301, "SMBR not implemented yet"); + break; + case XENTOF: + break; + default: + break; + } +} + +void ReportUsage (void) { + printf("\nUSAGE: HNTrainSGD [options] [HMMList]\n\n"); + printf(" Option Default\n\n"); + printf(" -a Use input transformation off\n"); + printf(" -c Do initial held-out validation off\n"); + printf(" -d s Dir to find HMM definitions current\n"); + printf(" -e s Subdir prefix for epoch models epoch\n"); + printf(" -eb s Base dir to save intermediate HMMs -d dir\n"); + printf(" -fl s Path of input learning rate file none\n"); + printf(" -h s Speaker name pattern none\n"); + printf(" -l s Label kind [fea, lab, lat, null] null\n"); + printf(" -m s Target mapping file s off\n"); + printf(" -nu s Name of the update file UPDATE\n"); + printf(" -nn s Name of the neg learning rate file curNegLR\n"); + printf(" -ng s Name of the sum of squared grad file SQUAREGRAD\n"); + printf(" -ns s Name of the scheduler file SCHEDULER\n"); + printf(" -o s Extensions for new HMM files as src\n"); + printf(" -q s Directory for numerator lats [needed. May use >1 -q option]\n"); + printf(" -qp s Subdir pattern for numerator lats none\n"); + printf(" -r s Directory for denominator lats [needed. May use >1 -r option]\n"); + printf(" -rp s Subdir pattern for denominator lats none\n"); + printf(" -u tbw Update t)rans b)ias w)eight for ANN tbw\n"); + printf(" -x s Extension for HMM files none\n"); + printf(" -N s Input script file for validation set none\n"); + PrintStdOpts("BFGHIJLMSTX"); /* E, K removed */ + printf("\n\n"); +} + + +float CalApproxAvgBatchLikelhood(DataCache *cache, int batLen) { + LELink layerElem; + ANNSet *annSet; + int i, labTgt; + float llh = 0.0; + + annSet = cache->hmmSet->annSet; + layerElem = annSet->outLayers[cache->streamIdx]; + for (i = 0; i < batLen; ++i) { + labTgt = cache->labVec[i]; + llh += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + labTgt]; + } + llh /= batLen; + + return llh; +} + +void AccCriteriaPerB(DataCache *cache, int batLen, CriteriaInfo *criteria) { + LELink layerElem; + int i, labTgt, recTgt, recTgtMapSum, recLLHTgt, recTgtLLHMapSum; + IntVec mapVec; + ANNSet *annSet; + + annSet = cache->hmmSet->annSet; + /* do accumulateion */ + layerElem = annSet->outLayers[cache->streamIdx]; + /* for tSamp */ + criteria->tSampAcc += batLen; + /* for accuracy */ + for (i = 1; i <= batLen; ++i) { + labTgt = cache->labVec[i]; + recTgt = recVec[i]; + if (labTgt == recTgt) { + ++criteria->cSampAcc; + } + /* for LLH values */ + if (showObjFunKind & MLOF) { + recLLHTgt = recVecLLH[i]; + if (labTgt == recLLHTgt) { + criteria->LLHVal += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + recLLHTgt]; + } + } + } + + /* for mapped accuracy by max and sum*/ + if (optMapTarget) { + mapVec = hset.annSet->mapStruct->mapVectors[cache->streamIdx]; + for (i = 1; i <= batLen; ++i) { + labTgt = mapVec[cache->labVec[i] + 1]; + recTgtMapSum = recVecMapSum[i]; + if (labTgt == recTgtMapSum) { + ++criteria->cSampAccMapSum; + } + UpdateTargetMapStats(hset.annSet, labTgt, recTgtMapSum); + /* for LLH values */ + if (showObjFunKind & MLOF) { + recTgtLLHMapSum = recVecLLHMapSum[i]; + if (labTgt == recTgtLLHMapSum) { + criteria->LLHValMapSum += cache->hmmSet->annSet->mapStruct->llhMatMapSum[cache->streamIdx]->matElems[(i - 1) * hset.annSet->mapStruct->mappedTargetNum + recTgtMapSum]; + } + } + } + } + + /* MMSE */ + if (showObjFunKind & MMSEOF) { + criteria->MMSEAcc += CalMMSECriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->MMSEAccMapSum += CalMMSECriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } + + /* XENT */ + if (showObjFunKind & XENTOF) { + criteria->XENTAcc += CalXENTCriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->XENTAccMapSum += CalXENTCriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } +} + +void AccCriteriaPerU(DataCache *cache, int batLen, CriteriaInfo *criteria) { + LELink layerElem; + ANNSet *annSet; + + annSet = cache->hmmSet->annSet; + /* do accumulateion */ + layerElem = annSet->outLayers[cache->streamIdx]; + /* for tSamp */ + criteria->tSampAcc += batLen; + /* for tUtt */ + ++criteria->tUttAcc; + + if ((showObjFunKind & MLOF) && (cache->streamIdx == 1)) { + criteria->LLHVal += fbInfo.pr; + } + if ((showObjFunKind & MPEOF) && (cache->streamIdx == 1)) { + criteria->MPEAcc += fbInfo.AvgCorr; + criteria->tNWordAcc += fbInfo.MPEFileLength; + } + if ((showObjFunKind & MMIOF) && (cache->streamIdx == 1)) { + criteria->NumLLHAcc += fbInfo.latPr[corrIdx]; + criteria->DenLLHAcc += fbInfo.latPr[recogIdx1]; + } + /* MMSE */ + if (showObjFunKind & MMSEOF) { + criteria->MMSEAcc += CalMMSECriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + } + /* XENT */ + if (showObjFunKind & XENTOF) { + criteria->XENTAcc += CalXENTCriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + } +} + + + +void PrintCriteria(CriteriaInfo *criteria, char *setid) { + float accVal; + int cSampInt, tSampInt; + + if (optTrainMode == FRAMETM) { + cSampInt = (int) criteria->cSampAcc; + tSampInt = (int) criteria->tSampAcc; + accVal = criteria->cSampAcc / criteria->tSampAcc; + printf("\t\t%s Accuracy = %.2f%% [%d right out of %d samples]\n", setid, accVal * 100.0, cSampInt, tSampInt); + if (showObjFunKind & XENTOF) { + printf("\t\tCross Entropy/Frame = %.2f\n", criteria->XENTAcc / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMean Square Error/Frame = %.2f\n", criteria->MMSEAcc / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/Frame = %e\n", criteria->LLHVal / criteria->tSampAcc); + } + + if (optMapTarget) { + cSampInt = (int) criteria->cSampAccMapSum; + accVal = criteria->cSampAccMapSum / criteria->tSampAcc; + printf("\t\tMapped Accuracy/Frame by Sum = %.2f%% [%d right out of %d samples]\n", accVal * 100.0, cSampInt, tSampInt); + if (showObjFunKind & XENTOF) { + printf("\t\tMapped Cross Entropy/Frame by Sum = %.2f\n", criteria->XENTAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMapped Mean Square Error/Frame by Sum = %.2f\n", criteria->MMSEAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/Frame by Sum = %e\n", criteria->LLHValMapSum / criteria->tSampAcc); + } + } + } + + if (optTrainMode == SEQTM) { + if (showObjFunKind & MMIOF) { + if (optFrameReject == TRUE) { + printf("\t\t%d frames rejected in training\n", criteria->MMIFRAcc); + } + printf("\t\tMutual Information/Frame = %f [Num/Frame = %f, Den/Frame = %f]\n", (criteria->NumLLHAcc - criteria->DenLLHAcc) / criteria->tSampAcc, criteria->NumLLHAcc / criteria->tSampAcc, criteria->DenLLHAcc / criteria->tSampAcc); + } + if (showObjFunKind & MPEOF) { + printf("\t\tMPE/MWE criterion is: %f [%d words in total]\n", criteria->MPEAcc / criteria->tNWordAcc, (int) criteria->tNWordAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMean Square Error/Frame = %.2f\n", criteria->MMSEAcc / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/Frame = %e\n", criteria->LLHVal / criteria->tSampAcc); + } + } + + fflush(stdout); + + /* set performance criterion for NewBob */ + switch (NewBob_Crt) { + case ACCNBC: + newMSI_CrtVal = criteria->cSampAcc / criteria->tSampAcc; + break; + case MAPACCNBC: + newMSI_CrtVal = criteria->cSampAccMapSum / criteria->tSampAcc; + break; + case LLHVALNBC: + newMSI_CrtVal = criteria->LLHVal / criteria->tSampAcc; + break; + case MAPLLHVALNBC: + newMSI_CrtVal = criteria->LLHValMapSum / criteria->tSampAcc; + break; + } + +} + +ReturnStatus InitScriptFile(char *fn, FILE **script, int *scriptCnt) { + char buf[MAXSTRLEN]; + int cnt = 0; + + /*CheckFn(fn);*/ + if (*script != NULL) + HError(4300, "InitScriptFile: Script file has been initialised"); + if ((*script = fopen(fn, "r")) == NULL) + HError(4310, "InitScriptFile: Cannot open script file %s for validation set", fn); + while (GetNextScpWord(*script, buf) != NULL) + ++cnt; + rewind(*script); + *scriptCnt = cnt; + return SUCCESS; +} + +char *ScpWord(FILE *script, char *wordbuf) { + int ch, qch, i; + + i = 0; + ch = ' '; + while (isspace(ch)) + ch = fgetc(script); + if (ch == EOF) + return NULL; + if (ch == '\'' || ch == '"') { + qch = ch; + ch = fgetc(script); + while (ch != qch && ch != EOF) { + wordbuf[i ++] = ch; + ch = fgetc(script); + } + if (ch == EOF) + HError(4319, "Closing quote missing in the extended scp file"); + } + else { + do { + wordbuf[i ++] = ch; + ch = fgetc(script); + } while (!isspace(ch) && ch != EOF); + } + wordbuf[i] = '\0'; + + return wordbuf; +} + +int GetExtScpWordDur(char *str) { + char *lb, *rb, *co; + char buf[MAXSTRLEN]; + int stidx, edidx; + + strcpy(buf, str); + /*eq = strchr(buf, '=');*/ + lb = strchr(buf, '['); + if (lb == NULL) { + return -1; + } + if ((co = strchr(buf, ',')) == NULL) + HError(4319, "GetExtScpWordDur: , missing in index spec"); + if ((rb = strchr(buf, ']')) == NULL) + HError(4319, "GetExtScpWordDur: ] missing in index spec"); + *rb = '\0'; + edidx = atol(co + 1); + *co = '\0'; + stidx = atol(lb + 1); + if (stidx < 0 || edidx < 0 || edidx < stidx) + HError(4319, "GetExtScpWordDur: Illegal start or end index spec"); + return edidx - stidx + 1; +} + +/* Get the total sample count in the script file */ +int GetScpSampCnt(FILE *script) { + int sampCnt = 0, curDur; + char buf[MAXSTRLEN]; + ParmBuf parmBuf; + + if (script == NULL) + HError(4300, "GetScpSampCnt: Uninitialised input script file"); + /* get the first scp word to test */ + ScpWord(script, buf); + curDur = GetExtScpWordDur(buf); + if (curDur < 0) { + HError(-4323, "GetScpSampCnt: Using non-ext scp causes an extra pass of data loading"); + rewind(script); + while (GetNextScpWord(script, buf) != NULL) { + parmBuf = OpenBuffer(&gstack, buf, 0, UNDEFF, TRI_UNDEF, TRI_UNDEF); + if (!parmBuf) { + HError(4313, "GetScpSampCnt: Open input data failed"); + } + sampCnt += ObsInBuffer(parmBuf); + CloseBuffer(parmBuf); + } + } + else { + sampCnt += curDur; + while (ScpWord(script, buf) != NULL) { + curDur = GetExtScpWordDur(buf); + if (curDur < 0) + HError(4319, "GetScpSampCnt: Non-ext scp line in ext scp file"); + sampCnt += curDur; + } + } + rewind(script); + + return sampCnt; +} + +void SetModelSetInfo(char *baseDir, char *hmmExt, char *macExt, MSILink msi, int epochIdx) { + char buf[MAXSTRLEN]; + int i; + MILink mmf; + + /* baseDir */ + msi->baseDir = NULL; + if (baseDir != NULL) { + msi->baseDir = CopyString(&gcheap, baseDir); + } + /* hmmExt */ + msi->hmmExt = NULL; + if (hmmExt != NULL) { + msi->hmmExt = CopyString(&gcheap, hmmExt); + } + /* macExt */ + msi->macExt = NULL; + if (macExt != NULL) { + msi->macExt = CopyString(&gcheap, macExt); + } + /* set macro paths */ + msi->macFN = NULL; + if (epochIdx <= 0) { /* only in the first invoke */ + msi->macCnt = macroCnt; + if (msi->macCnt > 0) { + msi->macFN = (char **) New(&gcheap, sizeof(char *) * msi->macCnt); + macroFN = (char **) New(&gcheap, sizeof(char *) * macroCnt); + macroCnt = 0; + for (i = 0, mmf = hset.mmfNames; mmf != NULL; ++i, mmf = mmf->next) { + /* store initial macro names */ + msi->macFN[i] = CopyString(&gcheap, mmf->fName); + /* exclude UPDATE, LEARNRATE, and SQUAREGRAD */ + NameOf(mmf->fName, buf); + if (strcmp(buf, fnUpdate) != 0 && strcmp(buf, fncurNegLR) != 0 && strcmp(buf, fnSquareGrad) != 0) { + macroFN[macroCnt] = CopyString(&gcheap, buf); + ++macroCnt; + } + } + } + } + else { + msi->macCnt = macroCnt; + if (optHasSSG) + ++msi->macCnt; + if (optHasNLR) + ++msi->macCnt; + if (optHasMMT) + ++msi->macCnt; + if (msi->macCnt > 0) { + msi->macFN = (char **) New(&gcheap, sizeof(char *) * msi->macCnt); + for (i = 0; i < macroCnt; ++i) { + MakeFN(macroFN[i], baseDir, macExt, buf); + msi->macFN[i] = CopyString(&gcheap, buf); + } + if (optHasSSG) { + MakeFN(fnSquareGrad, baseDir, macExt, buf); + msi->macFN[i++] = CopyString(&gcheap, buf); + } + if (optHasNLR) { + MakeFN(fncurNegLR, baseDir, macExt, buf); + msi->macFN[i++] = CopyString(&gcheap, buf); + } + if (optHasMMT) { + MakeFN(fnUpdate, baseDir, macExt, buf); + msi->macFN[i++] = CopyString(&gcheap, buf); + } + } + } + msi->next = NULL; + msi->prev = NULL; + msi->epochIdx = epochIdx; + msi->updtIdx = updateIndex; +} + +void AppendModelSetInfo(MSILink newMSI) { + tailMSI->next = newMSI; + newMSI->prev = tailMSI; + tailMSI = tailMSI->next; +} + +void PopModelSetInfo() { + if (tailMSI->baseDir != NULL) { + Dispose(&gcheap, tailMSI->baseDir); + } + if (tailMSI->hmmExt != NULL) { + Dispose(&gcheap, tailMSI->hmmExt); + } + if (tailMSI->macExt != NULL) { + Dispose(&gcheap, tailMSI->macExt); + } + tailMSI = tailMSI->prev; + Dispose(&gcheap, tailMSI->next); +} + +void CheckFitMaxNorm(ANNSet *annSet) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + Boolean fitMaxNorm = TRUE; + + /* proceed each ANNDef */ + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 2; i >= 0; --i) { + layerElem = annDef->layerList[i]; + /* if no parameter to update in this layer */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(4301, "CheckFitMaxNorm: Not Implemented yet"); break; + case CONVOLUTIONLAK: HError(4301, "CheckFitMaxNorm: Not Implemented yet"); break; + case PERCEPTRONLAK: fitMaxNorm &= IsLinearInvariant(layerElem->actfunKind); break; + case SUBSAMPLINGLAK: HError(4301, "CheckFitMaxNorm: Not Implemented yet"); break; + default: + HError(4399, "CheckFitMaxNorm: Unknown layer type"); + } + } + /* fetch next ANNDef */ + curAI = curAI->prev; + } + + if (optWeightL2Norm == TRUE && fitMaxNorm == FALSE) + HError(-4324, "CheckFitMaxNorm: Max norm does not fit this model, suggest to turn off"); +} + + +void Initialise(void) { + Boolean eSep; + /*int s, tSampCntTr, tSampCntHV;*/ + int s; + VisitKind visitKindTr=GetDefaultVisitKind(); + short swidth[SMAX]; + + /* initialise epcBaseDir */ + if (epcBaseDir == NULL) { + epcBaseDir = newDir; + } + /* initialise the MSI list */ + SetModelSetInfo(hmmDir, hmmExt, NULL, &inputMSI, 0); + headMSI = &inputMSI; + tailMSI = &inputMSI; + + /* initialise the memory heaps */ + CreateHeap(&cacheHeap, "cache heap", CHEAP, 1, 0, 100000000, ULONG_MAX); + CreateHeap(&transHeap, "transcription heap", MSTAK, 1, 0, 8000, 80000); + CreateHeap(&latHeap, "lattice heap", MSTAK, 1, 1.0, 50000, 500000); + CreateHeap(&accHeap, "acc heap", MSTAK, 1, 1.0, 50000, 500000); + + /* load HMMs and HMMSet related global variables */ + if (trace & T_TOP) { + printf("Reading ANN models...\n"); + fflush(stdout); + } + if (hmmListFn != NULL && MakeHMMSet(&hset, hmmListFn) < SUCCESS) + HError(4300, "Initialise: MakeHMMSet failed"); + if (LoadHMMSet(&hset, hmmDir, hmmExt) < SUCCESS) + HError(4300, "Initialise: LoadHMMSet failed"); + if (hset.annSet == NULL) + HError(4300, "Initialise: No ANN model available"); + /* init train struct */ + InitTrainInfo(&hset, optHasLabMat, optHasNLR, optHasSSG, TRUE); + InitErrMix(&hset); + /* setup the mappings */ + if (optMapTarget) { + SetupStateInfoList(&hset); + if (SetupTargetMapList(&hset, mappingFn, 0) < SUCCESS) + HError(4300, "Initialise: Failed to load the target mapping file"); + InitMapStruct(&hset); + recVecMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + /*ClearMappedTargetCounters(hset.annSet);*/ + } + CreateTmpNMat(hset.hmem); + + SetStreamWidths(hset.pkind, hset.vecSize, hset.swidth, &eSep); + SetANNUpdateFlag(&hset); + SetNMatUpdateFlag(&hset); + SetNVecUpdateFlag(&hset); + if (trace & T_TOP) { + printf("ANN model structure:\n"); + ShowANNSet(&hset); + fflush(stdout); + } + SetupNMatRPLInfo(&hset); + SetupNVecRPLInfo(&hset); + /* for training set */ + obs = MakeObservation(&gcheap, hset.swidth, hset.pkind, FALSE, eSep); + scriptTr = GetTrainScript(&scriptCntTr); + tSampCntTr = GetScpSampCnt(scriptTr); + AccAllCacheSamples(tSampCntTr); + if (trace & T_TOP) + printf("%d utterances (%d samples) in the training set\n", scriptCntTr, tSampCntTr); + if (scriptHV != NULL) { + tSampCntHV = GetScpSampCnt(scriptHV); + if (trace & T_TOP) + printf("%d utterances (%d samples) in the validation set\n", scriptCntHV, tSampCntHV); + AccAllCacheSamples(tSampCntHV); + } + + /* initialise adaptation */ + if (xfInfo.inSpkrPat == NULL) + xfInfo.inSpkrPat = xfInfo.outSpkrPat; + if (xfInfo.paSpkrPat == NULL) + xfInfo.paSpkrPat = xfInfo.outSpkrPat; + + /* initialise labels */ + if (labelKind != NULLLK) { + labelInfo = (LabelInfo *) New(&gcheap, sizeof(LabelInfo)); + memset(labelInfo, 0, sizeof(LabelInfo)); + labelInfo->labelKind = labelKind; + if ((labelKind & FEALK) != 0) { + SetStreamWidths(flabPK, vecSizeFLab, swidth, &eSep); + obsFLab = MakeObservation(&gcheap, swidth, flabPK, FALSE, eSep); + if (scriptTr != NULL) { + if (scriptFLabTr == NULL) + HError(4315, "HNTrainSGD: -s expected when -l = FEATURE"); + if (scriptCntTr != scriptCntFLabTr) + HError(4325, "HNTrainSGD: Inconsistent utterance number between -S and -s"); + tSampCntFLabTr = GetScpSampCnt(scriptFLabTr); + if (tSampCntTr != tSampCntFLabTr) + HError(4325, "HNTrainSGD: Inconsistent total sample number between -S and -s"); + } + if (scriptHV != NULL) { + if (scriptFLabHV == NULL) + HError(4315, "HNTrainSGD: -n expected when -l = FEATURE and -N given"); + if (scriptCntHV != scriptCntFLabHV) + HError(4325, "HNTrainSGD: Inconsistent utterance number between -N and -n"); + tSampCntFLabHV = GetScpSampCnt(scriptFLabHV); + if (tSampCntHV != tSampCntFLabHV) + HError(4325, "HNTrainSGD: Inconsistent total sample number between -N and -n"); + } + labelInfo->obsFLab = &obsFLab; + } + if ((labelKind & LABLK) != 0) { + labelInfo->labFileMask = labFileMask; + labelInfo->labDir = labDir; + labelInfo->labExt = labExt; + } + if ((labelKind & LATLK) != 0) { + /* The actual dict is not needed, only the structure; this relates to HNet and reading lattices. */ + InitVocab(&vocab); + labelInfo->latFileMask = latFileMask; + labelInfo->latMaskNum = latMask_Num; + labelInfo->numLatDir = numLatDir; + labelInfo->nNumLats = nNumLats; + labelInfo->numLatSubDirPat = numLatSubDirPat; + labelInfo->latMaskDen = latMask_Den; + labelInfo->denLatDir = denLatDir; + labelInfo->nDenLats = nDenLats; + labelInfo->denLatSubDirPat = denLatSubDirPat; + labelInfo->latExt = latExt; + labelInfo->vocab = (Ptr) &vocab; + labelInfo->useLLF = useLLF; + probScale = GetProbScale(); + labelInfo->incNumInDen = optIncNumInDen; + } + labelInfo->uFlags = uFlags; + } + recVec = CreateIntVec(&gcheap, GetNBatchSamples()); + recVecLLH = CreateIntVec(&gcheap, GetNBatchSamples()); + + /* initialise the cache structures */ + /*obs = MakeObservation(&gcheap, hset.swidth, hset.pkind, FALSE, eSep); + scriptTr = GetTrainScript(&scriptCntTr); + tSampCntTr = GetScpSampCnt(scriptTr); + if (trace & T_TOP) { + printf("%d utterances (%d samples) in the training set\n", scriptCntTr, tSampCntTr); + }*/ + labelInfo->scpFLab = scriptFLabTr; + for (s = 1; s <= hset.swidth[0]; ++s) { + /*AccAllCacheSamples(tSampCntTr);*/ + visitKindTr = GetDefaultVisitKind(); + labelInfo->dimFLab = swidth[s]; + cacheTr[s] = CreateCache(&cacheHeap, scriptTr, scriptCntTr, &hset, &obs, s, GetDefaultNCacheSamples(), visitKindTr, &xfInfo, labelInfo, TRUE); + } + if (scriptHV != NULL) { + /*tSampCntHV = GetScpSampCnt(scriptHV); + if (trace & T_TOP) { + printf("%d utterances (%d samples) in the validation set\n", scriptCntHV, tSampCntHV); + }*/ + labelInfo->uFlags = labelInfo->uFlags & (~UPTARGETPEN); + labelInfo->uFlags = labelInfo->uFlags & (~UPTRANS); /* cz277 - trans */ + labelInfo->scpFLab = scriptFLabHV; + for (s = 1; s <= hset.swidth[0]; ++s) { + /*AccAllCacheSamples(tSampCntHV);*/ + /* cz277 - semi */ + if (visitKindTr == PLUTTVK || visitKindTr == PLNONEVK || visitKindTr == PLUTTFRMVK) + visitKindHV = PLNONEVK; + labelInfo->dimFLab = swidth[s]; + cacheHV[s] = CreateCache(&cacheHeap, scriptHV, scriptCntHV, (Ptr) &hset, &obs, s, GetDefaultNCacheSamples(), visitKindHV, &xfInfo, labelInfo, TRUE); + } + } + /* set need2Unload flag */ + SetNeed2UnloadFlag(); + /* cz277 - trans */ + /* initialise Acc structures for TransP update */ + if ((uFlags & UPTRANS) != 0) { + switch (objfunKind) { + case XENTOF: + case MMSEOF: + case MLOF: + NumAccs = 1; + break; + case MMIOF: + NumAccs = 2; + break; + case SMBROF: + case MPEOF: + case MWEOF: + NumAccs = 3; + break; + default: + HError(4399, "Initialise: Unkown objective function for transition probability update"); + } + AttachAccsParallel(&hset, &accHeap, uFlags, NumAccs); + ZeroAccsParallel(&hset, uFlags, NumAccs); + } + + if ((labelKind & LATLK) != 0) { + InitialiseFBInfo(&fbInfo, &hset, cacheTr[1]->labelInfo->uFlags, FALSE); + for (s = 1; s <= hset.swidth[0]; ++s) { + fbInfo.llhMat[s] = hset.annSet->llhMat[s]; + fbInfo.occMat[s] = hset.annSet->outLayers[s]->yFeaMats[1]; /* cz277 - many */ + } + fbInfo.FSmoothH = FSmoothH; + /* cz277 - frame rejection */ + for (s = 1; s <= hset.swidth[0]; ++s) { + if ((labelKind & LABLK) == 0) { /* ref target comes from comparing the num occs */ + fbInfo.refVec[s] = CreateIntVec(&latHeap, GetNBatchSamples()); + fbInfo.findRef = TRUE; + } + else { /* ref target comes from hard labels */ + fbInfo.refVec[s] = cacheTr[s]->labVec; + fbInfo.findRef = FALSE; + } + fbInfo.occVec[s] = CreateDVector(&latHeap, GetNBatchSamples()); + } + } + /* set update flags */ + /*SetANNUpdateFlag(&hset); + SetNMatUpdateFlag(&hset); + SetNVecUpdateFlag(&hset);*/ + if (optWeightL2Norm == TRUE) + CheckFitMaxNorm(hset.annSet); +} + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void ClearGradProbe(ANNSet *annSet) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + memset(layerElem->wghtGradInfoVec + 1, 0, DVectorSize(layerElem->wghtGradInfoVec) * sizeof(double)); + memset(layerElem->biasGradInfoVec + 1, 0, DVectorSize(layerElem->biasGradInfoVec) * sizeof(double)); + layerElem->maxWghtGrad = -1.0E30; + layerElem->minWghtGrad = 1.0E30; + layerElem->meanWghtGrad = 0.0; + layerElem->maxBiasGrad = -1.0E30; + layerElem->minBiasGrad = 1.0E30; + layerElem->meanBiasGrad = 0.0; + } + curAI = curAI->prev; + } +} +#endif + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void ShowGradProbe(ANNSet *annSet, int batCnt) { + int i, j, k, size; + AILink curAI; + ADLink annDef; + LELink layerElem; + double totalWght, totalBias; + + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + totalWght = layerElem->nodeNum * layerElem->inputDim; + totalWght *= batCnt; + totalBias = layerElem->nodeNum; + totalBias *= batCnt; + printf("Gradients of Layer %d:\n", i + 1); + size = DVectorSize(layerElem->wghtGradInfoVec); + printf("\tWeights:\n"); + printf("\t\tmaxWghtGrad = %e\n", layerElem->maxWghtGrad); + printf("\t\tminWghtGrad = %e\n", layerElem->minWghtGrad); + printf("\t\tmeanWghtGrad = %e\n", layerElem->meanWghtGrad / totalWght); + printf("\t\tValue Buckets:\n"); + for (j = 1; j <= size; ++j) { + k = (j - 1 - size / 2) * PROBERESOLUTE; + if (layerElem->wghtGradInfoVec[j] != 0) + printf("\t\t\t%d ~ %d ==> %f%% [%e]\n", k, k + PROBERESOLUTE, 100.0 * layerElem->wghtGradInfoVec[j] / totalWght, layerElem->wghtGradInfoVec[j]); + } + size = DVectorSize(layerElem->biasGradInfoVec); + printf("\tBiases:\n"); + printf("\t\tmaxBiasGrad = %e\n", layerElem->maxBiasGrad); + printf("\t\tminBiasGrad = %e\n", layerElem->minBiasGrad); + printf("\t\tmeanBiasGrad = %e\n", layerElem->meanBiasGrad / totalWght); + printf("\t\tValue Buckets:\n"); + for (j = 1; j <= size; ++j) { + k = (j - 1 - size / 2) * PROBERESOLUTE; + if (layerElem->biasGradInfoVec[j] != 0) + printf("\t\t\t%d ~ %d ==> %f%% [%e]\n", k, k + PROBERESOLUTE, 100.0 * layerElem->biasGradInfoVec[j] / totalBias, layerElem->biasGradInfoVec[j]); + } + printf("\n\n"); + } + curAI = curAI->prev; + } +} +#endif + +/* cz277 - gradlim */ +float GetCurClipScalingFactor(int layerIdx, float scale) { + return (float) pow(2.0, scale * layerIdx); +} + + +void NMatBundleSGDUpdate(NMatBundle *bundle, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int nrows, ncols, batchIndex; + + if (bundle == NULL) + HError(4390, "NMatBundleSGDUpdate: NULL bundle is given"); + if (bundle->kind != SIBK) + HError(4391, "NMatBundleSGDUpdate: Only SI bundle kind is allowed"); + batchIndex = GetGlobalBatchIndex(); + if (bundle->batchIndex != batchIndex - 1 && bundle->batchIndex != batchIndex) + HError(4392, "NMatBundleSGDUpdate: Wrong bundle batch index"); + if (bundle->batchIndex == batchIndex) + return; + ++bundle->batchIndex; + + nrows = (int) bundle->variables->rowNum; + ncols = (int) bundle->variables->colNum; + /* gradient clipping */ + if (gradClip > 0.0) + ClipNMatrixVals(bundle->gradients, nrows, ncols, gradClip, (-1.0) * gradClip, bundle->gradients); + /* gradient l2 norm */ + if (gradL2Scale != 0.0) { + gradL2Scale *= ncols; + CalNMatrixL2NormByRow(bundle->gradients, GetTmpNVec()); + ScaleNVector(1.0 / fabs(gradL2Scale), bundle->gradients->rowNum, GetTmpNVec()); + if (gradL2Scale > 0.0) + ClipNVectorVals(GetTmpNVec(), bundle->gradients->rowNum, FLT_MAX, 1.0, GetTmpNVec()); + DivideNMatrixByRow(bundle->gradients, GetTmpNVec(), bundle->gradients); + } + /* weight decay */ + if (weightDecay != 0.0) + AddScaledNMatrix(bundle->variables, nrows, ncols, weightDecay, bundle->gradients); + /* learning rates */ + if (learnRate != 0.0) + ScaleNMatrix(learnRate, nrows, ncols, bundle->gradients); + else if (bundle->neglearnrates != NULL) + MulNMatrix(bundle->gradients, bundle->neglearnrates, nrows, ncols, bundle->gradients); + /* update clipping */ + if (updtClip > 0.0) + ClipNMatrixVals(bundle->gradients, nrows, ncols, updtClip, (-1.0) * updtClip, bundle->gradients); + /* update l2 norm */ + if (updtL2Scale != 0.0) { + updtL2Scale *= ncols; + CalNMatrixL2NormByRow(bundle->gradients, GetTmpNVec()); + ScaleNVector(1.0 / fabs(updtL2Scale), bundle->gradients->rowNum, GetTmpNVec()); + if (updtL2Scale > 0.0) + ClipNVectorVals(GetTmpNVec(), bundle->gradients->rowNum, FLT_MAX, 1.0, GetTmpNVec()); + DivideNMatrixByRow(bundle->gradients, GetTmpNVec(), bundle->gradients); + } + /* momentum */ + ScaledSelfAddNMatrix(bundle->gradients, nrows, ncols, momentum, bundle->updates); + /* update the parameters */ + AddNMatrix(bundle->updates, nrows, ncols, bundle->variables); + /* parameter max norm */ + if (optWeightL2Norm == TRUE) { + CalNMatrixL2NormByRow(bundle->variables, GetTmpNVec()); + ScaleNVector(1.0 / weightL2NormBound, bundle->variables->rowNum, GetTmpNVec()); + ClipNVectorVals(GetTmpNVec(), bundle->variables->rowNum, FLT_MAX, 1.0, GetTmpNVec()); + DivideNMatrixByRow(bundle->variables, GetTmpNVec(), bundle->variables); + } +} + +void NVecBundleSGDUpdate(NVecBundle *bundle, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int nlen; + int batchIndex; + float scale; + + if (bundle == NULL) + HError(4390, "NVecBundleSGDUpdate: NULL bundle is given"); + if (bundle->kind != SIBK) + HError(4391, "NVecBundleSGDUpdate: Only SI bundle kind is allowed"); + batchIndex = GetGlobalBatchIndex(); + if (bundle->batchIndex != batchIndex - 1 && bundle->batchIndex != batchIndex) + HError(4392, "NVecBundleSGDUpdate: Wrong bundle batch index"); + if (bundle->batchIndex == batchIndex) + return; + ++bundle->batchIndex; + + nlen = (int) bundle->variables->vecLen; + /* gradient clipping */ + if (gradClip > 0.0) + ClipNVectorVals(bundle->gradients, nlen, gradClip, (-1.0) * gradClip, bundle->gradients); + /* gradient l2 norm */ + if (gradL2Scale != 0.0) { + gradL2Scale *= nlen; + CalNVectorL2Norm(bundle->gradients, &scale); + scale = fabs(gradL2Scale) / scale; + if (gradL2Scale > 0.0 && scale > 1.0) + scale = 1.0; + ScaleNVector(scale, nlen, bundle->gradients); + } + /* weight decay */ + if (weightDecay != 0.0) + AddScaledNVector(bundle->variables, nlen, weightDecay, bundle->gradients); + /* learning rates */ + if (learnRate != 0.0) + ScaleNVector(learnRate, nlen, bundle->gradients); + else if (bundle->neglearnrates != NULL) + MulNVector(bundle->gradients, bundle->neglearnrates, nlen, bundle->gradients); + /* update clipping */ + if (updtClip > 0.0) + ClipNVectorVals(bundle->gradients, nlen, updtClip, (-1.0) * updtClip, bundle->gradients); + /* update l2 norm */ + if (updtL2Scale != 0.0) { + updtL2Scale *= nlen; + CalNVectorL2Norm(bundle->gradients, &scale); + scale = fabs(updtL2Scale) / scale; + if (updtL2Scale > 0.0 && scale > 1.0) + scale = 1.0; + ScaleNVector(scale, nlen, bundle->gradients); + } + /* momentum */ + ScaledSelfAddNVector(bundle->gradients, nlen, momentum, bundle->updates); + /* update the parameters */ + AddNVector(bundle->updates, nlen, bundle->variables); + +} + +void SGDUpdateActivationOnlyLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + HError(4301, " SGDUpdateActivationOnlyLayer: Function not implemented"); +} + +void SGDUpdateConvolutionLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + HError(4301, "SGDUpdateConvolutionLayer: Function not implemented"); +} + +void SGDUpdatePerceptronLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int i; + + if (layerElem->layerKind != PERCEPTRONLAK) + HError(4392, "SGDUpdatePerceptronLayer: Function only applicable to PERCEPTRON layer"); + + if (layerElem->wghtMat->updateflag == TRUE) + NMatBundleSGDUpdate(layerElem->wghtMat, learnRate, momentum, weightDecay, gradClip, updtClip, gradL2Scale, updtL2Scale); + /*NMatBundleSGDUpdate(layerElem->wghtMat, learnRate, momentum, weightDecay, optWghtUpdtClip, wghtUpdtPosClip / clipScale, wghtUpdtNegClip / clipScale);*/ + if (layerElem->biasVec->updateflag == TRUE) + NVecBundleSGDUpdate(layerElem->biasVec, learnRate, momentum, weightDecay, gradClip, updtClip, gradL2Scale, updtL2Scale); + /*NVecBundleSGDUpdate(layerElem->biasVec, learnRate, momentum, weightDecay, optBiasUpdtClip, biasUpdtPosClip / clipScale, biasUpdtNegClip / clipScale); */ + if (layerElem->actfunVecs != NULL) + for (i = 1; i <= layerElem->actfunParmNum; ++i) + if (layerElem->actfunVecs[i]->updateflag == TRUE) + NVecBundleSGDUpdate(layerElem->actfunVecs[i], learnRate, momentum, weightDecay, gradClip, updtClip, gradL2Scale, updtL2Scale); + /*NVecBundleSGDUpdate(layerElem->actfunVecs[i], learnRate, momentum, weightDecay, optActfunUpdtClip, actfunUpdtPosClip / clipScale, actfunUpdtNegClip / clipScale);*/ + +} + +void SGDUpdateSubsamplingLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + HError(4301, "SGDUpdateSubsamplingLayer: Function not implemented"); +} + +void SGDUpdateANNSet(ANNSet *annSet, float scale, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + float curGradClip, curUpdtClip; + + /* do the sample number based normalisations */ + if (optNormWeightDecay == TRUE) + weightDecay *= scale; + if (optNormMomentum == TRUE) + momentum *= scale; + if (optNormGradientClip == TRUE) + gradClip *= scale; + if (optNormUpdateClip == TRUE) + updtClip *= scale; + if (optNormL2GradientScale == TRUE) + gradL2Scale *= scale; + if (optNormL2UpdateScale == TRUE) + updtL2Scale *= scale; + /* proceed each ANNDef */ + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + curGradClip = gradClip; + curUpdtClip = updtClip; + if (clipScaleFactor != 0.0) { + curGradClip /= GetCurClipScalingFactor(i, clipScaleFactor); + curUpdtClip /= GetCurClipScalingFactor(i, clipScaleFactor); + } + /* if no parameter to update in this layer */ + /*if (layerElem->trainInfo->updateFlag == 0) + continue;*/ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: + SGDUpdateActivationOnlyLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + case CONVOLUTIONLAK: + SGDUpdateConvolutionLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + case PERCEPTRONLAK: + SGDUpdatePerceptronLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + case SUBSAMPLINGLAK: + SGDUpdateSubsamplingLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + default: + HError(4399, "SGDUpdateANNSet: Unknown layer type"); + } + } + /* fetch next ANNDef */ + curAI = curAI->prev; + } + + ++updateIndex; +} + +ReturnStatus ReloadHMMSet(MSILink MSIPtr) { + int i, mappedTargetNum=-1; + + if (trace & T_TOP) { + if (MSIPtr->epochIdx <= 0) + printf("\tReload initial HMMSet\n"); + else + printf("\tReload HMMSet generated by epoch %d\n", MSIPtr->epochIdx); + } + if (optMapTarget) + mappedTargetNum = hset.annSet->mapStruct->mappedTargetNum; + /* reset current hset */ + ResetHMMSet(&hset); + ResetHeap(&modelHeap); + /* reset update index*/ + updateIndex = MSIPtr->updtIdx; + /* reset batch size (actually to regist a tmpNMat for FindMaxElement) */ + SetNBatchSamples(GetNBatchSamples()); + /* create HMMSet */ + CreateHMMSet(&hset, &modelHeap, TRUE); + /* AddMMFs */ + for (i = 0; i < MSIPtr->macCnt; ++i) + AddMMF(&hset, MSIPtr->macFN[i]); + /* Load HMM list */ + if (hmmListFn != NULL && MakeHMMSet(&hset, hmmListFn) < SUCCESS) + HError(4300, "ReloadHMMSet: MakeHMMSet failed"); + if (LoadHMMSet(&hset, MSIPtr->baseDir, MSIPtr->hmmExt) < SUCCESS) + HError(4300, "ReloadHMMSet: LoadHMMSet failed"); + if (hset.annSet == NULL) + HError(4300, "ReloadHMMSet: No ANN model available"); + /* init train struct */ + InitTrainInfo(&hset, optHasLabMat, optHasNLR, optHasSSG, TRUE); + InitErrMix(&hset); + if (optMapTarget) { + SetupStateInfoList(&hset); + if (SetupTargetMapList(&hset, mappingFn, mappedTargetNum) < SUCCESS) + HError(4300, "Initialise: Failed to load the target mapping file"); + InitMapStruct(&hset); + recVecMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + } + CreateTmpNMat(hset.hmem); + SetANNUpdateFlag(&hset); /* cz277 - 150811 */ + /*SetLayerUpdateFlag(&hset);*/ /* cz277 - 150811 */ + /*SetActFunUpdateFlag(&hset);*/ /* cz277 - 150811 */ + SetNMatUpdateFlag(&hset); /* cz277 - 151020 */ + SetNVecUpdateFlag(&hset); /* cz277 - 151020 */ + /* cz277 - 1015 */ + CheckANNBatchIndex(hset.annSet, 0); + /* cz277 - batch sync */ + SetFeaMixBatchIndex(hset.annSet, GetGlobalBatchIndex()); + SetNBundleBatchIndex(hset.annSet, GetGlobalBatchIndex()); + + /* update cache associated configs */ + for (i = 1; i <= hset.swidth[0]; ++i) + ResetCacheHMMSetCfg(cacheTr[i], &hset); + if (scriptHV != NULL) + for (i = 1; i <= hset.swidth[0]; ++i) + ResetCacheHMMSetCfg(cacheHV[i], &hset); + + return SUCCESS; +} + +void UpdateTransValues(int stateNum, float *acc1, float *acc2, float *newWeights, float *oldWeights, float C) { + int i, iter; + float sum=0.0, objVal[3]={0.0,0.0,0.0}, accVal, maxF; + Vector fValues = CreateVector(&gstack, stateNum); + + if (C == 0) { + return; + } + for (i = 1; i <= stateNum; ++i) { + sum += acc1[i]; + } + if (sum < 1.0) { + return; + } + for (iter = 1; iter <= 100; ++iter) { /* 100 is copied from HMMIRest */ + /* calculate objective */ + objVal[2] = objVal[1]; + objVal[1] = objVal[0]; + objVal[0] = 0.0; + for (i = 1; i <= stateNum; ++i) { + if (newWeights[i] > 0.0) { + if (acc2 != NULL) + accVal = acc2[i]; + else + accVal = 0.0; + objVal[0] = acc1[i] * log(newWeights[i]) - accVal / C * exp(log(newWeights[i] / oldWeights[i]) * C) + objVal[0]; + } + } + if (objVal[0] < objVal[1] && objVal[0] < objVal[2] && objVal[2] != 0 && fabs(objVal[0] - objVal[1]) > fabs(objVal[0]) * 0.0001) + HError(-1, "UpdateTransValues: Objective not increasing, %e < %e < %e", objVal[0], objVal[1], objVal[2]); + /* find max f_m */ + maxF = 0.0; + for (i = 1; i <= stateNum; ++i) { + if (newWeights[i] > 0.0) { + if (acc2 != NULL) + accVal = acc2[i]; + else + accVal = 0.0; + fValues[i] = accVal / oldWeights[i] * exp(log(newWeights[i] / oldWeights[i]) * (C - 1)); + if (C > 1.0) + fValues[i] *= C; + maxF = MAX(maxF, fValues[i]); + /*if (fValues[i] > maxF) + maxF = fValues[i];*/ + } + } + sum = 0.0; + for (i = 1; i <= stateNum; ++i) { + if (newWeights[i] > 0.0) { + newWeights[i] = newWeights[i] * (maxF - fValues[i]) + acc1[i]; + sum += newWeights[i]; + } + } + for (i = 1; i <= stateNum; ++i) + newWeights[i] /= sum; + } + Dispose(&gstack, fValues); +} + +/* cz277 - trans */ +void UpdateHMMTransLab(int px, HLink hmm) { + int i, j, N; + float x, occi, sum; + TrAcc *ta; + + ta = (TrAcc *) GetHook(hmm->transP); + if (ta == NULL) + return; + N = hmm->numStates; + for (i = 1; i < N; ++i) { + occi = ta->occ[i]; + sum = 0.0; + if (occi > 0.0) { + for (j = 2; j <= N; ++j) { + x = ta->tran[i][j] / occi; + hmm->transP[i][j] = x; + sum += x; + } + } + else { + HError(-1, "UpdateHMMTransLab: Model %d[%s]: no transition out of state %d", px, HMMPhysName(&hset, hmm), i); + } + for (j = 2; j <= N; ++j) { + x = hmm->transP[i][j] / sum; + if (x < MINLARG) { + hmm->transP[i][j] = LZERO; + } + else { + hmm->transP[i][j] = log(x); + } + } + } + SetHook(hmm->transP, NULL); +} + +void UpdateHMMTransLat(int px, HLink hmm) { + int i, j, stateNum=hmm->numStates; + TrAcc *trAcc1, *trAcc2, *trAcc3; + Vector newWeights = CreateVector(&gstack, stateNum); + Vector oldWeights = CreateVector(&gstack, stateNum); + float transP, occ; + + trAcc1 = GetHook(hmm->transP); + trAcc2 = (NumAccs == 1? NULL: trAcc1 + 1); + trAcc3 = ((NumAccs == 3 && optHasISmooth)? trAcc1 + 2: NULL); + if (trAcc1 == NULL) { + return; + } + + for (i = 1; i < stateNum; ++i) { + if (trAcc3 != NULL) + occ = trAcc3->occ[i]; + else + occ = trAcc1->occ[i]; + if (occ > MinOccTrans) { + for (j = 1; j <= stateNum; ++j) { + if (hmm->transP[i][j] > MINEARG) + transP = exp(hmm->transP[i][j]); + else + transP = 0.0; + newWeights[j] = transP; + oldWeights[j] = transP; + } + if ((uFlags & UPTRANS) && (trAcc2 != NULL)) + for (j = 1; j < stateNum; ++j) + trAcc2->tran[i][j] = 0.0; + UpdateTransValues(stateNum, trAcc1->tran[i], trAcc2? trAcc2->tran[i]: NULL, newWeights, oldWeights, CTrans); + for (j = 1; j < stateNum; ++j) + if (newWeights[i] == 0 && oldWeights[i] != 0) + HError(-1, "UpdateTrans: Transitions going to zero: advise setting e.g. ISMOOTHTAUT = 10"); + for (j = 1; j <= stateNum; ++j) { + if (newWeights[j] > 0.0) + hmm->transP[i][j] = log(newWeights[j]); + else + hmm->transP[i][j] = LZERO; + } + } + } + SetHook(hmm->transP, NULL); + /*Dispose(&gstack, oldWeights);*/ + Dispose(&gstack, newWeights); +} + +/* cz277 - trans */ +void UpdateAllTrans(void) { + HMMScanState hss; + int px; + + px = 1; + NewHMMScan(&hset, &hss); + do { + switch (updtKind) { + case BATLEVEL: + UpdateHMMTransLab(px++, hss.hmm); + break; + case UTTLEVEL: + UpdateHMMTransLat(px++, hss.hmm); + break; + default: + HError(-1, "UpdateAllTrans: Unknown update mode for transitions"); + } + } while (GoNextHMM(&hss)); + EndHMMScan(&hss); + + /* reset the accs */ + ResetHeap(&accHeap); + AttachAccsParallel(&hset, &accHeap, uFlags, NumAccs); + ZeroAccsParallel(&hset, uFlags, NumAccs); +} + +Boolean TermLRSchdOrNot(int curEpochNum) { + float floatVal; + float curPosLR = (-1.0) * curNegLR; + + if (curEpochNum == 0) { + return TRUE; + } + if (minEpochNum > 0 && curEpochNum < minEpochNum) { + return TRUE; + } + switch (schdKind) { + case ADAGRADSK: + if (maxEpochNum > 0 && curEpochNum >= maxEpochNum) { + return FALSE; + } + break; + case EXPSK: + if ((maxEpochNum > 0 && curEpochNum >= maxEpochNum) || (curPosLR < minLR)) { + return FALSE; + } + break; + case LISTSK: + if (curEpochNum >= maxEpochNum) { + return FALSE; + } + break; + case NEWBOBSK: + if (maxEpochNum > 0 && curEpochNum >= maxEpochNum) { + if (trace & T_SCH) + printf("NewBob: Stop since the maximum allowed epoch number is reached\n"); + + return FALSE; + } + if (curPosLR < minLR) { + if (trace & T_SCH) + printf("NewBob: Stop since the criterion value change is smaller than the allowed minimum\n"); + + return FALSE; + } + floatVal = tailMSI->crtVal - tailMSI->prev->crtVal; + if (NewBob_Status == 1 && floatVal < NewBob_Stop) { + if (trace & T_SCH) + printf("NewBob: Stop since the criterion value change is smaller than the stopping threshold\n"); + + /* need to reload previous model */ + if (floatVal < 0.0) { + /* have model to detach */ + if (tailMSI != &inputMSI) { + PopModelSetInfo(); + } + ReloadHMMSet(tailMSI); + } + return FALSE; + } + break; + default: + HError(4399, "Unknown learning rate scheduler"); + } + + return TRUE; +} + +void SaveLRSchd(char *fname) { + FILE *fp; + + if ((fp = fopen(fname, "w")) == NULL) + HError(4311, "SaveLRSchd: Fail to save the auxiliary file"); + + switch(schdKind) { + case NEWBOBSK: + /* NEWBOB */ + fprintf(fp, " "); + fprintf(fp, "NEWBOB"); + fprintf(fp, "\n"); + /* ? */ + fprintf(fp, " "); + switch (NewBob_Crt) { + case ACCNBC: + fprintf(fp, "ACC"); + case MAPACCNBC: + fprintf(fp, "MAPACC"); + case LLHVALNBC: + fprintf(fp, "LLHVAL"); + case MAPLLHVALNBC: + fprintf(fp, "MAPLLHVAL"); + default: + HError(4399, "SaveLRSchd: Unsupported NewBob criterion"); + } + fprintf(fp, "\n"); + /* INITIAL or RAMPING */ + fprintf(fp, " "); + if (NewBob_Status == 0) + fprintf(fp, "INITIAL"); + else if (NewBob_Status == 1) + fprintf(fp, "RAMPING"); + else + fprintf(fp, "UNKNOWN"); + fprintf(fp, "\n"); + /* x.y */ + fprintf(fp, " "); + fprintf(fp, "%e", NewBob_RampStart); + fprintf(fp, "\n"); + /* x.y */ + fprintf(fp, " "); + fprintf(fp, "%e", NewBob_Stop); + fprintf(fp, "\n"); + default: + HError(4399, "SaveLRSchd: Unsupported learning rate scheduler for the auxiliary file"); + } + /* x.y */ + fprintf(fp, " "); + fprintf(fp, "%e", (-1.0) * curNegLR); + fprintf(fp, "\n"); + /* */ + fprintf(fp, " "); + fprintf(fp, "%d", epochOff); + fprintf(fp, "\n"); +} + +void LoadLRSchd(char *fname) { + Source auxSrc; + char buf[MAXSTRLEN]; + float floatVal; + + if (InitSource(fname, &auxSrc, NoFilter) < SUCCESS) + HError(4310, "LoadLRSchd: cannot open the auxiliary file"); + + SkipComment(&auxSrc); + /* ? */ + ReadString(&auxSrc, buf); + if (strcmp(buf, "") == 0) { + if (strcmp(buf, "NEWBOB") == 0) + schdKind = NEWBOBSK; + else + HError(4326, "LoadLRSchd: Unsupported learning rate kind"); + /* proceed each learning rate related options */ + while (ReadString(&auxSrc, buf)) { + /* ? */ + if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) { + ReadString(&auxSrc, buf); + if (strcmp(buf, "ACC") == 0) + NewBob_Crt = ACCNBC; + else if (strcmp(buf, "MAPACC") == 0) + NewBob_Crt = MAPACCNBC; + else if (strcmp(buf, "LLHVAL") == 0) { + NewBob_Crt = LLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else if (strcmp(buf, "MAPLLHVAL") == 0) { + NewBob_Crt = MAPLLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else + HError(4326, "LoadLRSchd: Unknown criterion for NewBob"); + } + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) { /* ? */ + ReadString(&auxSrc, buf); + if (strcmp(buf, "INITIAL") == 0) + NewBob_Status = 0; + else if (strcmp(buf, "RAMPING") == 0) + NewBob_Status = 1; + else + HError(4326, "LoadLRSchd: Unknown NewBob scheduler status"); + } + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) /* x.y */ + ReadFloat(&auxSrc, &NewBob_DecayFactor, 1, FALSE); + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) /* x.y */ + ReadFloat(&auxSrc, &NewBob_RampStart, 1, FALSE); + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) /* x.y */ + ReadFloat(&auxSrc, &NewBob_Stop, 1, FALSE); + else if (strcmp(buf, "") == 0) { /* x.y */ + ReadFloat(&auxSrc, &floatVal, 1, FALSE); + curNegLR = (-1.0) * floatVal; + } + else if (strcmp(buf, "") == 0) /* x */ + ReadInt(&auxSrc, &epochOff, 1, FALSE); + else + HError(4326, "LoadLRSchd: Unknown option in the auxiliary file"); + } + } + + CloseSource(&auxSrc); +} + +void UpdateLRSchdAdaGrad(ANNSet *annSet, float eta, int K) { + int i, j; + LELink layerElem; + AILink annInfo; + ADLink annDef; + + /* reset all processed fields */ + ResetAllBundleProcessedFields("UpdateLRSchdAdaGrad", annSet); + + /* initialise ANN info */ + annInfo = annSet->defsHead; + while (annInfo != NULL) { + /* get current ANN def */ + annDef = annInfo->annDef; + /* proceed each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + /* get current layer */ + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(4301, "UpdateLRSchdAdaGrad: Function not implemented"); break; + case CONVOLUTIONLAK: HError(4301, "UpdateLRSchdAdaGrad: Function not implemented"); break; + case PERCEPTRONLAK: + if (layerElem->wghtMat->processed == FALSE) { + CompAdaGradNMatrix(eta, K, layerElem->wghtMat->sumsquaredgrad, layerElem->wghtMat->neglearnrates); + layerElem->wghtMat->processed = TRUE; + } + if (layerElem->biasVec->processed == FALSE) { + CompAdaGradNVector(eta, K, layerElem->biasVec->sumsquaredgrad, layerElem->biasVec->neglearnrates); + layerElem->biasVec->processed = TRUE; + } + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + if (layerElem->actfunVecs[j]->processed == FALSE) { + CompAdaGradNVector(eta, K, layerElem->actfunVecs[j]->sumsquaredgrad, layerElem->actfunVecs[j]->neglearnrates); + layerElem->actfunVecs[j]->processed = TRUE; + } + break; + case SUBSAMPLINGLAK: HError(4301, "UpdateLRSchdAdaGrad: Function not implemented"); break; + default: + HError(4399, "UpdateLRSchdAdaGrad: Unknown layer kind"); + } + } + /* fetch next ANN info */ + annInfo = annInfo->next; + } +} + +/* per update */ +float UpdateLRSchdPerU(int curEpochNum, int updtSamp) { + float retNegLR = 0.0; + + switch (schdKind) { + case ADAGRADSK: + retNegLR = (-1.0) * initLR; + if (optNormLearnRate) + retNegLR /= updtSamp; + UpdateLRSchdAdaGrad(hset.annSet, retNegLR, AdaGrad_K); + retNegLR = 0.0; + break; + case EXPSK: + if (Exp_Gamma <= 0.0) { + if (minEpochNum <= 0) + Exp_Gamma = 2.0 * minEpochNum * tSampCntTr; + else if (maxEpochNum <= 0) + Exp_Gamma = 2.0 * maxEpochNum * tSampCntTr; + else + Exp_Gamma = 2.0 * Exp_Base * tSampCntTr; + printf("UpdateLRSchdPerU: GAMMA for exponential learning rate scheduler not set, reset to %e\n", Exp_Gamma); + } + retNegLR = (-1.0) * Exp_TrSampIdx / Exp_Gamma; + curNegLR = (-1.0) * initLR * pow(Exp_Base, retNegLR); + retNegLR = curNegLR; + if (optNormLearnRate) + retNegLR /= updtSamp; + Exp_TrSampIdx += updtSamp; + break; + case LISTSK: + case NEWBOBSK: + retNegLR = curNegLR; + if (optNormLearnRate) + retNegLR /= updtSamp; + break; + default: + break; + } + return retNegLR; +} + +/* per epoch */ +void UpdateLRSchdPerE(int curEpochNum) { + float floatVal; + + switch (schdKind) { + case LISTSK: + curNegLR = (-1.0) * List_LRs[curEpochNum + 1]; + break; + case NEWBOBSK: + if (curEpochNum == 0) + curNegLR = (-1.0) * initLR; + else if (NewBob_Status == 0) { /* in initia status */ + if (tailMSI->prev != NULL) + floatVal = tailMSI->crtVal - tailMSI->prev->crtVal; + else + floatVal = 1.0; + if (floatVal < NewBob_RampStart) { + if (curEpochNum < minEpochNum) { /* to restore the model and reduce the learning rate by half */ + if (trace & T_SCH) + printf("NewBob: Val diff %e < RAMPSTART = %e, learning rate *= DECAYFACTOR = %e\n", floatVal, NewBob_RampStart, NewBob_DecayFactor); + curNegLR *= NewBob_DecayFactor; + } + else { /* go into the ramping status */ + if (trace & T_SCH) + printf("NewBob: Val diff %e < RAMPSTART = %e and cur epoch %d is > min %d, learning rate *= DECAYFACTOR = %e, start ramping\n", floatVal, NewBob_RampStart, curEpochNum, minEpochNum, NewBob_DecayFactor); + curNegLR *= NewBob_DecayFactor; + NewBob_Status = 1; + } + /* need to reload the model? */ + if (floatVal < 0.0) { + /* have model to detach */ + if (tailMSI != &inputMSI) + PopModelSetInfo(); + if (trace & T_SCH) + printf("NewBob: Value diff %e < 0, restore previous model set\n", floatVal); + ReloadHMMSet(tailMSI); + } + } + } + else if (NewBob_Status == 1) /* in ramping status */ + curNegLR *= NewBob_DecayFactor; + break; + default: + break; + } +} + +float GetConfParmPerEpoch(int curEpochNum, Vector confVec) { + float value = 0.0; + + if (confVec != NULL) { + if (curEpochNum > VectorSize(confVec) - 1) + value = confVec[VectorSize(confVec)]; + else + value = confVec[curEpochNum + 1]; + } + + return value; +} + +void ComputeLogLikelihoods(int nLoaded) { + int i, S; + LELink layerElem; + + S = hset.swidth[0]; + /* synchronise the data */ + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + /* download likelihoods */ + if ((optTrainMode == SEQTM) || (showObjFunKind & MLOF)) { + ApplyLogTrans(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, hset.annSet->llhMat[i]); + AddNVectorTargetPen(hset.annSet->llhMat[i], hset.annSet->penVec[i], nLoaded, hset.annSet->llhMat[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->llhMat[i]); +#endif + } + /* download likelihoods (for mapped targets) */ + if (optMapTarget) { + UpdateOutMatMapSum(hset.annSet, nLoaded, i); + /* convert posteriors to llr */ + if (showObjFunKind & MLOF) { + ApplyLogTrans(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, hset.annSet->mapStruct->llhMatMapSum[i]); + AddNVectorTargetPen(hset.annSet->mapStruct->llhMatMapSum[i], hset.annSet->mapStruct->penVecMapSum[i], nLoaded, hset.annSet->mapStruct->llhMatMapSum[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->llhMatMapSum[i]); +#endif + } +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->outMatMapSum[i]); +#endif + } + /* download posteriors */ +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->yFeaMats[1]); +#endif + } +} + +void AccCriteria(CriteriaInfo *criteria, DataCache **cache, int nLoaded, Boolean accBatch, Boolean accUtter) { + int i, S; + LELink layerElem; + + S = hset.swidth[0]; + /* accumulate for the criteria */ + if (accBatch == TRUE) { + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + FindMaxElement(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, recVec); + if (showObjFunKind & MLOF) + FindMaxElement(hset.annSet->llhMat[i], nLoaded, layerElem->nodeNum, recVecLLH); + if (optMapTarget) { + FindMaxElement(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecMapSum); + if (showObjFunKind & MLOF) + FindMaxElement(hset.annSet->mapStruct->llhMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecLLHMapSum); + UpdateLabMatMapSum(hset.annSet, nLoaded, i); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->labMatMapSum[i]); +#endif + } + AccCriteriaPerB(cache[i], nLoaded, &criteria[i]); + } + } + /* accumulate at utterance level */ + if (accUtter == TRUE) + for (i = 1; i <= S; ++i) + AccCriteriaPerU(cache[i], nLoaded, &criteria[i]); +} + +Boolean BatchLevelUpdateOrNot(VisitKind visitKind, Boolean finish, int batchCnt, int nLoaded) { + + if (finish == TRUE) + return TRUE; + + if (batchCnt % numPerUpdt == 0) { + switch (visitKind) { + case PLNONEVK: + case PLUTTVK: + case PLUTTFRMVK: + if (batchCnt >= bgWaitNBatchPL && nLoaded >= edAccBatchLenPL) + return TRUE; + return FALSE; + default: + break; + } + return TRUE; + } + return FALSE; +} + +void BatchLevelTrainProcess(int curEpochNum) { + int i, S, nLoaded; + int updtCnt, sampCnt, batchCnt, tSampCnt, uttCnt; + Boolean finish = FALSE; + Boolean accGrad; + CriteriaInfo criteria[SMAX]; + float retNegLR; + /* cz277 - mmt */ + float scale, momentum, weightDecay, posGradClip, negGradClip; + + S = hset.swidth[0]; + updtCnt = 0; + sampCnt = 0; + tSampCnt = 0; + /* process the first batch */ + batchCnt = 0; + uttCnt = -1; + + /* initialise the criteriaInfo */ + memset(&criteria, 0, sizeof(CriteriaInfo) * SMAX); + SetGlobalBatchIndex(0); + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, 0); + SetFeaMixBatchIndex(hset.annSet, 0); + /* initialise the cache until all data finished */ + for (i = 1; i <= S; ++i) + InitCache(cacheTr[i]); + + /* cz277 - gradprobe */ +#ifdef GRADPROBE + ClearGradProbe(hset.annSet); +#endif + weightDecay = GetConfParmPerEpoch(curEpochNum, List_WeightDecay); + momentum = GetConfParmPerEpoch(curEpochNum, List_MMTs); + accGrad = FALSE; + while (!finish) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheTr[i], &nLoaded, &uttCnt); + UnloadCacheData(cacheTr[i]); + LoadCacheData(cacheTr[i]); + } + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); /* do forwarding */ + ComputeLogLikelihoods(nLoaded); /* compute sequence level criteria */ + AccCriteria(criteria, cacheTr, nLoaded, TRUE, FALSE); /* accumulate classification criteria */ + BackwardProp(objfunKind, hset.annSet, nLoaded, accGrad); /* do back-propagation */ + accGrad = TRUE; + /* accumulate the statistics */ + batchCnt += 1; + sampCnt += nLoaded; + tSampCnt += nLoaded; + if (BatchLevelUpdateOrNot(cacheTr[1]->visitKind, finish, batchCnt, nLoaded)) { + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, GetGlobalBatchIndex() - 1); + retNegLR = UpdateLRSchdPerU(curEpochNum, sampCnt); + NormBackwardPropGradients(hset.annSet, 1.0); + scale = ((float) sampCnt) / (GetNBatchSamples() * numPerUpdt); + SGDUpdateANNSet(hset.annSet, scale, retNegLR, momentum, weightDecay, gradientClip, updateClip, gradientL2Scale, updateL2Scale); + accGrad = FALSE; + /* update updtCnt */ + ++updtCnt; + sampCnt = 0; + } + } + /* cz277 - trans */ + /* update the transition probabilities */ + if ((uFlags & UPTRANS) != 0) + UpdateAllTrans(); + + /* update the target penalties */ + if ((curEpochNum == 0) && ((uFlags & UPTARGETPEN) != 0) && (hset.hsKind == HYBRIDHS)) + for (i = 1; i <= S; ++i) + UpdateTargetLogPrior(cacheTr[i], logObsvPrior); + /* show criteria */ + for (i = 1; i <= S; ++i) { + if (S > 1) + printf("\t\tStream %d: ", i); + PrintCriteria(&criteria[i], "Train"); + } + /* cz277 - gradprobe */ +#ifdef GRADPROBE + ShowGradProbe(hset.annSet, batchCnt); +#endif + + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheTr[i]); + /* output the timming */ + printf("\t\tBatch count = %d, Update count = %d\n", batchCnt, updtCnt); +} + +void ForceNMatrixValueByRow(NMatrix *mat, int rowIdx, float val) { + int colNum = mat->colNum; + +#ifdef CUDA + SetNSegmentCUDA(val, &mat->devElems[rowIdx * colNum], colNum); +#else + SetNSegmentCPU(val, &mat->matElems[rowIdx * colNum], colNum); +#endif +} + +/* cz277 - frame rejection */ +void MMIFrameRejection(ANNSet *annSet, int batLen, FBLatInfo *fbInfoPtr, CriteriaInfo *crtList) { + double denOcc; + int i, s; + /*IntVec labVec;*/ + CriteriaInfo *criteria; + + if (optFrameReject == FALSE) { + return; + } + if (objfunKind != MMIOF) { + HError(-4324, "MMIFrameRejection: Frame rejection is only valid for MMI training"); + return; + } + /*if ((labelKind & LABLK) == 0) { + HError(9999, "MMIFrameRejection: Hard labels are needed for frame rejection"); + return; + }*/ + if (optHasFSmooth) { + HError(-4324, "MMIFrameRejection: Frame rejection conflicts with F-smoothing"); + return; + } + + for (s = 1; s <= fbInfoPtr->S; ++s) { + /*labVec = fbInfoPtr->refVec[s];*/ + criteria = &crtList[s]; + for (i = 0; i < batLen; ++i) { + denOcc = fbInfoPtr->occVec[s][i + 1]; + if (denOcc < minOccFrameReject) { + ForceNMatrixValueByRow(hset.annSet->outLayers[s]->yFeaMats[1], i, 0.0); /* cz277 - many */ + ++criteria->MMIFRAcc; + } + } + } +} + +Boolean LatticeBasedSequenceTraining(UttElem *uttElem, int nLoaded, Boolean hasFSmooth, Boolean hasFrameReject, CriteriaInfo *criteria) { + int i, S; + LELink layerElem; + Boolean sentFail = FALSE; + Lattice *MPECorrLat = NULL; + + S = hset.swidth[0]; + /* reset the occ matrices */ + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + if (hasFSmooth == TRUE) { + ComputeBackwardPropOutActivation(objfunFSmooth, nLoaded, layerElem, 1); + ScaleNMatrix(1.0 - FSmoothH, nLoaded, layerElem->nodeNum, layerElem->yFeaMats[1]); + } + else + SetNMatrix(0.0, layerElem->yFeaMats[1], nLoaded); +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->yFeaMats[1]); +#endif + } + if (procNumLats) { + LoadNumLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, NULL)) + FBLatSecondPass(&fbInfo, corrIdx, 999); + else + sentFail = TRUE; + } + if (procDenLats && (!sentFail)) { + switch (objfunKind) { + case SMBROF: + case MPEOF: + case MWEOF: + MPECorrLat = uttElem->numLats[0]; + break; + default: + MPECorrLat = NULL; + } + LoadDenLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, MPECorrLat)) + FBLatSecondPass(&fbInfo, recogIdx1, recogIdx2); + else + sentFail = TRUE; + } +#ifdef CUDA + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + SyncNMatrixHost2Dev(layerElem->yFeaMats[1]); + } +#endif + if (hasFrameReject == TRUE) + MMIFrameRejection(hset.annSet, nLoaded, &fbInfo, criteria); + + return !sentFail; +} + +void UtterLevelTrainProcess(int curEpochNum) { + int i, S, nLoaded; + int updtCnt, sampCnt, batchCnt, tSampCnt, tUttCnt, uttCnt, updtUttCnt; + Boolean finish = FALSE; + Boolean accGrad, sentSuccess; + CriteriaInfo criteria[SMAX]; + float retNegLR; + Boolean skipOneUtt = FALSE; + UttElem *uttElem; + /* cz277 - mmt */ + float scale, momentum, weightDecay, posGradClip, negGradClip; + + S = hset.swidth[0]; + updtCnt = 0; + tSampCnt = 0; + /* process the first batch */ + batchCnt = 0; + tUttCnt = 0; + SetGlobalBatchIndex(0); + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, 0); + SetFeaMixBatchIndex(hset.annSet, 0); + /* initialise the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheTr[i]); + + /* initialise the criteriaInfo */ + memset(&criteria, 0, sizeof(CriteriaInfo) * SMAX); + weightDecay = GetConfParmPerEpoch(curEpochNum, List_WeightDecay); + momentum = GetConfParmPerEpoch(curEpochNum, List_MMTs); + /* process until all data are finished */ + while (!finish) { + /* set uttCnt */ + accGrad = FALSE; + sampCnt = 0; + updtUttCnt = 0; + while ((!finish) && (updtUttCnt < numPerUpdt)) { + uttCnt = 1; + uttElem = GetCurUttElem(cacheTr[1]); /* cz277 - xform */ + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* get current utterance info */ + if (optTrainMode == SEQTM) { + if (uttElem->uttLen > GetNBatchSamples()) { + HError(-4327, "UtterLevelTrainProcess: %s has %d samples > batch size %d", uttElem->uttName, uttElem->uttLen, GetNBatchSamples()); + skipOneUtt = TRUE; + } + else + skipOneUtt = FALSE; + /* init fbInfo */ + fbInfo.T = uttElem->uttLen; + fbInfo.uFlags = cacheTr[1]->labelInfo->uFlags; + if (optFrameReject) + fbInfo.rejFrame = optFrameReject; + LoadXFormsFromUttElem(uttElem, &fbInfo); + } + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheTr[i], &nLoaded, &uttCnt); + LoadCacheData(cacheTr[i]); + } + /* whether skip this utterance or not */ + if (skipOneUtt) + continue; + /* forward propagation */ + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); + sentSuccess = TRUE; + /* synchronise the data */ + ComputeLogLikelihoods(nLoaded); + /* for sequence training */ + if (optTrainMode == SEQTM) + sentSuccess = LatticeBasedSequenceTraining(uttElem, nLoaded, optHasFSmooth, optFrameReject, criteria); + /* accumulate for the criteria */ + AccCriteria(criteria, cacheTr, nLoaded, optTrainMode == FRAMETM, (optTrainMode == SEQTM) && sentSuccess); + /* backward propagation */ + if (sentSuccess) { + BackwardProp(objfunKind, hset.annSet, nLoaded, accGrad); + } else { + SetFeaMixBatchIndex(hset.annSet, GetGlobalBatchIndex());/*cz277-batch sync*/ + } + /* update statistics */ + accGrad = TRUE; + batchCnt += 1; + sampCnt += nLoaded; + } + ++updtUttCnt; + /* update cache status */ + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheTr[i]); + } + tUttCnt += updtUttCnt; + /* do the update */ + if (sampCnt != 0) { + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, GetGlobalBatchIndex() - 1); + /* update the learning rates*/ + retNegLR = UpdateLRSchdPerU(curEpochNum, sampCnt); + /* update the parameters */ + NormBackwardPropGradients(hset.annSet, 1.0); + scale = ((float) sampCnt) / (GetNBatchSamples() * numPerUpdt); + SGDUpdateANNSet(hset.annSet, scale, retNegLR, momentum, weightDecay, gradientClip, updateClip, gradientL2Scale, updateL2Scale); + /* update updtCnt */ + ++updtCnt; + } + /* update statistics */ + tSampCnt += sampCnt; + } + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* update the target penalties */ + if (((uFlags & UPTARGETPEN) != 0) && (hset.hsKind == HYBRIDHS)) + for (i = 1; i <= S; ++i) + UpdateTargetLogPrior(cacheTr[i], logObsvPrior); + /* update the transition probabilities */ + if ((uFlags & UPTRANS) != 0) + UpdateAllTrans(); + /* show criteria */ + for (i = 1; i <= S; ++i) { + if (S > 1) + printf("\t\tStream %d: ", i); + PrintCriteria(&criteria[i], "Train"); + } + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheTr[i]); + /* output the timming */ + printf("\t\tTotal batch count = %d, update count = %d\n", batchCnt, updtCnt); +} + +void UtterLevelHVProcess(void) { + int i, S, nLoaded; + int sampCnt, batchCnt, tSampCnt, tUttCnt, uttCnt; + Boolean finish = FALSE, sentSuccess; + CriteriaInfo criteria[SMAX]; + Boolean skipOneUtt = FALSE; + UttElem *uttElem; + + S = hset.swidth[0]; + batchCnt = 0; + tSampCnt = 0; + tUttCnt = 0; + SetGlobalBatchIndex(0); + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, 0); + SetFeaMixBatchIndex(hset.annSet, 0); + /* initialise the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheHV[i]); + + /* initialise the criteriaInfo */ + memset(&criteria, 0, sizeof(CriteriaInfo) * SMAX); + /* process until all data are finished */ + while (!finish) { + sampCnt = 0; + uttCnt = 1; + uttElem = GetCurUttElem(cacheHV[1]); + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* get current utterance info */ + if (optTrainMode == SEQTM) { + if (uttElem->uttLen > GetNBatchSamples()) { + HError(-4327, "UtterLevelHVProcess: %s has %d samples > batch size %d", uttElem->uttLen, uttElem->uttName, GetNBatchSamples()); + skipOneUtt = TRUE; + } + else + skipOneUtt = FALSE; + /* init fbInfo */ + fbInfo.T = uttElem->uttLen; + fbInfo.uFlags = cacheHV[1]->labelInfo->uFlags; + fbInfo.rejFrame = FALSE; + LoadXFormsFromUttElem(uttElem, &fbInfo); + } + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheHV[i], &nLoaded, &uttCnt); + LoadCacheData(cacheHV[i]); + } + /* whether skip this utterance or not */ + if (skipOneUtt) + continue; + ForwardProp(hset.annSet, nLoaded, cacheHV[1]->CMDVecPL); /* forward propagation */ + sentSuccess = TRUE; + ComputeLogLikelihoods(nLoaded); /* compute sequence level show criteria */ + /* for sequence training */ + if (optTrainMode == SEQTM) + sentSuccess = LatticeBasedSequenceTraining(uttElem, nLoaded, FALSE, FALSE, criteria); + /* accumulate the statistics for criteria */ + AccCriteria(criteria, cacheHV, nLoaded, optTrainMode == FRAMETM, (optTrainMode == SEQTM) && sentSuccess); + batchCnt += 1; + sampCnt += nLoaded; + } + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheHV[i]); + /* update the statistics */ + tUttCnt += 1; + tSampCnt += sampCnt; + } + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* show criteria */ + for (i = 1; i <= S; ++i) { + if (S > 1) + printf("\t\tStream %d: ", i); + PrintCriteria(&criteria[i], "Validation"); + } + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheHV[i]); + /* output statistics */ + printf("\t\tBatch count = %d\n", batchCnt); +} + +void SafetyCheck() { + if (optTrainMode == SEQTM) { + if (hset.hsKind != HYBRIDHS) + HError(4324, "SafetyCheck: Unsupported HMM set kind for sequence training"); + } else if (optTrainMode == FRAMETM) { + if (hset.hsKind != HYBRIDHS && hset.hsKind != ANNHS) + HError(4324, "SafetyCheck: Unsupported HMM set kind for frame level training"); + } +} + +/* cz277 - pact */ +void SetStaticUpdtCode(int statusCode) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + printf("SetStaticUpdtCode: Executing oper code %d\n", statusCode); + curAI = hset.annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + layerElem->status = statusCode; + } + curAI = curAI->next; + } +} + +/* cz277 - pact */ +void UtterLevelStaticUpdate(int curUpdtCode) { + int i, S, uttCnt, nLoaded; + Boolean finish = FALSE; + UttElem *uttElem; + + S = hset.swidth[0]; + /* initialise the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheTr[i]); + /* set status code */ + SetStaticUpdtCode(curUpdtCode); + /* process until all data are finished */ + while (!finish) { + uttCnt = 1; + uttElem = GetCurUttElem(cacheTr[1]); + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* process current utterance */ + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheTr[i], &nLoaded, &uttCnt); + LoadCacheData(cacheTr[i]); + } + /* forward propagation */ + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); + /*switch (curUpdtCode) { + case 0: + case 3: + case 4: + ForwardPropBlank(hset.annSet, nLoaded); + break; + case 1: + case 2: + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); + break; + default: + break; + }*/ + } + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheTr[i]); + } + /* reset replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* update the target penalties */ + if ((curUpdtCode == 0) && ((uFlags & UPTARGETPEN) != 0) && (hset.hsKind == HYBRIDHS)) + for (i = 1; i <= S; ++i) + UpdateTargetLogPrior(cacheTr[i], logObsvPrior); + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheTr[i]); +} + +void SaveModelSet(char *baseDir) { + char buf[MAXSTRLEN]; + + /* saves current model */ + SaveHMMSet(&hset, baseDir, newExt, NULL, saveBinary); + /* saves update */ + if (optHasMMT) { + MakeFN(fnUpdate, baseDir, NULL, buf); + SaveANNUpdate(&hset, buf, saveBinary); + } + /* saves nlr */ + if (optHasNLR) { + MakeFN(fncurNegLR, baseDir, NULL, buf); + SaveANNNegLR(&hset, buf, saveBinary); + } + /* saves ssg */ + if (optHasSSG) { + MakeFN(fnSquareGrad, baseDir, NULL, buf); + SaveANNStore(&hset, buf, saveBinary); + } + /* saves schd */ + if (optSavSchd) { + MakeFN(fnLRSchd, baseDir, NULL, buf); + SaveLRSchd(buf); + } +} + +int main(int argc, char *argv[]) { + int i, curEpochNum, curEpochIdx; + char *str; + char buf[MAXSTRLEN], curEpcDir[MAXSTRLEN], absEpcDir[MAXSTRLEN]; + clock_t stClock, edClock; + MSILink MSIPtr; + + if (InitShell(argc, argv, hntrainsgd_version, hntrainsgd_vc_id) < SUCCESS) + HError(4300, "HNTrainSGD: InitShell failed"); + InitMem(); + InitMath(); + InitSigP(); + InitWave(); + InitLabel(); + InitAudio(); +#ifdef CUDA + InitCUDA(); +#endif + InitANNet(); + InitModel(); + if (InitParm() < SUCCESS) + HError(4300, "HNTrainSGD: InitParm failed"); + InitUtil(); + InitFBLat(); + InitExactMPE(); + InitArc(); + InitDict(); + InitLat(); + InitNet(); + InitAdapt(); + InitXFInfo(&xfInfo); + InitNCache(); + if (!InfoPrinted() && NumArgs() == 0) + ReportUsage(); + if (NumArgs() == 0) + Exit(0); + + CreateHeap(&modelHeap, "model heap", MSTAK, 1, 0.0, 300000000, ULONG_MAX); + CreateHMMSet(&hset, &modelHeap, TRUE); + SetConfParms(); + /* load each command */ + while (NextArg() == SWITCHARG) { + str = GetSwtArg(); + /* set each option */ + switch (str[0]) { + case 'a': + xfInfo.useInXForm = TRUE; + break; + case 'c': + initialHV = TRUE; + break; + case 'd': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM definition directory expected"); + hmmDir = GetStrArg(); + break; + case 'e': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Directory to store temporary HMM definitions expected"); + if (strcmp(str, "e") == 0) + epcDirPref = GetStrArg(); + else if (strcmp(str, "eb") == 0) + epcBaseDir = GetStrArg(); + break; + /*case 'f': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Auxiliary file path expected"); + if (strcmp(str, "fl") == 0) + LoadLRSchd(GetStrArg()); + else + HError(4319, "HNTrainSGD: Unknown label kind"); + break;*/ + case 'h': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Speaker name pattern expected"); + xfInfo.outSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) { + xfInfo.inSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) + xfInfo.paSpkrPat = GetStrArg(); + } + if (NextArg() != SWITCHARG) + HError(4319, "HNTrainSGD: Cannot have -h as the last option"); + break; + case 'j': + if (strcmp(str, "ju") == 0) + fnUpdate = GetStrArg(); + else if (strcmp(str, "jl") == 0) + fncurNegLR = GetStrArg(); + else if (strcmp(str, "jg") == 0) + fnSquareGrad = GetStrArg(); + else if (strcmp(str, "js") == 0) + fnLRSchd = GetStrArg(); + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break; + case 'k': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Auxiliary file path expected"); + if (strcmp(str, "kl") == 0) + LoadLRSchd(GetStrArg()); + else + HError(4319, "HNTrainSGD: Unknown training status kind"); + break; + case 'l': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label kind expected"); + str = GetStrArg(); + if (strcasecmp(str, "LAB") == 0 || strcasecmp(str, "LABEL") == 0) { + labelKind = LABLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "LAT") == 0 || strcasecmp(str, "LATTICE") == 0) { + labelKind = LATLK; + optHasLabMat = FALSE; + } + else if (strcasecmp(str, "FEA") == 0 || strcasecmp(str, "FEATURE") == 0) { + labelKind = FEALK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "LABLAT") == 0 || strcasecmp(str, "LATLAB") == 0) { + labelKind = LABLK | LATLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "NULL") == 0) { + labelKind = NULLLK; + optHasLabMat = FALSE; + } + else + HError(4319, "HNTrainSGD: Unknown label kind"); + break; + case 'm': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Target mapping file path expected"); + optMapTarget = TRUE; + mappingFn = GetStrArg(); + break; + /*case 'n': + if (strcmp(str, "nu") == 0) + fnUpdate = GetStrArg(); + else if (strcmp(str, "nl") == 0) + fncurNegLR = GetStrArg(); + else if (strcmp(str, "ng") == 0) + fnSquareGrad = GetStrArg(); + else if (strcmp(str, "ns") == 0) + fnLRSchd = GetStrArg(); + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break;*/ + case 'n': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Feature type label for validation set file name expected"); + InitScriptFile(GetStrArg(), &scriptFLabHV, &scriptCntFLabHV); + break; + case 'o': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM file extension expected"); + newExt = GetStrArg(); + break; + case 'q': + if (strcmp(str, "q") == 0) + numLatDir[nNumLats++] = GetStrArg(); + else if (strcmp(str, "qp") == 0) { + strcpy(numLatSubDirPat, GetStrArg()); + if (strchr(numLatSubDirPat, '%') == NULL) + HError(4319, "HNTrainSGD: Numerator lattice path mask invalid"); + } + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break; + case 'r': + if (strcmp(str, "r") == 0) + denLatDir[nDenLats++] = GetStrArg(); + else if (strcmp(str, "rp") == 0) { + strcpy(denLatSubDirPat, GetStrArg()); + if (strchr(denLatSubDirPat, '%') == NULL) + HError(4319, "HNTrainSGD: Denominator lattice path mask invalid"); + } + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break; + case 's': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Feature type label for training set file name expected"); + InitScriptFile(GetStrArg(), &scriptFLabTr, &scriptCntFLabTr); + break; + case 'u': + optDoStaticUpdt = TRUE; + break; + case 'x': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM file extension expected"); + hmmExt = GetStrArg(); + break; + case 'B': + saveBinary = TRUE; + break; + case 'F': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Data file format expected"); + if ((dff = Str2Format(GetStrArg())) == ALIEN) + HError(4319, "HNTrainSGD: Warnings ALIEN data file format set"); + break; + case 'G': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label file format expected"); + if ((lff = Str2Format(GetStrArg())) == ALIEN) + HError(4319, "HNTrainSGD: Warnings ALIEN label file format set"); + break; + case 'H': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM macro file name expected"); + ++macroCnt; + AddMMF(&hset, GetStrArg()); + break; + case 'I': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: MLF file name expected"); + LoadMasterFile(GetStrArg()); + break; + case 'J': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Input transform directory expected"); + AddInXFormDir(&hset, GetStrArg()); + if (NextArg() == STRINGARG) { + if (xfInfo.inXFormExt == NULL) + xfInfo.inXFormExt = GetStrArg(); + else + HError(4319, "HNTrainSGD: Only one input transform extension may be specified"); + } + if (NextArg() != SWITCHARG) + HError(4319, "HNTrainSGD: Cannot have -J as the last option"); + break; + case 'L': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label file directory expected"); + labDir = GetStrArg(); + break; + case 'M': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Output macro file directory expected"); + newDir = GetStrArg(); + break; + case 'N': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Validation set file name expected"); + InitScriptFile(GetStrArg(), &scriptHV, &scriptCntHV); + break; + case 'Q': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Lattice extension expected"); + latExt = GetStrArg(); + break; + case 'T': + trace = GetChkedInt(0, 0100000, str); + break; + case 'X': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label file extension expected"); + labExt = GetStrArg(); + break; + default: + HError(4319, "HNTrainSGD: Unknown switch %s", str); + } + } + /* load hmmListFn (optional) */ + if (NextArg() == STRINGARG) + hmmListFn = GetStrArg(); + else if (NextArg() != NOARG) + HError(4319, "HNTrainSGD: Only an optional HMM list file is possible at the end of the command line"); + + /* command check */ + if (NumArgs() == 0 && hset.numFiles == 0) + HError(4319, "HNTrainSGD: At least one input should be given"); + +#ifdef CUDA + StartCUDA(); +#endif + /* cz277 - 151020 */ +#ifdef MKL + StartMKL(); +#endif + /* initialise */ + Initialise(); +#ifdef CUDA + ShowGPUMemUsage(); +#endif + /* do safety check */ + SafetyCheck(); + + stClock = 0; + edClock = 0; + curEpochNum = 0; + printf("\n"); + /* cz277 - pact */ + if (optDoStaticUpdt == FALSE) { + /* process the held-out validation set first */ + if (initialHV == TRUE && scriptHV != NULL) { + printf("Init Training ************************\n"); + printf("\tProcessing validation set...\n"); + stClock = clock(); + UtterLevelHVProcess(); + edClock = clock(); + if (trace & T_TIM) + printf("\t\tValidation time cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + tailMSI->crtVal = newMSI_CrtVal; + printf("\n\n"); + } + + /* process training */ + while (TermLRSchdOrNot(curEpochNum)) { + /* compute current epoch index */ + curEpochIdx = epochOff + curEpochNum; + SetEpochIndex(curEpochIdx); + printf("Epoch %d ******************************\n", curEpochIdx); + /* update the learning rate by epoch (4 list and newbob) */ + UpdateLRSchdPerE(curEpochNum); + /* process the train set */ + printf("\tProcessing training set...\n"); + stClock = clock(); + switch (updtKind) { + case BATLEVEL: BatchLevelTrainProcess(curEpochNum); break; + case UTTLEVEL: UtterLevelTrainProcess(curEpochNum); break; + default: + HError(4399, "Unknown update kind"); + } + /* show current learning rate */ + switch (schdKind) { + case LISTSK: + case NEWBOBSK: + if (trace & T_TOP) + printf("\t\tLearning rate = %e\n", (-1.0) * curNegLR); + break; + case ADAGRADSK: + case EXPSK: + break; + } + /* compute the time cost */ + edClock = clock(); + if (trace & T_TIM) + printf("\t\tTraining time cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + /* process held-out set */ + if (scriptHV != NULL) { + printf("\tProcessing validation set...\n"); + stClock = clock(); + UtterLevelHVProcess(); + edClock = clock(); + if (trace & T_TIM) + printf("\t\tValidation time cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + } + /* save the intermediate models */ + if (optSavEpcMod) { + /* generate current epoch directory first */ + sprintf(buf, "%d", curEpochIdx); + strcpy(curEpcDir, epcDirPref); + strcat(curEpcDir, buf); + /* setup the absolute epc directory */ + CatDirs(epcBaseDir, curEpcDir, absEpcDir); + SetupDir(absEpcDir); + /* saves current models */ + SaveModelSet(absEpcDir); + /* attach current MSI */ + MSIPtr = (MSILink) New(&gcheap, sizeof(ModelSetInfo)); + SetModelSetInfo(absEpcDir, hmmExt, NULL, MSIPtr, curEpochIdx); + AppendModelSetInfo(MSIPtr); + /* saves crtVal */ + tailMSI->crtVal = newMSI_CrtVal; + } + /* update curEpochNum */ + ++curEpochNum; + fflush (stdout); + printf("\n\n"); + } + printf("Finish Training ***********************\n"); + /* show statistics */ + if (trace & T_TOP) + printf("\t%d updates processed in total\n\n", updateIndex); + printf("\n\n"); + } + else { + /* cz277 - pact */ + if (scriptHV != NULL) + HError(-4324, "HNTrainSGD: Static update will not use the validation scp"); + if (!(GetDefaultVisitKind() == NONEVK || GetDefaultVisitKind() == UTTVK)) + HError(4324, "HNTrainSGD: Only utterance level cache visiting order is allowed for static update"); + while (curEpochNum <= staticUpdtCode) + UtterLevelStaticUpdate(curEpochNum++); + } + + /* write the output model */ + SaveModelSet(newDir); + /* free ANNSet */ + FreeANNSet(&hset); + for (i = 1; i <= hset.swidth[0]; ++i) + FreeCache(cacheTr[i]); + if (scriptHV != NULL) + for (i = 1; i <= hset.swidth[0]; ++i) + FreeCache(cacheHV[i]); + +#ifdef CUDA + StopCUDA(); +#endif + + Exit(EXIT_STATUS); + return 0; +} + +/* ----------------------------------------------------------- */ +/* END: HNTrainSGD.c */ +/* ----------------------------------------------------------- */ + diff --git a/HTKTools/HParse.c b/HTKTools/HParse.c old mode 100644 new mode 100755 index 1e39150..2f7db97 --- a/HTKTools/HParse.c +++ b/HTKTools/HParse.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HParse.c: HParse based word-network definition */ +/* File: HParse.c HParse based word-network definition */ /* ----------------------------------------------------------- */ -char *hparse_version = "!HVER!HParse: 3.4.1 [CUED 12/03/09]"; +char *hparse_version = "!HVER!HParse: 3.5.0 [CUED 12/10/15]"; char *hparse_vc_id = "$Id: HParse.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* The HParse program reads in a set of HTK HParse rewrite rules @@ -102,6 +118,7 @@ char *hparse_vc_id = "$Id: HParse.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -114,8 +131,9 @@ typedef struct _Node *Link; typedef struct { int nUse; /* num sharing this LinkSet */ - short numLinks; /* number of links in set */ - short maxLinks; /* max number of links */ + /* swapped short to int */ + int numLinks; /* number of links in set */ + int maxLinks; /* max number of links */ Link *links; /* array[1..numLinks]of Link */ Ptr user; /* for attaching user defined data */ } LinkSet; @@ -379,7 +397,7 @@ static void PrModelName(Link p) strcpy(name,"????"); else strcpy(name,p->modelName->name); - printf("%s[%03d] ",name, ((int)p % 4000) / 4 ); + printf("%s[%03ld] ",name, ((long int)p % 4000) / 4 ); } /* PrintLinkSet: print first n slots of given LinkSet to stdout */ @@ -2000,7 +2018,7 @@ void LabelInternal(Link p) } } else if ((ni->nType != wdEnd) && (ni->nType != wdInternal)) - HError(3131,"LabelInternal: incorrect WD_BEGIN/WD_END node connection, node %d is %d",((int)p % 4000) / 4,ni->nType); + HError(3131,"LabelInternal: incorrect WD_BEGIN/WD_END node connection, node %d is %d",((long int)p % 4000) / 4,ni->nType); } /* FindNodeTypes: mark each node as wdInternal or wdExternal */ @@ -2326,4 +2344,4 @@ static void ConvertHParseNetwork(HPNetwork *theNet, char *latFn, char *dictFn) SaveLattice(lat,latFn,format); } -/* ------------------- End of HParse.c --------------------------------- */ +/* -------------------------- End of HParse.c --------------------------- */ diff --git a/HTKTools/HQuant.c b/HTKTools/HQuant.c old mode 100644 new mode 100755 index 5b0b38c..24e61f5 --- a/HTKTools/HQuant.c +++ b/HTKTools/HQuant.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HQuant.c: VQ table generation */ +/* File: HQuant.c VQ table generation */ /* ----------------------------------------------------------- */ -char *hquant_version = "!HVER!HQuant: 3.4.1 [CUED 12/03/09]"; +char *hquant_version = "!HVER!HQuant: 3.5.0 [CUED 12/10/15]"; char *hquant_vc_id = "$Id: HQuant.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* @@ -36,6 +52,7 @@ char *hquant_vc_id = "$Id: HQuant.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" diff --git a/HTKTools/HRest.c b/HTKTools/HRest.c old mode 100644 new mode 100755 index 43c83d3..b3a8e46 --- a/HTKTools/HRest.c +++ b/HTKTools/HRest.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HRest.c: HMM initialisation program */ +/* File: HRest.c HMM initialisation program */ /* ----------------------------------------------------------- */ -char *hrest_version = "!HVER!HRest: 3.4.1 [CUED 12/03/09]"; +char *hrest_version = "!HVER!HRest: 3.5.0 [CUED 12/10/15]"; char *hrest_vc_id = "$Id: HRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* @@ -71,6 +74,7 @@ char *hrest_vc_id = "$Id: HRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -756,13 +760,11 @@ void SetOccr(LogDouble pr, int seg) { int i,t; DVector alpha_i,beta_i; - Vector a_i; LogDouble x; occr[1] = 1.0; for (i=2;itransP[i]; x=LZERO ; for (t=1;t<=T;t++) x=LAdd(x,alpha_i[t]+beta_i[t]); diff --git a/HTKTools/HResults.c b/HTKTools/HResults.c old mode 100644 new mode 100755 index c48fd34..1c3ca2a --- a/HTKTools/HResults.c +++ b/HTKTools/HResults.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HResults.c: gather statistics on results */ +/* File: HResults.c gather statistics on results */ /* ----------------------------------------------------------- */ -char *hresults_version = "!HVER!HResults: 3.4.1 [CUED 12/03/09]"; +char *hresults_version = "!HVER!HResults: 3.5.0 [CUED 12/10/15]"; char *hresults_vc_id = "$Id: HResults.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -359,7 +375,7 @@ void NormaliseName(LabList *ll,int lev) LabId cl,eq,id; LLink l; Equiv *p; - int i,n,len; + int i,n; char buf[256],*ptr; n=CountAuxLabs(ll,lev); @@ -380,7 +396,6 @@ void NormaliseName(LabList *ll,int lev) l = GetAuxLabN(ll,i,lev); id = ((lev==0) ? l->labid : l->auxLab[lev]); strcpy(buf,id->name); - len = strlen(buf); for (ptr=buf;*ptr!=0;ptr++) if (islower((int) *ptr)) break; if (*ptr){ @@ -1143,7 +1158,7 @@ void ReadHMMList(char *fn) ReadWordFromLine(&source,buf); labid=GetLabId(buf,TRUE); names[i]=labid; - labid->aux = (Ptr)i; + labid->aux = (Ptr)(long int)i; } CloseSource(&source); } @@ -1152,7 +1167,7 @@ int Index(LabId labid) { int i; - i=(int)labid->aux; + i=(int)(long int)labid->aux; if (wSpot && i==0) return(0); if (i<1 || i>nLabs || names[i]!=labid) HError(3331,"Index: Label %s not in list[%d of %d]", diff --git a/HTKTools/HSGen.c b/HTKTools/HSGen.c old mode 100644 new mode 100755 index 9d7ed6c..a4384bc --- a/HTKTools/HSGen.c +++ b/HTKTools/HSGen.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSGen: Generate Sentences from a Lattice */ +/* File: HSGen Generate Sentences from a Lattice */ /* ----------------------------------------------------------- */ -char *hsgen_version = "!HVER!HSGen: 3.4.1 [CUED 12/03/09]"; +char *hsgen_version = "!HVER!HSGen: 3.5.0 [CUED 12/10/15]"; char *hsgen_vc_id = "$Id: HSGen.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -31,6 +47,7 @@ char *hsgen_vc_id = "$Id: HSGen.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HDict.h" #include "HNet.h" diff --git a/HTKTools/HSLab.c b/HTKTools/HSLab.c old mode 100644 new mode 100755 index 3404160..3a72bde --- a/HTKTools/HSLab.c +++ b/HTKTools/HSLab.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSLab.c: The Speech Label Editor */ +/* File: HSLab.c The speech label editor */ /* ----------------------------------------------------------- */ -char *hslab_version = "!HVER!HSLab: 3.4.1 [CUED 12/03/09]"; +char *hslab_version = "!HVER!HSLab: 3.5.0 [CUED 12/10/15]"; char *hslab_vc_id = "$Id: HSLab.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* diff --git a/HTKTools/HSmooth.c b/HTKTools/HSmooth.c old mode 100644 new mode 100755 index 1e747af..9d23445 --- a/HTKTools/HSmooth.c +++ b/HTKTools/HSmooth.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSmooth.c: Perform Parameter Smoothing on a HMM Set */ +/* File: HSmooth.c perform parameter smoothing on a HMM set */ /* ----------------------------------------------------------- */ -char *hsmooth_version = "!HVER!HSmooth: 3.4.1 [CUED 12/03/09]"; +char *hsmooth_version = "!HVER!HSmooth: 3.5.0 [CUED 12/10/15]"; char *hsmooth_vc_id = "$Id: HSmooth.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; @@ -32,6 +48,7 @@ char *hsmooth_vc_id = "$Id: HSmooth.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $" #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -474,7 +491,7 @@ void StatReport(void) px=1; do { hmm = hss.hmm; - PrintStats(f,px,hmm,(int)hmm->hook); + PrintStats(f,px,hmm,(int)(unsigned long int)hmm->hook); px++; } while (GoNextHMM(&hss)); EndHMMScan(&hss); @@ -930,7 +947,7 @@ void UpdateTMVars(void) MixPDF *mpdf; Vector mean; Covariance cov; - Boolean mixFloored,shared; + Boolean shared; for (s=1;s<=nStreams;s++){ vSize = hset.swidth[s]; @@ -944,7 +961,6 @@ void UpdateTMVars(void) ma = (MuAcc *) GetHook(mean); if (va != NULL){ occim = va->occ; - mixFloored = FALSE; if (occim > 0.0){ shared=(GetUse(cov.var)>1 || ma==NULL || ma->occ<=0.0); if ((mpdf->ckind==DIAGC)||(mpdf->ckind==INVDIAGC)) @@ -953,7 +969,6 @@ void UpdateTMVars(void) x = va->cov.var[k]/occim - muDiffk*muDiffk; if (xcov.inv[k][l]/occim - muDiffk*muDiffl; if (k==l && xhook; + n = (int)(unsigned long int)hmm->hook; if (n=minEgs) { diff --git a/HTKTools/HVite.c b/HTKTools/HVite.c old mode 100644 new mode 100755 index 2250711..f917267 --- a/HTKTools/HVite.c +++ b/HTKTools/HVite.c @@ -3,38 +3,48 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HVite.c: recognise or align file or audio */ +/* File: HVite.c recognise or align file or audio */ /* ----------------------------------------------------------- */ -char *hvite_version = "!HVER!HVite: 3.4.1 [CUED 12/03/09]"; -char *hvite_vc_id = "$Id: HVite.c,v 1.1.1.1 2006/10/11 09:55:02 jal58 Exp $"; +char *hvite_version = "!HVER!HVite: 3.5.0 [CUED 12/10/15]"; +char *hvite_vc_id = "$Id: HVite.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; +#include "config.h" +#ifdef IMKL +#include "mkl.h" +#endif +#ifdef CUDA +#include "HCUDA.h" +#endif #include "HShell.h" #include "HMem.h" #include "HMath.h" @@ -44,6 +54,7 @@ char *hvite_vc_id = "$Id: HVite.c,v 1.1.1.1 2006/10/11 09:55:02 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HTrain.h" @@ -52,7 +63,11 @@ char *hvite_vc_id = "$Id: HVite.c,v 1.1.1.1 2006/10/11 09:55:02 jal58 Exp $"; #include "HFB.h" #include "HDict.h" #include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" #include "HRec.h" +#include "HNCache.h" + /* -------------------------- Trace Flags & Vars ------------------------ */ @@ -92,6 +107,9 @@ static char * labInDir = NULL; /* input network/label file directory */ static char * labInExt = "lab"; /* input network/label file extension */ static char * latExt = NULL; /* output lattice file extension */ static char * labFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * labOFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * latFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * latOFileMask = NULL; /* mask for reading lablels (lattices) */ static FileFormat dfmt=UNDEFF; /* Data input file format */ static FileFormat ifmt=UNDEFF; /* Label input file format */ static FileFormat ofmt=UNDEFF; /* Label output file format */ @@ -133,6 +151,11 @@ static PSetInfo *alignpsi; /* Private data used by HRec */ static VRecInfo *alignvri; /* Visible HRec Info */ static Boolean saveBinary=FALSE; /* Save tmf in binary format */ +/* cz277 - ANN */ +/*static int batchSamples;*/ +static LabelInfo labelInfo; +static DataCache *cache[SMAX]; + /* Heaps */ static MemHeap ansHeap; static MemHeap modelHeap; @@ -140,6 +163,8 @@ static MemHeap netHeap; static MemHeap bufHeap; static MemHeap repHeap; static MemHeap regHeap; +/* cz277 - ANN */ +static MemHeap cacheHeap; /* information about transforms */ static XFInfo xfInfo; @@ -170,6 +195,15 @@ void SetConfParms(void) if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { labFileMask = CopyString(&gstack, buf); } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString(&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATFILEMASK",buf)) { + latFileMask = CopyString(&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATOFILEMASK",buf)) { + latOFileMask = CopyString(&gstack, buf); + } } } @@ -215,6 +249,8 @@ int main(int argc, char *argv[]) void Initialise(void); void DoRecognition(void); void DoAlignment(void); + /* cz277 - ANN */ + int i; if(InitShell(argc,argv,hvite_version,hvite_vc_id)1) nBeam=genBeam; @@ -556,10 +649,74 @@ void Initialise(void) printf("Memory State After Initialisation\n"); PrintAllHeapStats(); } + + /* cz277 - ANN */ + /* ANN and data cache related code */ + /* set label info */ + if (hset.annSet != NULL) { + labelInfo.labelKind = LABLK; + labelInfo.labFileMask = NULL; + labelInfo.labDir = labDir; + labelInfo.labExt = labExt; + labelInfo.latFileMask = NULL; + labelInfo.latMaskNum = NULL; + labelInfo.numLatDir = NULL; + labelInfo.nNumLats = 0; + labelInfo.numLatSubDirPat = NULL; + labelInfo.latMaskDen = NULL; + labelInfo.denLatDir = NULL; + labelInfo.nDenLats = 0; + labelInfo.denLatSubDirPat = NULL; + labelInfo.latExt = NULL; + /* get script info */ + script = GetTrainScript(&scriptcount); + /* initialise the cache heap */ + CreateHeap(&cacheHeap, "cache heap", CHEAP, 1, 0, 100000000, ULONG_MAX); + /* initialise DataCache structure */ + for (s = 1; s <= hset.swidth[0]; ++s) { + /*cache[s] = CreateCache(&cacheHeap, script, scriptcount, (Ptr) &hset, &obs, 1, -1, NONEVK, &xfInfo, NULL, TRUE);*/ + cache[s] = CreateCache(&cacheHeap, script, scriptcount, (Ptr) &hset, &obs, 1, GetDefaultNCacheSamples(), NONEVK, &xfInfo, NULL, TRUE); + InitCache(cache[s]); + } + } + } /* ------------------ Utterance Level Recognition ----------------------- */ +/* */ +void LoadCacheVec(Observation *obs, int shift, HMMSet *hset) { + int s, S, i, offset; + NMatrix *srcMat; + FELink feaElem; + LELink layerElem; + + if (hset->annSet == NULL) + HError(3290, "LoadCacheVec: DataCache is only applicable for ANN related systems"); + + S = hset->swidth[0]; + for (s = 1; s <= S; ++s) { + if (hset->hsKind == HYBRIDHS) { /* hybrid models, cache the outputs */ + layerElem = hset->annSet->outLayers[s]; + srcMat = hset->annSet->llhMat[s]; + CopyNFloatSeg2FloatSeg(srcMat->matElems + shift * layerElem->nodeNum, layerElem->nodeNum, &obs->fv[s][1]); + } + else if (hset->feaMix[1] != NULL) { /* tandem models, cache the features */ + offset = 0; + for (i = 0; i < hset->feaMix[s]->elemNum; ++i) { + feaElem = hset->feaMix[s]->feaList[i]; + srcMat = feaElem->feaMats[1]; /* cz277 - many */ + CopyNFloatSeg2FloatSeg(srcMat->matElems + feaElem->dimOff + shift * feaElem->extDim, feaElem->extDim, &obs->fv[s][1] + offset); + offset += feaElem->extDim; + } + } + else { + HError(3290, "LoadCacheVec: DataCache is only applicable for hybrid and tandem systems"); + } + } + +} + /* ReplayAudio: replay the last audio input */ void ReplayAudio(BufferInfo info) { @@ -652,7 +809,16 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, int s,j,tact,nFrames; LatFormat form; char *p,lfn[255],buf1[80],buf2[80],thisFN[MAXSTRLEN]; + char labfn[MAXFNAMELEN]; Boolean enableOutput = TRUE, isPipe; + /* cz277 - ANN */ + int uttCnt, cUttLen, uttLen, nLoaded, i; + LELink layerElem; + /* cz277 - clock */ + clock_t fwdStClock, fwdClock = 0, decStClock, decClock = 0, loadStClock, loadClock = 0; + double fwdSec = 0.0, decSec = 0.0, loadSec = 0.0; + /* cz277 - xform */ + UttElem *uttElem; if (fn!=NULL) strcpy(thisFN,fn); @@ -676,37 +842,118 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, SetPruningLevels(vri,maxActive,currGenBeam,wordBeam,nBeam,tmBeam); tact=0;nFrames=0; - StartBuffer(pbuf); - while(BufferStatus(pbuf)!=PB_CLEARED) { - ReadAsBuffer(pbuf,&obs); - if (trace&T_OBS) PrintObservation(nFrames,&obs,13); - - if (hset.hsKind==DISCRETEHS){ - for (s=1; s<=hset.swidth[0]; s++){ - if( (obs.vq[s] < 1) || (obs.vq[s] > maxMixInS[s])) - HError(3250,"ProcessFile: Discrete data value [ %d ] out of range in stream [ %d ] in file %s",obs.vq[s],s,fn); + + /* cz277 - ANN */ + if (hset.annSet == NULL) { + StartBuffer(pbuf); + while(BufferStatus(pbuf)!=PB_CLEARED) { + ReadAsBuffer(pbuf,&obs); + if (trace&T_OBS) PrintObservation(nFrames,&obs,13); + + if (hset.hsKind==DISCRETEHS){ + for (s=1; s<=hset.swidth[0]; s++){ + if( (obs.vq[s] < 1) || (obs.vq[s] > maxMixInS[s])) + HError(3250,"ProcessFile: Discrete data value [ %d ] out of range in stream [ %d ] in file %s",obs.vq[s],s,fn); + } } - } - ProcessObservation(vri,&obs,-1,xfInfo.inXForm); + ProcessObservation(vri,&obs,-1,xfInfo.inXForm); - if (trace & T_FRS) { - for (d=vri->genMaxNode,j=0;j<30;d=d->links[0].node,j++) - if (d->type==n_word) break; - if (d->type==n_word){ - if (d->info.pron==NULL) p=":bound:"; - else p=d->info.pron->word->wordName->name; + if (trace & T_FRS) { + for (d=vri->genMaxNode,j=0;j<30;d=d->links[0].node,j++) + if (d->type==n_word) break; + if (d->type==n_word){ + if (d->info.pron==NULL) p=":bound:"; + else p=d->info.pron->word->wordName->name; + } + else p=":external:"; + m=FindMacroStruct(&hset,'h',vri->genMaxNode->info.hmm); + printf("Optimum @%-4d HMM: %s (%s) %d %5.3f\n", + vri->frame,m->id->name,p, + vri->nact,vri->genMaxTok.like/vri->frame); + fflush(stdout); } - else p=":external:"; - m=FindMacroStruct(&hset,'h',vri->genMaxNode->info.hmm); - printf("Optimum @%-4d HMM: %s (%s) %d %5.3f\n", - vri->frame,m->id->name,p, - vri->nact,vri->genMaxTok.like/vri->frame); - fflush(stdout); + nFrames++; + tact+=vri->nact; + } + } + else { + /* get utterance name in cache */ + if (strcmp(GetCurUttName(cache[1]), fn) != 0) + HError(3234, "Mismatched utterance in the cache and script file"); + uttElem = GetCurUttElem(cache[1]); /* cz277 - xform */ + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* check the observation vector number */ + uttCnt = 1; + uttLen = ObsInBuffer(pbuf); + cUttLen = GetCurUttLen(cache[1]); + if (cUttLen != uttLen) + HError(3292, "Unequal utterance length in the cache and the original feature file"); + while (nFrames < uttLen) { + /* load a data batch */ + loadStClock = clock(); /* cz277 - clock */ + for (s = 1; s <= hset.swidth[0]; ++s) { + FillAllInpBatch(cache[s], &nLoaded, &uttCnt); + /* cz277 - mtload */ + /*UpdateCacheStatus(cache[s]);*/ + LoadCacheData(cache[s]); + } + /*if (nLoaded != 1) + HError(9999, "HVite is only able to process frame by frame");*/ + loadClock += clock() - loadStClock; /* cz277 - clock */ + /* forward these frames */ + fwdStClock = clock(); /* cz277 - clock */ + ForwardProp(hset.annSet, nLoaded, cache[1]->CMDVecPL); + /*SetBatchIndex(GetBatchIndex() + 1);*/ + /* apply log transform */ + for (s = 1; s <= hset.swidth[0]; ++s) { + layerElem = hset.annSet->outLayers[s]; + ApplyLogTrans(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, hset.annSet->llhMat[s]); /* cz277 - many */ + AddNVectorTargetPen(hset.annSet->llhMat[s], hset.annSet->penVec[s], nLoaded, hset.annSet->llhMat[s]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->llhMat[s]); +#endif + } + fwdClock += clock() - fwdStClock; /* cz277 - clock */ + /* load the ANN outputs into dec->cacheVecs */ + decStClock = clock(); /* cz277 - clock */ + for (i = 0; i < nLoaded; ++i) { + LoadCacheVec(&obs, i, &hset); + /* decode current frame */ + ProcessObservation(vri, &obs, -1, xfInfo.inXForm); + if (trace & T_FRS) { + for (d = vri->genMaxNode, j = 0; j < 30; d = d->links[0].node, j++) + if (d->type == n_word) break; + if (d->type == n_word) { + if (d->info.pron == NULL) p = ":bound:"; + else p = d->info.pron->word->wordName->name; + } + else p = ":external:"; + m = FindMacroStruct(&hset, 'h', vri->genMaxNode->info.hmm); + printf("Optimum @%-4d HMM: %s (%s) %d %5.3f\n", + vri->frame, m->id->name, p, vri->nact, + vri->genMaxTok.like / vri->frame); + fflush(stdout); + } + tact += vri->nact; + /* increate nFrames */ + ++nFrames; + } + decClock += clock() - decStClock; /* cz277 - clock */ + /* cz277 - 1007 */ + /*SetBatchIndex(GetBatchIndex() + 1);*/ + } + /* cz277 - mtload */ + for (s = 1; s <= hset.swidth[0]; ++s) { + UnloadCacheData(cache[s]); } - nFrames++; - tact+=vri->nact; + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); } + lat=CompleteRecognition(vri,pbinfo.tgtSampRate/10000000.0,&ansHeap); if (lat==NULL) { @@ -758,6 +1005,18 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, (aclk+lmlk)/nFrames, aclk,lmlk,(float)tact/nFrames); fflush(stdout); } + + /* cz277 - clock */ + if (hset.annSet != NULL) { + fwdSec = fwdClock / (double) CLOCKS_PER_SEC; + decSec = decClock / (double) CLOCKS_PER_SEC; + loadSec = loadClock / (double) CLOCKS_PER_SEC; + printf("\tForwarding time is %f\n", fwdSec); + printf("\tDecoding time is %f\n", decSec); + printf("\tCache loading time is %f\n", loadSec); + fflush(stdout); + } + if (pbinfo.a != NULL && replay) ReplayAudio(pbinfo); /* accumulate stats for online unsupervised adaptation @@ -767,7 +1026,12 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, if (enableOutput){ if (nToks>1 && latExt!=NULL) { - MakeFN(thisFN,labDir,latExt,lfn); + if (latOFileMask) { + if (!MaskMatch (latOFileMask, labfn, thisFN)) + HError(2319,"HLRescore: LATOFILEMASK %s has no match with segemnt %s", latOFileMask, thisFN); + } else + strcpy (labfn, thisFN); + MakeFN(labfn,labDir,latExt,lfn); if ((file=FOpen(lfn,NetOFilter,&isPipe))==NULL) HError(3211,"ProcessFile: Could not open file %s for lattice output",lfn); if (latForm==NULL) @@ -808,7 +1072,12 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, strchr(labForm,'C')!=NULL,strchr(labForm,'T')!=NULL, strchr(labForm,'W')!=NULL,strchr(labForm,'M')!=NULL); - MakeFN(thisFN,labDir,labExt,lfn); + if (labOFileMask) { + if (!MaskMatch (labOFileMask, labfn, thisFN)) + HError(2319,"HLRescore: LABOFILEMASK %s has no match with segemnt %s", labOFileMask, thisFN); + } else + strcpy (labfn, thisFN); + MakeFN(labfn,labDir,labExt,lfn); /* if(LSave(lfn,trans,ofmt) 0 && n%update == 0) { @@ -941,6 +1222,8 @@ void DoRecognition(void) Boolean isPipe; int n=0; AdaptXForm *incXForm; + /* cz277 - ANN */ + char fnbuf[1024]; if ( (nf = FOpen(wdNetFn,NetFilter,&isPipe)) == NULL) HError(3210,"DoRecognition: Cannot open Word Net file %s",wdNetFn); @@ -995,15 +1278,18 @@ void DoRecognition(void) if (NextArg()!=STRINGARG) HError(3219,"DoRecognition: Data file name expected"); datFN = GetStrArg(); + /* cz277 - ANN */ + strcpy(fnbuf, datFN); + if (trace&T_TOP) { - printf("File: %s\n",datFN); fflush(stdout); + printf("File: %s\n",fnbuf); fflush(stdout); } /* This handles the initial input transform, parent transform setting and output transform creation */ - if (UpdateSpkrStats(&hset, &xfInfo, datFN) && (!(xfInfo.useInXForm)) && (hset.semiTied == NULL)) { + if (UpdateSpkrStats(&hset, &xfInfo, fnbuf) && (!(xfInfo.useInXForm)) && (hset.semiTied == NULL)) { xfInfo.inXForm = NULL; } - ProcessFile(datFN,net,n++,genBeam,FALSE); + ProcessFile(fnbuf,net,n++,genBeam,FALSE); if (update > 0 && n%update == 0) { if (trace&T_TOP) { printf("Transforming model set\n"); diff --git a/HTKTools/Makefile.in b/HTKTools/MakefileCPU old mode 100644 new mode 100755 similarity index 65% rename from HTKTools/Makefile.in rename to HTKTools/MakefileCPU index af6a7c1..b3c0e89 --- a/HTKTools/Makefile.in +++ b/HTKTools/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,48 +17,48 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HTKTools/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh inc = ../HTKLib HTKLIB = $(inc)/HTKLib.a -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include -CC = @CC@ -CFLAGS = @CFLAGS@ -I$(inc) -DPHNALG -LDFLAGS = @LDFLAGS@ -lm -INSTALL = @INSTALL@ -PROGS = @HSLAB@ HBuild HCompV HCopy HDMan \ +CC = gcc +CFLAGS = -m64 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(inc) -DPHNALG +LDFLAGS = -L/usr/X11R6/lib -lpthread -lm +INSTALL = /usr/bin/install -c +PROGS = HBuild HCompV HCopy HDMan \ HERest HHEd HInit HLEd HList \ - HLRescore HLStats HMMIRest HParse \ + HLConf HLRescore HLStats HMMIRest HNTrainSGD HNForward HParse \ HQuant HRest HResults HSGen HSmooth \ HVite all: $(PROGS) %: %.c $(HTKLIB) - if [ ! -d $(bindir) -a X_@TRADHTK@ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi if [ x$@ = xHSLab ] ; then \ $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -lX11 ; \ else \ $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) ; fi - if [ X_@TRADHTK@ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi strip: $(PROGS) -strip $(PROGS) @@ -76,7 +76,7 @@ install: mkinstalldir $(PROGS) for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done mkinstalldir: - if [ ! -d $(bindir) ] ; then mkdir $(bindir) ; fi + -mkdir -p $(bindir) .PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HTKTools/MakefileMKL b/HTKTools/MakefileMKL new file mode 100755 index 0000000..3c53bd7 --- /dev/null +++ b/HTKTools/MakefileMKL @@ -0,0 +1,82 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKTools/MakefileMKL +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +HTKLIB = $(inc)/HTKLib.a +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = icc +CFLAGS = -m64 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(inc) -DMKL -DPHNALG +LDFLAGS = -L/usr/X11R6/lib -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.so /opt/intel/composerxe/lib/intel64/libiomp5.so -Wl,--end-group -lpthread -lm +INSTALL = /usr/bin/install -c +PROGS = HBuild HCompV HCopy HDMan \ + HERest HHEd HInit HLEd HList \ + HLConf HLRescore HLStats HMMIRest HNTrainSGD HNForward HParse \ + HQuant HRest HResults HSGen HSmooth \ + HVite +all: $(PROGS) + +%: %.c $(HTKLIB) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ x$@ = xHSLab ] ; then \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -lX11 ; \ + else \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) *.exe Makefile + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HTKTools/MakefileNVCC b/HTKTools/MakefileNVCC new file mode 100755 index 0000000..9ec897a --- /dev/null +++ b/HTKTools/MakefileNVCC @@ -0,0 +1,82 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKTools/MakefileNVCC +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +HTKLIB = $(inc)/HTKLib.a +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = /usr/local/cuda/bin/nvcc +CFLAGS = -m64 -ccbin gcc -gencode arch=compute_35,code=sm_35 -D'ARCH="x86_64"' -DCUDA -I$(inc) +LDFLAGS = -L/usr/X11R6/lib -lcudart -lcublas -lpthread -lm +INSTALL = /usr/bin/install -c +PROGS = HBuild HCompV HCopy HDMan \ + HERest HHEd HInit HLEd HList \ + HLConf HLRescore HLStats HMMIRest HNTrainSGD HNForward HParse \ + HQuant HRest HResults HSGen HSmooth \ + HVite +all: $(PROGS) + +%: %.c $(HTKLIB) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ x$@ = xHSLab ] ; then \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -lX11 ; \ + else \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) *.exe Makefile + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HTKTools/htk_htktools_nt.mkf b/HTKTools/htk_htktools_nt.mkf deleted file mode 100644 index 0505c70..0000000 --- a/HTKTools/htk_htktools_nt.mkf +++ /dev/null @@ -1,96 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTK tools, MSVC -# - -.SUFFIXES: .exe - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< - -.obj.exe: - $(CL) $(SYSLF) /OUT:$(HBIN)\$@ $< $(libs) - -CC=cl -CL=link -CPU=win32 - -HBIN = ..\bin.win32 - -# use the following for full optimisation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" - -# use the following for debugging -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for non-debug link -SYSLF = /nologo /subsystem:console /incremental:no - -# use the following for debug link -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:console /incremental:no - -# the following is for HTK tools linked with HTKLib -HTKCF = /I "..\HTKLib" /I "." /D "PHNALG" - -htklib = ..\HTKLib\HTKLib.$(CPU).lib - -CFLAGS = $(SYSCF) $(HTKCF) - -syslib = winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \ - advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - -libs = $(syslib) $(htklib) - -tools = HMMIRest.exe HSLab.exe HInit.exe HRest.exe HERest.exe HVite.exe HResults.exe \ - HList.exe HCopy.exe HLEd.exe HDMan.exe HHEd.exe HParse.exe \ - HBuild.exe HSmooth.exe HCompV.exe HQuant.exe HSGen.exe HLStats.exe \ - HLRescore.exe - -HSLab.exe: HSLab.obj - -HInit.exe: HInit.obj - -HHEd.exe: HHEd.obj - -HLStats.exe: HLStats.obj - -HSGen.exe: HSGen.obj - -HQuant.exe: HQuant.obj - -HCompV.exe: HCompV.obj - -HSmooth.exe: HSmooth.obj - -HBuild.exe: HBuild.obj - -HParse.exe: HParse.obj - -HDMan.exe: HDMan.obj - -HLEd.exe: HLEd.obj - -HCopy.exe: HCopy.obj - -HList.exe: HList.obj - -HResults.exe: HResults.obj - -HVite.exe: HVite.obj - -HERest.exe: HERest.obj - -HRest.exe: HRest.obj - -HLRescore.exe: HLRescore.obj - -HMMIRest.exe: HMMIRest.obj - -all: $(tools) - echo done - -clean: - del *.obj *.exe - -cleanup: - del *.obj diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 17a3f54..0000000 --- a/Makefile.in +++ /dev/null @@ -1,153 +0,0 @@ -# ----------------------------------------------------------- -# -# ___ -# |_| | |_/ SPEECH -# | | | | \ RECOGNITION -# ========= SOFTWARE -# -# -# ----------------------------------------------------------- -# Copyright: Cambridge University -# 1995-2006 Engineering Department -# http://htk.eng.cam.ac.uk -# http://mi.eng.cam.ac.uk -# -# Use of this software is governed by a License Agreement -# ** See the file License for the Conditions of Use ** -# ** This banner notice must not be removed ** -# -# ----------------------------------------------------------- -# File: @configure_input@ -# ----------------------------------------------------------- - -SHELL = /bin/sh -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -CC = @CC@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = $(CPPFLAGS) @CFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -INSTALL = @INSTALL@ - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ -MAKEINFO = @MAKEINFO@ -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -HTKLIB = HTKLib -HLMLIB = HLMLib -HTKTOOLS = HTKTools -HLMTOOLS = HLMTools -LVREC = HTKLVRec -HTKBOOK = HTKBook -SUBDIRS = $(HTKLIB) $(HLMLIB) $(HTKTOOLS) $(HLMTOOLS) $(LVREC) $(BOOK) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -DIST_COMMON = README ChangeLog Makefile.am \ -Makefile.in aclocal.m4 configure configure.ac install-sh missing \ -mkinstalldirs - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best - -.SUFFIXES: - -# build rules -all: @make_all@ -$(HTKLIB)/HTKLib.a: - (cd $(HTKLIB) && $(MAKE) HTKLib.a) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -htklib: $(HTKLIB)/HTKLib.a -$(HTKLIB)/HTKLiblv.a: - (cd $(HTKLIB) && $(MAKE) HTKLiblv.a) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -htkliblv: $(HTKLIB)/HTKLiblv.a -$(HLMLIB)/HLMLib.a: - (cd $(HLMLIB) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -hlmlib: $(HLMLIB)/HLMLib.a -htktools: $(HTKLIB)/HTKLib.a - (cd $(HTKTOOLS) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -hlmtools: $(HLMLIB)/HLMLib.a - (cd $(HLMTOOLS) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -hdecode: $(HTKLIB)/HTKLiblv.a - (cd $(LVREC) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -book: - (cd $(HTKBOOK) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; - -# installation -install-htktools: htktools - (cd $(HTKTOOLS) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -install-hlmtools: hlmtools - (cd $(HLMTOOLS) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -install-hdecode: - (cd $(LVREC) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -install-book: book - (cd $(HTKBOOK) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; - -clean: - /bin/rm -f *~ - @for dir in $(SUBDIRS); do \ - (cd $$dir && $(MAKE) clean) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -distclean: clean - /bin/rm -f Makefile config.h config.status config.cache config.log - @for dir in $(SUBDIRS); do \ - (cd $$dir && $(MAKE) distclean) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" - -install: @make_install@ -docs: book - -.PHONY: all doc install clean distclean htklib-decode \ - htktools hlmtools hdecode docs book \ - install-htktools install-hlmtools install-hdecode install-book - diff --git a/README b/README index 9085ffe..70b410b 100644 --- a/README +++ b/README @@ -1,4 +1,5 @@ - Hidden Markov Toolkit (HTK) 3.4.1 +Hidden Markov Toolkit (HTK) 3.5 Beta + ==================================== Use of this software is governed by a license agreement, the terms and conditions of which are set forth in the file LICENSE in the @@ -6,17 +7,18 @@ top-level HTK installation directory. Please read this file carefully as use of this software implies acceptance of the conditions described therein. + Introduction ============ -HTK is a toolkit for use in research into automatic speech recognition -and has been developed by the Machine Intelligence Laboratory -(formerly know as the Speech Vision Robotics Group) at the -Cambridge University Engineering Department (http://mi.eng.cam.ac.uk) -and Entropic Ltd (http://www.entropic.com). +HTK is a toolkit that has been primarily for research use in automatic +speech recognition. Since 2000, HTK has been developed and distributed +by the Machine Intelligence Laboratory (formerly known as the Speech Vision +and Robotics Group) at Cambridge University Engineering Department +(http://mi.eng.cam.ac.uk). -Please visit the HTK homepage at the following address for more -information about HTK: +Please visit the HTK website at the following address for more +information about HTK and the history of its development: http://htk.eng.cam.ac.uk/ @@ -30,44 +32,58 @@ License ======= HTK is made available free of charge and can be downloaded from the -website mentioned above. However it may not be redistributed, -i.e. you must register at the website and download it from -there. Details about the terms under which HTK is made available can +HTK website. However it may not be redistributed, i.e. you must +register at the website and download it from there. + +Details about the terms under which HTK is made available can be found in the LICENSE file. +Note that the HDecode tool must be downloaded separately and +has a separate license agreement. + Compiling & Installing HTK under UNIX/Linux, OS X or Cygwin =========================================================== -After unpacking the sources, cd to the htk directory. +HTK 3.5 comes with three sets of Makefiles enabling compilation for: + +1. CPU (standard) +2. CPU using MKL (Intel Math Kernel library) +3. NVIDIA GPUs (Graphic Processing Unit) using the NVIDIA CUDA compiler NVCC + +These alternative Makefiles are located in each of the following directories: + +HTKLib, HLMLib, HTKTools, HLMTools -There are now two ways to install HTK, the "traditional" and the -"new". Up to now HTK has always installed its tools as they were -built, and installed them to a directory such as "bin.linux" so that -binaries for different architectures can be installed in a home -directory say. If you want to install in this way, please add the -option "--enable-trad-htk" when you run configure. +Examine the MakefileCPU, MakefileMKL and MakefileNVCC +files in each of these directories and change the default +locations of CPU/GPU compilers and libraries to match the +locations on the system for which HTK 3.5 is to be installed. -The "new" method installs by default into /usr/local/bin (equivalent -to a configure option of "--prefix=/usr/local"). +In order to compile either the standard CPU version, or +the CPU version with MKL support or GPU version execute one of the following -1. decide which of the above methods you wish to use -2. cd to htk, then run ./configure (with appropriate options, run - "./configure --help" if unsure). - If you don't want to build the programs in HLMTools add the - --disable-hlmtools option. -3. make all -4. make install +1. make -f MakefileCPU all +2. make -f MakefileMKL all +3. make -f MakefileNVCC all -Running "make install" will install them. This step may need to be -done as root, if you are not installing them in your home directory. +in turn in each of HTKLib, HLMLib, HTKTools and HLMTools. +Having compiled one of the branches (CPU/MKL/NVCC), the +relevant HTK tools can be installed executing one of the following -Notes for particular Unix variants: -Solaris: if "make" isn't installed you may need to add /opt/sfw/bin -and /usr/ccs/bin to your path and run "./configure MAKE=gmake" with -any other options you require. Then run "gmake" instead of "make", -alternatively you can create a symbolic link called "make" somewhere -it your path to /opt/sfw/bin/gmake +1. make -f MakefileCPU install +2. make -f MakefileMKL install +3. make -f MakefileNVCC install + +commands in both the HTKTools and HLMTools directories. By default HTK +tools will be installed in bin.cpu, bin.mkl or bin.gpu depending +on the branch. + +Prior to compiling a new branch it is important to clean the distribution + +1. make -f MakefileCPU clean +2. make -f MakefileMKL clean +3. make -f MakefileNVCC clean HDecode @@ -76,111 +92,44 @@ HDecode If you are also building HDecode (available from the HTK website, under a different licence from HTK), you will firstly need to unpack the HDecode source code (in the same directory in which you unpacked the HTK -sources). Follow the steps above for building HTK first, then add -these steps to the build process: +sources). Then follow the steps above for first building HTK, and then execute +the following command in HTKLVRec directory: + +1. make -f MakefileCPU all +2. make -f MakefileCPU install + +or + +1. make -f MakefileMKL all +2. make -f MakefileMKL install -5. make hdecode -6. make install-hdecode +or + +1. make -f MakefileNVCC all +2. make -f MakefileNVCC install + +depending on whether HTK is compiled for CPU, CPU with MKL support or GPU. Compiling & Installing HTK under Windows ======================================== -Prerequisites: - * HTK has been verified to compile using Microsoft Visual Studio. - * For testing, you will require a Perl interpreter such as - ActivePerl. - * You will need a tool such as 7-zip or winzip (commercial) for unpacking - the HTK source code archive. - * It is helpful if you have some familiarity with using the DOS - command line interface, as you will need to interact with it in - order to compile, install and run HTK. - * Ensure that your PATH contains - C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin - Or if you are using older versions: - C:\Program Files\Microsoft Visual Studio\VC98\bin - - -Compilation: - 1. Unpack the HTK sources using 7-zip. - 2. Open a DOS command window: Click Start, select Run type cmd at - the prompt and click OK. - 3. cd into the directory in which you unpacked the sources. - 4. cd into the htk directory. Type: - - cd htk - - 5. Create a directory for the library and tools. Type: - - mkdir bin.win32 - - 6. Run VCVARS32 (it should be in your path, see prerequisites above) - 7. Build the HTK Library, which provides the common functionality - used by the HTK Tools. Enter the following commands: - - cd HTKLib - nmake /f htk_htklib_nt.mkf all - cd .. - - 8. Build the HTK Tools - - cd HTKTools - nmake /f htk_htktools_nt.mkf all - cd .. - cd HLMLib - nmake /f htk_hlmlib_nt.mkf all - cd .. - cd HLMTools - nmake /f htk_hlmtools_nt.mkf all - cd .. - -Installation: -The HTK tools have now been built and are in the bin.win32 -directory. You should add this directory to your PATH, so that you can -run them easily from the command line in future. +HTK 3.5 has not yet been tested under Windows. Testing the Installation ======================== - -Among the samples on the HTK website you'll find the HTKDemo package -that can be used to test your installation. See -http://htk.eng.cam.ac.uk/download.shtml for download instructions. - -As an initial test of the installation please run the HTK -demonstration using the configuration file -HTKDemo/configs/monPlainM1S1.dcf. There is a README file in the -HTKDemo directory explaining the operation of the demonstration in -detail but, in short, you need to run the demonstration script passing -it the configuration file configs/monPlainM1S1.dcf as input. +As an initial test of the installation please run the HTK demonstration +using the configuration file samples/HTKDemo/configs/monPlainM1S1.dcf. +There is a README file in the samples/HTKDemo directory that explains +the operation of the demonstration in detail but, in short, you need +to run the demonstration script passing it the configuration file +samples/HTKDemo/configs/monPlainM1S1.dcf as input. To test the language modelling tools you should follow the tutorial in the HTK book, using the files in the LMTutorial/ directory. -Before running the demo make sure you have compiled all the HTK tools -and the executables are in your PATH, i.e. just typing 'HInit' at the -commandline prints a short usage summary. To run the demonstration -type: - -$ cd HTKDemo -$ ./runDemo configs/monPlainM1S1.dcf - -The recognition results obtained should match the following. - -On the training set: ------------------------- Overall Results -------------------------- -SENT: %Correct=0.00 [H=0, S=7, N=7] -WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] -=================================================================== - -On the test set: ------------------------- Overall Results -------------------------- -SENT: %Correct=0.00 [H=0, S=3, N=3] -WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] -=================================================================== - -NB to run this demo under Windows you must have perl installed and you -need to invoke perl explicitly. See http://www.perl.org/ to download -the perl distribution. The script runDemo.pl should be used in place -of runDemo i.e. to run the test above type - - > perl runDemo.pl configs\monPlainM1S1.dcf - +In addition to basic testing of the HTK installation, it is also possible +to build several HTK systems for the Resource Management (RM) task. +These systems range in complexity from simpler Gaussian mixture model +based HMMs to more complex artificial neural network based systems. +The RM recipe is located in samples/RMHTK directory and is documented +as a part of tutorial chapter in the HTK book. \ No newline at end of file diff --git a/config.guess b/config.guess deleted file mode 100644 index dff9e48..0000000 --- a/config.guess +++ /dev/null @@ -1,1317 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. - -timestamp='2001-09-04' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner . -# Please send patches to . -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - - -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c ; - for c in cc gcc c89 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; - if test $? = 0 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - rm -f $dummy.c $dummy.o $dummy.rel ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # Netbsd (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - *) machine=${UNAME_MACHINE}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE}" in - i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - eval $set_cc_for_build - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - sparc*:NetBSD:*) - echo `uname -p`-unknown-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - case "${HPUX_REV}" in - 11.[0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - esac ;; - esac - fi ;; - esac - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; - esac - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in - big) echo mips-unknown-linux-gnu && exit 0 ;; - little) echo mipsel-unknown-linux-gnu && exit 0 ;; - esac - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - ld_supported_targets=`cd /; ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - cat >$dummy.c < -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-pc-linux-gnu\n", argv[1]); -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-pc-linux-gnuaout\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then - UNAME_MACHINE=pc - fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[KW]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/config.sub b/config.sub deleted file mode 100644 index 393f13d..0000000 --- a/config.sub +++ /dev/null @@ -1,1411 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. - -timestamp='2001-09-07' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dsp16xx \ - | fr30 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el | mips64vr4300 \ - | mips64vr4300el | mips64vr5000 | mips64vr5000el \ - | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ - | mipsisa32 \ - | mn10200 | mn10300 \ - | ns16k | ns32k \ - | openrisc \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | s390 | s390x \ - | sh | sh[34] | sh[34]eb | shbe | shle \ - | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ - | stormy16 | strongarm \ - | tahoe | thumb | tic80 | tron \ - | v850 \ - | we32k \ - | x86 | xscale \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alphapca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armv*-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c54x-* \ - | clipper-* | cray2-* | cydra-* \ - | d10v-* | d30v-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | m32r-* \ - | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ - | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ - | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | s390-* | s390x-* \ - | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ - | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ - | v850-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [cjt]90) - basic_machine=${basic_machine}-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i686-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=t3e-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh3eb | sh4eb) - basic_machine=sh-unknown - ;; - sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto*) - os=-nto-qnx - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/configure b/configure deleted file mode 100644 index e575128..0000000 --- a/configure +++ /dev/null @@ -1,6788 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for HTK 3.4.1. -# -# Report bugs to . -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -# -# Copyright 2003-2009 University of Cambridge -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Identity of this package. -PACKAGE_NAME='HTK' -PACKAGE_TARNAME='htk' -PACKAGE_VERSION='3.4.1' -PACKAGE_STRING='HTK 3.4.1' -PACKAGE_BUGREPORT='htk-mgr@eng.cam.ac.uk' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -SET_MAKE -AWK -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -LN_S -RANLIB -XMKMF -CPP -GREP -EGREP -LIBOBJS -POW_LIB -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -TRADHTK -TRADHTKBIN -make_all -make_install -HSLAB -HGRAF -BINARY_EXTENSION -LTLIBOBJS' -ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -XMKMF -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures HTK 3.4.1 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/htk] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of HTK 3.4.1:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-trad-htk HTK installed into $prefix/bin.$cpu and installed - when compiled - --enable-hdecode build large vocabulary recognition system (HDecode) - --disable-hlmtools don't build Language Modelling tools - --disable-hslab don't build HSLab - --enable-htkbook build HTK book - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-x use the X Window System - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - XMKMF Path to xmkmf, Makefile generator for X Window System - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -HTK configure 3.4.1 -generated by GNU Autoconf 2.61 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -Copyright 2003-2009 University of Cambridge -_ACEOF - exit -fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by HTK $as_me 3.4.1, which was -generated by GNU Autoconf 2.61. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" -fi -shift -for ac_site_file -do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - - - - - - - - - - - - - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - SET_MAKE= -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$AWK" && break -done - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done -IFS=$as_save_IFS - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - - -{ echo "$as_me:$LINENO: checking for main in -lX11" >&5 -echo $ECHO_N "checking for main in -lX11... $ECHO_C" >&6; } -if test "${ac_cv_lib_X11_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_X11_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_X11_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_main" >&5 -echo "${ECHO_T}$ac_cv_lib_X11_main" >&6; } -if test $ac_cv_lib_X11_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBX11 1 -_ACEOF - - LIBS="-lX11 $LIBS" - -fi - - -{ echo "$as_me:$LINENO: checking for main in -lm" >&5 -echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_m_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 -echo "${ECHO_T}$ac_cv_lib_m_main" >&6; } -if test $ac_cv_lib_m_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - - -ac_config_headers="$ac_config_headers " - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6; } - - -# Check whether --with-x was given. -if test "${with_x+set}" = set; then - withval=$with_x; -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 -echo "$as_me: error: Cannot use X directory names containing '" >&2;} - { (exit 1); exit 1; }; };; #( - *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi - -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl; do - if test -r "$ac_dir/libX11.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } -fi - -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - - -for ac_header in errno.h fcntl.h float.h limits.h malloc.h memory.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to htk-mgr@eng.cam.ac.uk ## -## ------------------------------------ ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_const=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } -if test "${ac_cv_type_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef size_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_size_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_size_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } -if test $ac_cv_type_size_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_time=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_struct_tm=time.h -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_struct_tm=sys/time.h -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF - -fi - - -if test $ac_cv_c_compiler_gnu = yes; then - { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; } -if test "${ac_cv_prog_gcc_traditional+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6; } - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - -{ echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_working=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memcmp_working=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - - -for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to htk-mgr@eng.cam.ac.uk ## -## ------------------------------------ ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 -echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; } -if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_malloc_0_nonnull=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if defined STDC_HEADERS || defined HAVE_STDLIB_H -# include -#else -char *malloc (); -#endif - -int -main () -{ -return ! malloc (0); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_malloc_0_nonnull=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_malloc_0_nonnull=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 -echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; } -if test $ac_cv_func_malloc_0_nonnull = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 1 -_ACEOF - -else - cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 0 -_ACEOF - - case " $LIBOBJS " in - *" malloc.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS malloc.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<\_ACEOF -#define malloc rpl_malloc -_ACEOF - -fi - - - -{ echo "$as_me:$LINENO: checking for working strtod" >&5 -echo $ECHO_N "checking for working strtod... $ECHO_C" >&6; } -if test "${ac_cv_func_strtod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_strtod=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -$ac_includes_default -#ifndef strtod -double strtod (); -#endif -int -main() -{ - { - /* Some versions of Linux strtod mis-parse strings with leading '+'. */ - char *string = " +69"; - char *term; - double value; - value = strtod (string, &term); - if (value != 69 || term != (string + 4)) - return 1; - } - - { - /* Under Solaris 2.4, strtod returns the wrong value for the - terminating character under some conditions. */ - char *string = "NaN"; - char *term; - strtod (string, &term); - if (term != string && *(term - 1) == 0) - return 1; - } - return 0; -} - -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strtod=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_strtod=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 -echo "${ECHO_T}$ac_cv_func_strtod" >&6; } -if test $ac_cv_func_strtod = no; then - case " $LIBOBJS " in - *" strtod.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strtod.$ac_objext" - ;; -esac - -{ echo "$as_me:$LINENO: checking for pow" >&5 -echo $ECHO_N "checking for pow... $ECHO_C" >&6; } -if test "${ac_cv_func_pow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define pow to an innocuous variant, in case declares pow. - For example, HP-UX 11i declares gettimeofday. */ -#define pow innocuous_pow - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pow (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef pow - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pow (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_pow || defined __stub___pow -choke me -#endif - -int -main () -{ -return pow (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_pow=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_pow=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_pow" >&5 -echo "${ECHO_T}$ac_cv_func_pow" >&6; } - -if test $ac_cv_func_pow = no; then - { echo "$as_me:$LINENO: checking for pow in -lm" >&5 -echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_pow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pow (); -int -main () -{ -return pow (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_m_pow=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_pow=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5 -echo "${ECHO_T}$ac_cv_lib_m_pow" >&6; } -if test $ac_cv_lib_m_pow = yes; then - POW_LIB=-lm -else - { echo "$as_me:$LINENO: WARNING: cannot find library containing definition of pow" >&5 -echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} -fi - -fi - -fi - -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_signal=int -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_signal=void -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - -for ac_func in vprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -{ echo "$as_me:$LINENO: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } -if test "${ac_cv_func__doprnt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define _doprnt to an innocuous variant, in case declares _doprnt. - For example, HP-UX 11i declares gettimeofday. */ -#define _doprnt innocuous__doprnt - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef _doprnt - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char _doprnt (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub__doprnt || defined __stub____doprnt -choke me -#endif - -int -main () -{ -return _doprnt (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func__doprnt=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func__doprnt=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } -if test $ac_cv_func__doprnt = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DOPRNT 1 -_ACEOF - -fi - -fi -done - - - - - - - - - - - - - - - - -for ac_func in floor gettimeofday memmove memset modf pow socket sqrt strchr strcspn strrchr strspn strstr strtol -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } - -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -# Check whether --enable-trad-htk was given. -if test "${enable_trad_htk+set}" = set; then - enableval=$enable_trad_htk; -fi - - -# Check whether --enable-hdecode was given. -if test "${enable_hdecode+set}" = set; then - enableval=$enable_hdecode; -fi - - -# Check whether --enable-hlmtools was given. -if test "${enable_hlmtools+set}" = set; then - enableval=$enable_hlmtools; -fi - - -# Check whether --enable-hslab was given. -if test "${enable_hslab+set}" = set; then - enableval=$enable_hslab; -fi - - -# Check whether --enable-htkbook was given. -if test "${enable_htkbook+set}" = set; then - enableval=$enable_htkbook; -fi - - - -case "$CC" in - gcc*) - CFLAGS="-Wall -Wno-switch $CFLAGS" - ;; -esac - - -trad_bin_dir=$host -case "$host_cpu" in - powerpc) - host=darwin - trad_bin_dir=$host - ;; -esac - -case "$host" in - *x86_64*linux*) - CFLAGS="-m32 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=linux - trad_bin_dir=linux - ;; - *linux*) - CFLAGS="-ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=linux - trad_bin_dir=linux - ;; - *pc-solaris*) - CFLAGS="-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/openwin/lib -ldl -lsocket -lnsl -lintl $LDFLAGS" - ;; - *sun*) - CFLAGS="-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/openwin/lib -ldl -lsocket -lnsl -lintl $LDFLAGS" - ;; - *sgi*) - CFLAGS="-O -DSGI_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-laudio -lmalloc $LDFLAGS" - ;; - *hp*) - CFLAGS="+e -O -I/usr/include/X11R5 -I/usr/include/audio -I/opt/audio/include -D_HPUX_SOURCE -Aa -DHPUX_AUDIO -DUSE_TIMER -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/opt/audio/lib -lAlib $LDFLAGS" - ;; - *cygwin) - CFLAGS="-ansi -DCYGWIN -D'ARCH=\"ASCII\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=ASCII - CPU=darwin - BINARY_EXTENSION=.exe - ;; - i386*darwin*) - CFLAGS="-ansi -g -O2 -DNO_AUDIO -D'ARCH=\"darwin\"' -I/usr/include/malloc $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=darwin - Objcopy=echo - PRILF="-x" - CPU=darwin - SHRLF="-shared" - LIBEXT=dylib - ;; - darwin) - CFLAGS="-ansi -g -O2 -DNO_AUDIO -D'ARCH=\"darwin\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=darwin - Objcopy=echo - PRILF="-x" - CPU=darwin - SHRLF="-shared" - LIBEXT=dylib - ;; -esac - -make_all=htktools -make_install=install-htktools -build_notes="Build notes: " -case "$enable_trad_htk" in - yes) - bindir=${bindir}.${trad_bin_dir} - libdir=${libdir}.${trad_bin_dir} - ;; -esac -case "$enable_hlmtools" in - no) - build_notes="$build_notes The Language Modelling tools will not be built. You can build them manually later by running 'make hlmtools install-hlmtools'" - ;; - *) - make_all="$make_all hlmtools" - make_install="$make_install install-hlmtools" - build_notes="$build_notes Language Modelling tools will be built." - ;; -esac -case "$enable_hdecode" in - yes) - make_all="$make_all hdecode" - make_install="$make_install install-hdecode" - build_notes="$build_notes Large Vocabulary recogniser HDecode will be built." - ;; - *) - build_notes="$build_notes HDecode will not be built. You can build it manually later by running 'make hdecode install-hdecode'" - ;; -esac -case "$enable_htkbook" in - yes) - make_all="$make_all book" - make_install="$make_install install-book" - build_notes="$build_notes The HTK Book will be built." - ;; -esac -case "$enable_hslab" in - no) - HSLAB= - HGRAF=HGraf.null.o - build_notes="$build_notes HSLab will not be built. If you want to change this then run 'configure' again with the '--enable-hslab' option." - ;; - *) - HSLAB=HSLab - HGRAF=HGraf.o - build_notest="$build_notes GUI tool HSLab will be built." - ;; -esac -TRADHTK=$enable_trad_htk - -TRADHTKBIN=$trad_bin_dir - -make_all=$make_all - -make_install=$make_install - -HSLAB=$HSLAB - -HGRAF=$HGRAF - -BINARY_EXTENSION=$BINARY_EXTENSION - - -ac_config_files="$ac_config_files HTKLib/Makefile HTKTools/Makefile HLMLib/Makefile HLMTools/Makefile HTKLVRec/Makefile Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 - -# Save the log message, to keep $[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by HTK $as_me 3.4.1, which was -generated by GNU Autoconf 2.61. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -HTK config.status 3.4.1 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2006 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "HTKLib/Makefile") CONFIG_FILES="$CONFIG_FILES HTKLib/Makefile" ;; - "HTKTools/Makefile") CONFIG_FILES="$CONFIG_FILES HTKTools/Makefile" ;; - "HLMLib/Makefile") CONFIG_FILES="$CONFIG_FILES HLMLib/Makefile" ;; - "HLMTools/Makefile") CONFIG_FILES="$CONFIG_FILES HLMTools/Makefile" ;; - "HTKLVRec/Makefile") CONFIG_FILES="$CONFIG_FILES HTKLVRec/Makefile" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -AWK!$AWK$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -LN_S!$LN_S$ac_delim -RANLIB!$RANLIB$ac_delim -XMKMF!$XMKMF$ac_delim -CPP!$CPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -POW_LIB!$POW_LIB$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -TRADHTK!$TRADHTK$ac_delim -TRADHTKBIN!$TRADHTKBIN$ac_delim -make_all!$make_all$ac_delim -make_install!$make_install$ac_delim -HSLAB!$HSLAB$ac_delim -HGRAF!$HGRAF$ac_delim -BINARY_EXTENSION!$BINARY_EXTENSION$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 73; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF - if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f $ac_file - mv "$tmp/config.h" $ac_file - fi - else - echo "/* $configure_input */" - cat "$ac_result" - fi - rm -f "$tmp/out12" - ;; - - - esac - -done # for ac_tag - - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - - -case "$enable_trad_htk" in - yes) -cat< - - * exp.linux_icc: Turn off static linking in icc. - -2002-08-13 Gunnar Evermann - - * exp.linux: - * env.linux: Turn on warnings in gcc. - -2002-01-16 Gunnar Evermann - - * exp.linux_icc: New file for Intel C++ Compiler. - -2002-01-10 Gunnar Evermann - - * exp.linux: - * env.linux: Add -g flag to HTKCF. - -2000-09-25 Gunnar Evermann - - * exp.linux: Change X dir to /usr/X11R6. - -2000-09-04 Gunnar Evermann - - * exp.*: Fix syntax. - diff --git a/env/env.decosf_alpha b/env/env.decosf_alpha deleted file mode 100644 index ec24660..0000000 --- a/env/env.decosf_alpha +++ /dev/null @@ -1,6 +0,0 @@ -setenv CPU decosf_alpha -setenv HTKCF '-O2 -DDEC_AUDIO' -setenv HTKCC 'cc' -setenv HTKLF '-lmme' -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.hp700 b/env/env.hp700 deleted file mode 100644 index fdad1cc..0000000 --- a/env/env.hp700 +++ /dev/null @@ -1,7 +0,0 @@ -setenv CPU hp700 -setenv HTKCF '+e -O -I/usr/include/X11R5 -I/usr/include/audio -I/opt/audio/include -D_HPUX_SOURCE -Aa -DHPUX_AUDIO -DUSE_TIMER' -setenv HTKLF '-L/opt/audio/lib -lAlib' -setenv HTKCC 'cc' -setenv LPATH /lib:/usr/lib:/usr/lib/X11R5 -setenv SHRLF '-b' -setenv LIBEXT 'sl' diff --git a/env/env.linux b/env/env.linux deleted file mode 100644 index 3ee97f8..0000000 --- a/env/env.linux +++ /dev/null @@ -1,9 +0,0 @@ -setenv HTKCF '-ansi -Wall -Wno-switch -g -O2 -DOSS_AUDIO' -setenv HTKLF '-L/usr/X11/lib' -setenv HTKCC 'gcc' -setenv Arch linux -setenv Objcopy "echo" -setenv PRILF '-x' -setenv CPU linux -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.linux-icc8-P4 b/env/env.linux-icc8-P4 deleted file mode 100644 index 0b5696e..0000000 --- a/env/env.linux-icc8-P4 +++ /dev/null @@ -1,10 +0,0 @@ -source /opt/intel_cc_80/bin/iccvars.sh -setenv HTKCF '-DNDEBUG -DOSS_AUDIO -fast -xN ' -setenv HTKLF '-fast -xN -L/usr/X11R6/lib' -setenv HTKCC 'icc' -setenv Arch LINUX -setenv Objcopy "echo" -setenv PRILF '-x' -setenv CPU linux -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.sgi b/env/env.sgi deleted file mode 100644 index 9515f12..0000000 --- a/env/env.sgi +++ /dev/null @@ -1,6 +0,0 @@ -setenv CPU sgi -setenv HTKCF '-O -DSGI_AUDIO' -setenv HTKLF '-laudio -lmalloc' -setenv HTKCC 'cc' -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.sun4_solaris b/env/env.sun4_solaris deleted file mode 100644 index a9f5a4b..0000000 --- a/env/env.sun4_solaris +++ /dev/null @@ -1,7 +0,0 @@ -setenv CPU sun4_solaris -setenv HTKCC 'cc' -setenv HTKCF '-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -setenv HTKLF '-ldl -lsocket -lnsl -lintl' -setenv LD_LIBRARY_PATH /usr/openwin/lib -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.sun4_solaris_cc b/env/env.sun4_solaris_cc deleted file mode 100644 index 96b3df7..0000000 --- a/env/env.sun4_solaris_cc +++ /dev/null @@ -1,5 +0,0 @@ -setenv CPU sun4_solaris -setenv HTKCC 'cc' -setenv HTKCF '-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -setenv HTKLF '-ldl -lsocket -lnsl -lintl' -setenv LD_LIBRARY_PATH /usr/openwin/lib diff --git a/env/env.sun4_solaris_gcc b/env/env.sun4_solaris_gcc deleted file mode 100644 index c2ee50d..0000000 --- a/env/env.sun4_solaris_gcc +++ /dev/null @@ -1,5 +0,0 @@ -setenv CPU sun4_solaris -setenv HTKCF '-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP' -setenv HTKLF '-ldl -lsocket -lnsl -lintl' -setenv HTKCC 'gcc' -setenv LPATH /usr/openwin/lib diff --git a/env/exp.decosf_alpha b/env/exp.decosf_alpha deleted file mode 100644 index 74bf96a..0000000 --- a/env/exp.decosf_alpha +++ /dev/null @@ -1,6 +0,0 @@ -export CPU=decosf_alpha -export HTKCF='-O2 -DDEC_AUDIO' -export HTKCC='cc' -export HTKLF='-lmme' -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.hp700 b/env/exp.hp700 deleted file mode 100644 index ccfc138..0000000 --- a/env/exp.hp700 +++ /dev/null @@ -1,7 +0,0 @@ -export CPU=hp700 -export HTKCF='+e -O -I/usr/include/X11R5 -I/usr/include/audio -I/opt/audio/include -D_HPUX_SOURCE -Aa -DHPUX_AUDIO -DUSE_TIMER' -export HTKLF='-L/opt/audio/lib -lAlib' -export HTKCC='cc' -export LPATH=/lib:/usr/lib:/usr/lib/X11R5 -export SHRLF='-b' -export LIBEXT='sl' diff --git a/env/exp.linux b/env/exp.linux deleted file mode 100644 index c244509..0000000 --- a/env/exp.linux +++ /dev/null @@ -1,9 +0,0 @@ -export HTKCF='-ansi -Wall -Wno-uninitialized -Wno-switch -g -O3 -DOSS_AUDIO -DNDEBUG' -export HTKLF='-L/usr/X11R6/lib' -export HTKCC='/usr/local/gcc-3.1.1/bin/gcc' -export Arch=linux -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux-dec b/env/exp.linux-dec deleted file mode 100644 index d48f889..0000000 --- a/env/exp.linux-dec +++ /dev/null @@ -1,9 +0,0 @@ -export HTKCF='-ansi -Wall -Wno-switch -g -O3 -DOSS_AUDIO -DNDEBUG -DNO_LAT_LM' -export HTKLF='-L/usr/X11R6/lib' -export HTKCC='/usr/local/gcc-3.1.1/bin/gcc' -export Arch=linux -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux-icc7-P4 b/env/exp.linux-icc7-P4 deleted file mode 100644 index 8568141..0000000 --- a/env/exp.linux-icc7-P4 +++ /dev/null @@ -1,10 +0,0 @@ -. /opt/intel/compiler70/ia32/bin/iccvars.sh -export HTKCF='-DNDEBUG -DOSS_AUDIO -O3 -ip -xW -tpp7 ' -export HTKLF='-xW -L/usr/X11R6/lib' -export HTKCC='icc' -export Arch=LINUX -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux-icc8-P4 b/env/exp.linux-icc8-P4 deleted file mode 100644 index d54da25..0000000 --- a/env/exp.linux-icc8-P4 +++ /dev/null @@ -1,10 +0,0 @@ -. /opt/intel_cc_80/bin/iccvars.sh -export HTKCF='-DNDEBUG -DOSS_AUDIO -fast -xN ' -export HTKLF='-fast -xN -L/usr/X11R6/lib' -export HTKCC='icc' -export Arch=LINUX -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux_icc b/env/exp.linux_icc deleted file mode 100644 index 3d03e2c..0000000 --- a/env/exp.linux_icc +++ /dev/null @@ -1,9 +0,0 @@ -export HTKCF='-DNDEBUG -DOSS_AUDIO -O3 -ip -tpp6 ' -export HTKLF='-L/usr/X11R6/lib' -export HTKCC='icc' -export Arch=linux -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.sgi b/env/exp.sgi deleted file mode 100644 index a21d84a..0000000 --- a/env/exp.sgi +++ /dev/null @@ -1,6 +0,0 @@ -export CPU=sgi -export HTKCF='-O -DSGI_AUDIO' -export HTKLF='-laudio -lmalloc' -export HTKCC='cc' -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.sun4_solaris b/env/exp.sun4_solaris deleted file mode 100644 index cd01f68..0000000 --- a/env/exp.sun4_solaris +++ /dev/null @@ -1,7 +0,0 @@ -export CPU=sun4_solaris -export HTKCC='cc' -export HTKCF='-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -export HTKLF='-ldl -lsocket -lnsl -lintl' -export LD_LIBRARY_PATH=/usr/openwin/lib -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.sun4_solaris_cc b/env/exp.sun4_solaris_cc deleted file mode 100644 index d4b8c21..0000000 --- a/env/exp.sun4_solaris_cc +++ /dev/null @@ -1,5 +0,0 @@ -export CPU=sun4_solaris -export HTKCC='cc' -export HTKCF='-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -export HTKLF='-ldl -lsocket -lnsl -lintl' -export LD_LIBRARY_PATH=/usr/openwin/lib diff --git a/env/exp.sun4_solaris_gcc b/env/exp.sun4_solaris_gcc deleted file mode 100644 index 45893d6..0000000 --- a/env/exp.sun4_solaris_gcc +++ /dev/null @@ -1,5 +0,0 @@ -export CPU=sun4_solaris -export HTKCF='-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP' -export HTKLF='-ldl -lsocket -lnsl -lintl' -export HTKCC='gcc' -export LPATH=/usr/openwin/lib diff --git a/install-sh b/install-sh deleted file mode 100644 index 11870f1..0000000 --- a/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - : -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f "$src" ] || [ -d "$src" ] - then - : - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - : - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - : - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/samples/HTKDemo/ChangeLog b/samples/HTKDemo/ChangeLog new file mode 100755 index 0000000..7ff54bc --- /dev/null +++ b/samples/HTKDemo/ChangeLog @@ -0,0 +1,7 @@ +2000-10-13 Gunnar Evermann + + * toolconfs/*.conf: Remove BYTEORDER=NOVAX lines. + + * runDemo.pl: + * runDemo: Set $edFile=$monEdFile by default. + From "Aldebaro Klautau" diff --git a/samples/HTKDemo/MakeProtoHMMSet b/samples/HTKDemo/MakeProtoHMMSet new file mode 100755 index 0000000..9fdce9b --- /dev/null +++ b/samples/HTKDemo/MakeProtoHMMSet @@ -0,0 +1,339 @@ +#!/usr/bin/perl + +# +# This script can be used to produce prototype HMMSets for +# PLAINHS, TIEDHS and DISCRETEHS systems +# + +# Global Variables +$nStates=0; # Number of active HMM states +$nStreams=0; # Number of streams +$vecSize=0; # Size of feature vector +$pKind=""; # Parameter kind +$cKind=""; # Covariance kind +$hsKind=""; # System kind +$outDir=""; # Output HMMSet directory +$configParams; # Global store of config parameters + + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +if ($ARGV[0]){ + &ReadPCF(); + &SetVars(); + &TestDirEmpty(); + &WriteHSet(); +}else{ + print "USAGE: MakeProtoHMMSet ConfigFile\n"; +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#------------------------------------- +# ReadPCF: Reads the Proto Config File +#------------------------------------- +sub ReadPCF { + +local($validData,$param,$val)=0; + +while(<>){ + if(/\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if (($param =~ /hmmList/)||($param =~ /outDir/)||($param =~ /parmKind/)) { + }elsif ($param =~ /mixes/){ + @mixes=split(/ +/, $_); + }elsif ($param =~ /sWidths/){ + @sWidths=split(/ +/, $_); + }else{ + $val =~ tr/A-Z/a-z/; + } + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Proto Config File Read + ====================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +$param,$val +. +} + +#----------------------------------------- +# SetVars: Set variable from config params +#----------------------------------------- +sub SetVars { + +$nStates = $configParams{"nStates"}; +($nStates >= 1) || die "nStates must be >= 1"; +$nStreams = $configParams{"nStreams"}; +($nStreams =~ /^[1234]/) || die "nStreams must be 1,2,3 or 4"; +$vecSize = $configParams{"vecSize"}; +($vecSize >= 1) || die "vecSize must be >= 1"; +$hsKind = $configParams{"hsKind"}; +($hsKind =~ /^[pPtTdD]/) || die "hsKind must be P, T or D"; +$cKind = $configParams{"covKind"}; +($cKind =~ /^[dDfF]/) || die "covKind must be F or D"; +$pKind = $configParams{"parmKind"}; +if ($hsKind=~/^[dD]/){ + ($pKind=~/[vV]$/) || die "If hsKind is D then parmKind must have _V appended"; +} +if ($hsKind=~/^[pPtT]/){ + if($pKind=~/[vV]$/){ + die "If hsKind is not D then parmKind must not have _V appended"; + } +} +$outDir = $configParams{"outDir"}; +opendir(OUTDIR,$outDir) || die "Can't open $outDir"; +$hmmList = $configParams{"hmmList"}; +(-f $hmmList) || die "Cannot find HMM list file $hmmList"; +} + +#----------------------------------------------------------------- +# TestDirEmpty: Test if outDir is empty and prompt for clearing it +#----------------------------------------------------------------- +sub TestDirEmpty { + @nFiles = grep(!/^\./, readdir(OUTDIR)); #Forget about . files + if($nFiles[0]){ + print "\n$outDir not empty clear it Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $outDir\n"; + $nFiles[0] = unlink(<$outDir/*>); + print "Removed $nFiles[0] files\n"; + }else{ + print "\nDirectory $outDir unaltered\n"; + } + } +} + +#************************ HMM Functions ********************************** + +#------------------------------------ +# WriteGlobOpts: Write global options +#------------------------------------ +sub WriteGlobOpts { + local($fleHandle,$hmmName)=@_; + + printf($fleHandle " ~o %d <$pKind> %d ",$vecSize,$nStreams); + for ($i=1; $i<=$nStreams; $i++) { + printf($fleHandle "%d ",$sWidths[$i]); + } + printf($fleHandle "\n"); + (($hsKind=~/^[tT]/)&&($fleHandle=~/MACRO/)) || printf($fleHandle " ~h \"$hmmName\"\n"); +} + +#------------------------------------------------------- +# WriteDiagCMixtures: write a diagonal covariance mixture +#------------------------------------------------------- +sub WriteDiagCMixtures { + local($streamNum)=@_; + local($i,$j,$k,$mixWght)=0; + + $mixWght=1/$mixes[$streamNum]; + + for ($i=1; $i<=$mixes[$streamNum]; $i++){ + printf(PROTO " %d %1.4f\n",$i,$mixWght); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($j=1; $j<=$sWidths[$streamNum]; $j++){ + printf(PROTO "0.0 "); + } + printf(PROTO "\n"); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($k=1; $k<=$sWidths[$streamNum]; $k++){ + printf(PROTO "1.0 "); + } + printf(PROTO "\n"); + } +} + +#------------------------------------------------------- +# WriteFullCMixtures: write the full covariance mixtures +#------------------------------------------------------- +sub WriteFullCMixtures { + local($streamNum)=@_; + local($i,$j,$k,$mixWght,$tmpVecSize)=0; + + $mixWght=1/$mixes[$streamNum]; + $tmpVecSize=$sWidths[$streamNum]; + + for ($i=1; $i<=$mixes[$streamNum]; $i++){ + printf(PROTO " %d %1.4f\n",$i,$mixWght); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($j=1; $j<=$sWidths[$streamNum]; $j++){ + printf(PROTO "0.0 "); + } + printf(PROTO "\n"); + printf(PROTO " %d\n",$sWidths[$streamNum]); + while ($tmpVecSize>=1){ + for ($k=1; $k<=$tmpVecSize; $k++){ + if ($k==1){ + printf(PROTO "1.0 "); + }else{ + printf(PROTO "0.0 "); + } + } + printf(PROTO "\n"); + $tmpVecSize--; + } + $tmpVecSize=$sWidths[$streamNum]; + } +} + +#----------------------------------------------- +# WriteTiedMixes: Write tied mixes to macro file +#----------------------------------------------- +sub WriteTiedMixes { + local($i,$j,$k)=0; + + if (-r $outDir."/newMacros"){ + unlink(<$outDir/newMacros>); + } + open(MACRO, ">>$outDir/newMacros") || die "Cannot open $outDir/newMacros for writing"; + &WriteGlobOpts(MACRO); + for ($i=1; $i<=$nStreams; $i++){ + for ($j=1; $j<=$mixes[$i]; $j++){ + printf(MACRO "~m \"TM_${i}_${j}\"\n"); + printf(MACRO " %d\n",$sWidths[$i]); + for ($k=1; $k<=$sWidths[$i]; $k++){ + printf(MACRO "0.0 "); + } + printf(MACRO "\n"); + printf(MACRO " %d\n",$sWidths[$i]); + for ($k=1; $k<=$sWidths[$i]; $k++){ + printf(MACRO "1.0 "); + } + printf(MACRO "\n"); + } + } +} + +#---------------------------------------------- +# WriteDProbs: Write the discrete probabilities +#---------------------------------------------- +sub WriteDProbs { + local($s)=@_; + + printf(PROTO " %d*$mixes[$s]\n",-2371.8*log(1/$mixes[$s])); +} + +#----------------------------------------------- +# WriteTiedWghts: Write the tied mixture weights +#----------------------------------------------- +sub WriteTiedWghts { + local($streamNum)=@_; + + printf(PROTO " \"TM_${streamNum}_\"\n"); + printf(PROTO "%e*$mixes[$streamNum]\n",1/$mixes[$streamNum]); +} + +#---------------------------------------------- +# WriteStates: Write the contents of the states +#---------------------------------------------- +sub WriteStates { + local($i,$j)=0; + + for ($i=1; $i<=$nStates; $i++){ + printf(PROTO " %d ",$i+1); + for ($k=1; $k<=$nStreams; $k++){ + printf(PROTO "%d ",$mixes[$k]); + } + printf(PROTO "\n"); + for ($j=1; $j<=$nStreams; $j++){ + printf(PROTO " %d\n",$j); + if ($hsKind =~ /^[Dd]/){ + &WriteDProbs($j); + }elsif ($hsKind =~ /^[pP]/){ + if ($cKind =~ /^[dD]/){ + &WriteDiagCMixtures($j); + }else{ + &WriteFullCMixtures($j); + } + }elsif ($hsKind =~ /^[Tt]/){ + &WriteTiedWghts($j); + } + } + } +} + +#----------------------------------------------------------- +# WriteTransMat: Write the contents of the transition matrix +#----------------------------------------------------------- +sub WriteTransMat { + local($i,$j)=0; + + printf(PROTO " %d\n",$nStates+2); + for ($i=1; $i<=$nStates+2; $i++){ + for ($j=1; $j<=$nStates+2; $j++){ + if (($i==1)&&($j==2)){ + printf (PROTO " 1.000e+0"); + }elsif (($i==$j)&&($i!=1)&&($i!=$nStates+2)){ + printf (PROTO " 6.000e-1"); + }elsif ($i==($j-1)){ + printf (PROTO " 4.000e-1"); + }else{ + printf (PROTO " 0.000e+0"); + } + } + printf (PROTO "\n"); + } +} + +#---------------------------------------- +# WriteHMM: Write the contents of the HMM +#---------------------------------------- +sub WriteHMM { + local($hmmName)=@_; + local($i)=0; + + open(PROTO, ">$outDir/$hmmName") || die "Cannot open $outDir/$hmmName for writing"; + &WriteGlobOpts(PROTO,$hmmName); + printf(PROTO "\n"); + printf(PROTO " %d\n",$nStates+2); + &WriteStates(); + &WriteTransMat(); + printf(PROTO "\n"); + close(PROTO); +} + +#------------------------------------------ +# WriteHSet: Write the contents of the HSet +#------------------------------------------ +sub WriteHSet { + + open(HMMLIST, $hmmList) || die "Cannot open $hmmList for reading"; + + printf "\nWriting HMMSet\n\n"; + if ($hsKind =~ /^[tT]/){ + printf "Writing Tied Mixtures to $outDir/newMacros\n"; + &WriteTiedMixes(); + printf "\n"; + } + while () { + chop($_); + printf "Writing HMMDef to $outDir/$_\n"; + &WriteHMM($_); + } + close(HMMLIST); +} + + + + diff --git a/samples/HTKDemo/README b/samples/HTKDemo/README new file mode 100755 index 0000000..c7360fa --- /dev/null +++ b/samples/HTKDemo/README @@ -0,0 +1,171 @@ + HTK Demonstration + ================= + +This directory contains the data files, auxiliary files and perl +script for simple demonstrations of HTK These demonstrations should +also be used to test new installations of HTK. + +Directory Contents +------------------ + +This directory includes the following files and directories. . + + a) this README file and a version README.NT with instructions for + use wit Windows NT. + + b) a directory called 'tidata' which contains 7 training sentences + (tr*) and 3 test sentences (te*) all by the same speaker taken + from the TIMIT prototype database. For each sentence there is a + waveform file (.adc) and a transcription (.phn). + + c) a directory called 'edfiles' which contains... + + An HLEd edit script called 'edlabs.led' . This script converts + the TIMIT transcription files to broad class transcription files + in which just the following broad class phones are distinguished + + C - consonant, V - vowel, N - nasal, + L - liquid, S - silence + + Various HLEd edit scripts which can be used to convert the basic + broad class transcriptions to context-dependent versions of + those transcriptions. + + Various HHEd edit scripts used to produce different + configurations of shared parameter models and to convert + monophones to triphones. + + d) a directory called 'networks' which contains... + + A lattice definition file called 'monLattice' for testing broad + class HMMs. + + Three lattice definition files called 'lbiLattice','rbiLattice' + and 'triLattice' for testing broad class left biphones, right + biphones and triphones respectively. + + e) a directory called 'data' which contains sub-directories into + which parameterised versions of the TIMIT data will be placed. + + f) a directory called 'lists' which contains various files listing + models, vocabulary, training & test data etc. + + g) a directory called 'protoconfs' containing the configuration + files required by MakeProtoHMMSet. + + h) a directory called 'configs' which contains example demo + configuration files. + + i) a directory called 'results' which contains results files for + each of the demo configurations found in the 'configs' + directory. + + j) a directory called 'labels' which contains sub-directories into + which HTK format label files for both monophones and context + dependent phones are placed. + + k) a directory called 'toolconfs' which contains configuration + files for each HTK tool used in this demo. + + l) a file called 'outaudio' which contains the recognition output + generated by HVite running in direct audion mode. + + m) A perl script called 'runDemo', which is invoked to run this + demo. + + n) A perl script called 'runDemo.pl', for use on Windows NT + +This directory does not include the following empty directories +you MUST create to run HTK Demo. + + a) a directory called 'accs' which contains sub-directories into + which accumulator files produced by HERest running in parallel + mode will be dumped. + + b) a directory called 'hmms' which contains sub-directories, + 'hmm.0', 'hmm.1', 'hmm.2', 'hmm.3', 'tmp' into which hmms + at various stages of training will be placed. + + c) a directory called 'proto' into which the script MakeProtoHMMSet + puts the required prototype HMMSet. + + d) a directory called 'test' into which recognition files produced + by HVite are placed. + +Running The Demo +---------------- + +The operation of this demo is controlled by parameters set in a demo +configuration file (dcf). The format of this file is given in the file +'DcfFormat' contained in the 'configs' directory. It would be useful +to view that file whilst reading the rest of this README. + +The dcf is designed to be flexible and allow the user to train and +test a wide variety of HMM configurations. + +As mentioned in sections k and l above the directory 'configs' +contains a number of example dcfs which produce a variety of monophone +and triphone HMM systems. The directory 'results' contains the +recognition results obtained with each system. Each dcf has a comment +field in it describing the system which it produces. + +In all of the example scripts, tools to perform data preparation, +training and recognition are invoked. If the user is interested only +in the operation of one tool or a subset of tools then this can be +achieved by editing the dcf. + + +To run the demo invoke the script 'runDemo' contained in the 'HTKDemo' +directory supplying a demo configuration file as an argument. + +For example to produce a single mixture, three stream monophone system +type + + $ cd HTKDemo + $ ./runDemo configs/monPlainM1S3.dcf + +As the script runs the user will be prompted if the target directory +for any process is not empty e.g. + + labels/bcplabs/tri not empty, overwrite using HLEd Y/N?: + +This allows the user to skip over parts of the demo when performing +repeated runs. + + Points To Note + -------------- +1. Not all combinations of configuration parameters are allowed. For + example there is not enough training data to train either full + covariance or multiple mixture triphones. + +2. When generating a context dependent system (Context: T,L or R in + the dcf) the user will see the prompt. + + Has the appropriate monophone system been generated Y/N?: + + Only answer Y to this if the appropriate monophone system, for the + context dependent system requested, exists in all stages of + training. Answering N causes the correct monophone system to be + built. + +3. When generating a TIED or a SHARED context dependent system + (hsKind: T or S in the dcf) a PLAIN context dependent system will + be generated first. + +4. When re-estimating context dependent models you will see warnings + like. + + HERest: WARNING [-2331] + UpdateModels: V-V+C[24] copied: only 1 egs + + This simply means that the triphone V-V+C only occurred once in the + training data and hence HERest was unable to re-estimate the model + parameters. + +5. The coding of data is different for the cases of direct audio and + file based speech recognition. An easy mistake to make with this + demo is to run the direct audio demo and then forget to recode the + training data for subsequent runs of file based recognition. + +Dave Ollason +06/11/95 diff --git a/samples/HTKDemo/README.NT b/samples/HTKDemo/README.NT new file mode 100755 index 0000000..4473c62 --- /dev/null +++ b/samples/HTKDemo/README.NT @@ -0,0 +1,173 @@ + HTK Demonstration + ================= + +This directory contains the data files, auxiliary files and +perl script for simple demonstrations of HTK V2.2. These +demonstrations should also be used to test new installations +of HTK. + +Directory Contents +------------------ + +This directory includes the following files and directories. . + + a) this README file and a version README.NT with instructions for + use wit Windows NT. + + b) a directory called 'tidata' which contains 7 training sentences + (tr*) and 3 test sentences (te*) all by the same speaker taken + from the TIMIT prototype database. For each sentence there is a + waveform file (.adc) and a transcription (.phn). + + c) a directory called 'edfiles' which contains... + + An HLEd edit script called 'edlabs.led' . This script converts + the TIMIT transcription files to broad class transcription files + in which just the following broad class phones are distinguished + + C - consonant, V - vowel, N - nasal, + L - liquid, S - silence + + Various HLEd edit scripts which can be used to convert the basic + broad class transcriptions to context-dependent versions of + those transcriptions. + + Various HHEd edit scripts used to produce different + configurations of shared parameter models and to convert + monophones to triphones. + + d) a directory called 'networks' which contains... + + A lattice definition file called 'monLattice' for testing broad + class HMMs. + + Three lattice definition files called 'lbiLattice','rbiLattice' + and 'triLattice' for testing broad class left biphones, right + biphones and triphones respectively. + + e) a directory called 'data' which contains sub-directories into + which parameterised versions of the TIMIT data will be placed. + + f) a directory called 'lists' which contains various files listing + models, vocabulary, training & test data etc. + + g) a directory called 'protoconfs' containing the configuration + files required by MakeProtoHMMSet. + + h) a directory called 'configs' which contains example demo + configuration files. + + i) a directory called 'results' which contains results files for + each of the demo configurations found in the 'configs' + directory. + + j) a directory called 'labels' which contains sub-directories into + which HTK format label files for both monophones and context + dependent phones are placed. + + k) a directory called 'toolconfs' which contains configuration + files for each HTK tool used in this demo. + + l) a file called 'outaudio' which contains the recognition output + generated by HVite running in direct audion mode. + + m) A perl script called 'runDemo', for use on Linux, Unix and Mac OS X. + + n) A perl script called 'runDemo.pl', which is invoked to run this + demo. + +This directory does not include the following empty directories +you MUST create to run HTK Demo. + + a) a directory called 'accs' which contains sub-directories into + which accumulator files produced by HERest running in parallel + mode will be dumped. + + b) a directory called 'hmms' which contains sub-directories, + 'hmm.0', 'hmm.1', 'hmm.2', 'hmm.3', 'tmp' into which hmms + at various stages of training will be placed. + + c) a directory called 'proto' into which the script MakeProtoHMMSet + puts the required prototype HMMSet. + + d) a directory called 'test' into which recognition files produced + by HVite are placed. + + +Running The Demo +---------------- + +The operation of this demo is controlled by parameters set in a +demo configuration file (dcf). The format of this file is given +in the file 'DcfFormat' contained in the 'configs' directory. +It would be useful to view that file whilst reading the rest of +this README. +The dcf is designed to be flexible and allow the user to train and +test a wide variety of HMM configurations. +As mentioned in sections k and l above the directory 'configs' +contains a number of example dcfs which produce a variety of +monophone and triphone HMM systems. The directory 'results' +contains the recognition results obtained with each system. +Each dcf has a comment field in it describing the system which +it produces. +In all of the example scripts, tools to perform data preparation, +training and recognition are invoked. If the user is interested +only in the operation of one tool or a subset of tools then this +can be achieved by editing the dcf. + + +To run the demo invoke the script 'runDemo.pl' contained in the +'HTKDemo' directory supplying a demo configuration file as +an argument. This must be done from a command window. +For example to produce a single mixture, three stream monophone +system type + + C:\HTK_V2.2> cd HTKDemo + C:\HTK_V2.2\HTKDemo> perl runDemo.pl configs\monPlainM1S3.dcf + +As the script runs the user will be prompted if the target +directory for any process is not empty e.g. + + labels/bcplabs/tri not empty, overwrite using HLEd Y/N?: + +This allows the user to skip over parts of the demo when +performing repeated runs. + + Points To Note + -------------- +1. Not all combinations of configuration parameters are allowed. + For example there is not enough training data to train either + full covariance or multiple mixture triphones. + +2. When generating a context dependent system + (Context: T,L or R in the dcf) + the user will see the prompt. + + Has the appropriate monophone system been generated Y/N?: + + Only answer Y to this if the appropriate monophone system, + for the context dependent system requested, exists in all + stages of training. Answering N causes the correct monophone + system to be built. + +3. When generating a TIED or a SHARED context dependent system + (hsKind: T or S in the dcf) + a PLAIN context dependent system will be generated first. + +4. When re-estimating context dependent models you will see + warnings like. + + HERest: WARNING [-2331] + UpdateModels: V-V+C[24] copied: only 1 egs + + This simply means that the triphone V-V+C only occurred once in the + training data and hence HERest was unable to re-estimate the model + parameters. + +5. The coding of data is different for the cases of direct audio and + file based speech recognition. An easy mistake to make with this + demo is to run the direct audio demo and then forget to recode the + training data for subsequent runs of file based recognition. + +Dave Ollason +06/11/95 diff --git a/samples/HTKDemo/accs.scr b/samples/HTKDemo/accs.scr new file mode 100755 index 0000000..80e9364 --- /dev/null +++ b/samples/HTKDemo/accs.scr @@ -0,0 +1,3 @@ +accs\hmm.2\HER1.acc +accs\hmm.2\HER2.acc +accs\hmm.2\HER3.acc diff --git a/samples/HTKDemo/codebooks/currentCodebook b/samples/HTKDemo/codebooks/currentCodebook new file mode 100755 index 0000000..3a09b23 --- /dev/null +++ b/samples/HTKDemo/codebooks/currentCodebook @@ -0,0 +1,577 @@ +326 0 1 144 3 12 12 2 +1 64 1 0 2 + -1.332013e+01 -5.497896e+00 -8.013033e+00 -9.394035e+00 -6.769001e+00 -2.261324e+00 3.239621e+00 1.145928e+00 1.620998e+00 -3.671893e+00 -4.264359e+00 4.615291e+00 + 1.217671e-01 8.626956e-02 5.353330e-02 1.542888e-01 4.952346e-02 6.900606e-02 8.926173e-02 1.003941e-01 8.551548e-02 1.679274e-01 1.873958e-01 1.655395e-01 + +1 63 2 0 3 + -2.428141e+01 -1.819709e+00 -8.735883e+00 -7.627527e+00 -2.379104e+00 -1.089385e+01 8.726978e-01 -4.211535e+00 -3.899381e+00 -5.627714e+00 -5.976184e+00 -1.096653e+00 + 9.952860e-02 1.053073e-01 1.622664e-01 1.054903e-01 1.013970e-01 1.126389e-01 1.081419e-01 9.903266e-02 1.140494e-01 1.157117e-01 1.516838e-01 1.636851e-01 + +1 62 3 0 4 + -1.826700e+01 -1.378157e+01 -7.314359e-01 -1.172788e+01 -1.156585e+01 -8.315092e-01 -6.247992e+00 1.105790e+00 5.501982e+00 -5.801931e+00 -2.307704e+00 2.195702e+00 + 4.381322e-02 8.612945e-02 6.809495e-02 1.067473e-01 6.538997e-02 9.356708e-02 6.910421e-02 4.591672e-02 4.938687e-02 1.961543e-01 1.336395e-01 1.196039e-01 + +1 61 4 0 5 + -1.055865e+01 -4.808917e+00 3.242229e+00 -1.186531e+01 -1.054073e+01 -2.751729e+00 8.709542e-01 9.743311e+00 -8.253925e+00 -4.807452e+00 -3.829618e+00 -4.380916e+00 + 3.047539e-02 4.919133e-02 6.366605e-02 9.108287e-02 1.186463e-01 3.840207e-02 5.707936e-02 6.651951e-02 5.185885e-02 8.090446e-02 1.087733e-01 8.785125e-02 + +1 60 5 0 6 + -2.241200e+01 -1.111586e+01 3.017643e+00 -7.447241e+00 -1.400202e+01 -2.002436e+00 2.388169e+00 -3.607650e+00 1.794771e+00 -1.592976e+00 -5.197089e+00 -2.334691e+00 + 4.244157e-02 1.141623e-01 1.304487e-01 4.922326e-02 8.309680e-02 9.592162e-02 7.548101e-02 1.082081e-01 1.001062e-01 8.302026e-02 9.169825e-02 7.412540e-02 + +1 59 6 0 7 + 3.711898e+00 -9.315116e+00 -1.211166e+01 -2.094493e+01 -1.571491e+01 1.489386e+01 -9.860758e+00 -1.538536e+00 -4.652604e+00 4.098885e+00 2.261133e+00 -6.650379e+00 + 4.975039e-01 1.948880e-01 1.843022e-01 1.194584e-01 6.771430e-02 7.725070e-02 7.543814e-02 7.510831e-02 6.052018e-02 1.238519e-01 5.996810e-02 1.269223e-01 + +1 58 7 0 8 + -2.606512e+01 -3.312448e+00 -3.450781e+00 -1.900878e+01 5.191413e+00 -9.296146e+00 -2.242417e+00 2.509914e+00 1.168778e+00 1.058944e+00 -6.839632e-01 -4.887366e-01 + 1.550194e-01 2.363468e-01 1.484009e-01 1.163004e-01 6.004422e-02 8.466829e-02 8.647617e-02 1.097739e-01 1.369237e-01 1.184678e-01 1.603563e-01 1.277673e-01 + +1 57 8 0 9 + -1.535011e+00 -9.227636e+00 6.542010e-01 -6.159214e+00 -1.321899e+01 -3.471297e+00 -1.125224e+01 5.267863e+00 4.134365e+00 -7.104057e+00 -9.933346e+00 -3.724604e-01 + 1.568672e-01 5.939159e-02 7.334877e-02 6.418339e-02 3.447516e-02 7.720654e-02 5.421505e-02 5.929011e-02 6.155217e-02 1.715725e-01 9.662595e-02 1.012785e-01 + +1 56 9 0 10 + -1.634323e+01 -8.147833e-01 -6.308084e+00 -3.281217e+00 -5.497429e+00 -2.247097e+00 -1.263682e+00 4.237728e-01 -2.375553e+00 1.671677e+00 4.953179e-01 -6.430727e-01 + 4.214413e-02 1.746842e-01 1.222575e-01 1.429757e-01 1.185150e-01 1.203207e-01 1.563180e-01 1.443712e-01 1.803027e-01 2.196311e-01 2.539898e-01 2.377079e-01 + +1 55 10 0 11 + 3.109400e+00 -1.704451e+01 -1.080255e+01 -5.186090e+00 -1.697262e+01 -2.796563e-01 -8.980132e+00 1.210890e+01 -2.985568e-01 -3.369007e+00 -3.974430e+00 -7.292808e+00 + 2.679836e-01 1.572599e-01 5.947270e-02 4.126942e-02 5.656835e-02 8.545762e-02 1.118668e-01 2.359081e-01 2.726641e-01 1.924956e-01 7.886582e-02 2.259856e-01 + +1 54 11 0 12 + -1.774982e+01 -5.844189e+00 -1.029932e+01 -1.014318e+01 -5.446605e+00 -6.755869e+00 -2.203974e+00 -3.857147e+00 -8.593474e-01 -1.779503e-02 -8.024170e-01 -5.055053e-01 + 1.428390e-01 1.987560e-01 1.092013e-01 7.130928e-02 1.331697e-01 1.151094e-01 1.463324e-01 1.038209e-01 1.291920e-01 1.868816e-01 2.397525e-01 2.437077e-01 + +1 53 12 0 13 + 4.793801e+00 -1.254261e+01 -1.785809e+01 -1.096340e+01 -7.733580e+00 8.657900e+00 -4.192000e+00 -1.802553e+00 -3.172689e+00 1.728829e+00 -1.962886e+00 -1.346349e+01 + 7.180365e-01 7.190160e-02 2.818375e-01 8.404886e-02 1.235799e-01 4.478032e-02 1.436481e-01 7.375241e-02 1.435941e-01 3.109497e-01 8.104844e-02 2.455840e-01 + +1 52 13 0 14 + -5.237680e+00 5.612197e-01 4.829641e+00 -2.249370e+00 -1.325028e+01 2.337972e+00 -5.304106e+00 -1.198791e+01 -7.007637e+00 -1.889742e+00 -6.690704e+00 3.806662e+00 + 6.410392e-02 5.359034e-02 6.285839e-02 7.731693e-02 9.716476e-02 4.938322e-02 6.702111e-02 1.196748e-01 1.110148e-01 1.268676e-01 2.805608e-01 1.274003e-01 + +1 51 14 0 15 + -1.856696e+01 -2.133432e+00 -4.538329e+00 -5.506292e-01 -1.548250e+00 1.901205e-01 -1.050967e+00 -9.318296e-01 -1.321187e+00 -1.319495e+00 -1.114581e+00 3.030719e+00 + 5.373403e-01 2.473896e-01 1.517162e-01 3.504544e-01 1.416683e-01 7.972621e-02 1.406871e-01 2.912126e-01 1.304706e-01 1.969747e-01 1.122043e-01 2.356252e-01 + +1 50 15 0 16 + 1.914711e+00 -7.695125e+00 -1.695430e+00 -5.062555e+00 -1.144955e+01 -2.352089e+00 -2.216142e+01 -6.831588e+00 -3.003233e+00 4.650522e+00 1.434380e+00 -9.389259e+00 + 3.609552e-01 1.754766e-01 5.973740e-02 4.151619e-01 1.526681e-01 5.423872e-02 1.011549e-01 6.540707e-02 1.550334e-01 1.877555e-01 1.261019e-01 3.177017e-01 + +1 49 16 0 17 + -2.636208e+00 -7.989947e+00 8.359392e+00 -1.102613e+01 -2.225401e+01 -1.048136e+01 -3.131021e+00 2.891981e+00 -7.541160e+00 1.768587e+00 5.651835e-01 1.068600e+00 + 1.866826e-01 8.408885e-02 1.134747e-01 9.765190e-02 7.743375e-02 8.098803e-02 8.031316e-02 1.172786e-01 8.653868e-02 1.105015e-01 1.397142e-01 1.413720e-01 + +1 48 17 0 18 + -2.907243e+00 -1.456393e+01 -1.105532e+01 -1.382896e+01 -6.243049e+00 7.228702e+00 -1.284407e+01 1.604308e+00 6.458684e+00 1.738513e+00 -1.033012e+01 -1.204580e+01 + 2.314663e-02 4.151437e-02 6.915086e-02 7.261164e-02 3.711876e-02 4.363470e-02 4.195368e-02 6.146155e-02 1.156818e-01 7.329082e-02 6.195374e-02 4.079808e-02 + +1 47 18 0 19 + -1.811171e+01 -1.322957e+00 -5.961321e+00 -3.528637e+00 -9.324851e-01 1.361126e+00 -7.159860e-01 4.599372e-01 6.351893e-01 -2.353277e-02 -3.291569e+00 -3.644215e+00 + 9.683494e-02 1.469779e-01 1.496372e-01 1.902470e-01 6.483267e-02 9.834053e-02 8.155843e-02 1.130809e-01 1.068087e-01 1.044388e-01 1.698052e-01 3.552441e-01 + +1 46 19 0 20 + -4.054992e+00 -1.088032e+01 1.615099e+01 -9.080686e+00 -2.538641e+01 -4.275915e+00 -1.250289e+01 -6.970431e-01 -1.454034e+01 5.408891e-01 2.853124e+00 -2.189412e+00 + 6.326737e-01 1.606196e-01 1.452885e-01 1.976513e-01 8.077373e-02 5.415561e-02 1.778369e-01 6.696153e-02 1.512754e-01 8.406402e-02 7.088581e-02 1.091246e-01 + +1 45 20 0 21 + -2.574489e+01 -1.842576e+00 -9.600108e+00 -1.006056e+01 -1.538285e+00 -9.815883e+00 2.785522e+00 2.527717e-01 6.075495e-01 -5.749639e-01 -2.873355e+00 1.320665e-01 + 1.421066e-01 1.826280e-01 1.127884e-01 1.191106e-01 1.102493e-01 1.157236e-01 1.556162e-01 9.878033e-02 1.422366e-01 3.040562e-01 2.540444e-01 1.264096e-01 + +1 44 21 0 22 + -1.793601e+01 -2.150612e+00 -8.085810e+00 -6.693283e+00 -3.568616e+00 -8.923143e-01 -2.846190e+00 -3.481247e+00 -2.455625e+00 -1.337029e+00 2.639268e+00 4.039898e+00 + 4.473459e-02 1.221178e-01 6.895592e-02 1.062035e-01 7.772706e-02 9.151646e-02 9.473262e-02 9.840345e-02 1.404648e-01 1.131360e-01 1.266022e-01 1.636091e-01 + +1 43 22 0 23 + -1.767588e+01 -5.958422e+00 -5.726416e+00 -1.107222e+01 -5.500952e+00 -3.245204e+00 -4.887365e+00 -4.994296e+00 -6.451913e+00 -2.369813e+00 -5.265448e+00 2.002504e-01 + 6.943105e-02 6.817403e-02 1.052580e-01 4.578923e-02 3.398110e-02 7.320711e-02 5.735356e-02 6.740326e-02 8.016966e-02 1.168837e-01 1.019509e-01 1.363357e-01 + +1 42 23 0 24 + -3.014511e+00 -9.482493e+00 6.268650e-01 -8.288904e+00 -1.774214e+01 -1.127548e+01 -4.586415e+00 6.899190e+00 -2.003306e-02 8.369594e-01 -1.254761e+00 1.653810e+00 + 3.015736e-02 1.011162e-01 7.871783e-02 4.734789e-02 8.433185e-02 4.961246e-02 7.370424e-02 7.207382e-02 6.089687e-02 8.756793e-02 8.458555e-02 7.284760e-02 + +1 41 24 0 25 + 3.913739e+00 -2.352983e+00 -1.360529e+01 -2.062946e+01 -1.446979e+01 8.672603e+00 -3.600564e+00 -4.025300e+00 -4.318013e+00 7.362913e-01 -1.115354e-01 -2.258707e-01 + 3.043639e-01 8.496270e-02 1.248002e-01 5.948232e-02 4.595589e-02 8.478070e-02 1.152897e-01 1.554621e-01 1.255271e-01 8.464132e-02 8.577848e-02 1.244584e-01 + +1 40 25 0 26 + -2.670158e+00 -4.003757e+00 -1.316878e+00 2.591657e+00 -6.595364e+00 -3.027453e-01 -9.536717e+00 -1.200384e+01 -9.806856e+00 3.752582e+00 -1.757465e+00 -1.541982e+00 + 9.941597e-02 5.828007e-02 9.221766e-02 3.736644e-02 4.056380e-02 4.392307e-02 4.023477e-02 8.492400e-02 8.524006e-02 6.461597e-02 8.002757e-02 6.314782e-02 + +1 39 26 0 27 + -5.045514e-01 -1.977577e+01 7.144110e-01 -1.066998e+01 -2.154000e+01 -6.233492e-01 -4.109935e+00 9.977874e+00 -1.704490e+00 -3.853380e+00 -5.742704e+00 -3.930131e+00 + 1.048896e-01 1.510874e-01 7.155884e-02 1.163240e-01 8.189243e-02 7.783546e-02 1.087648e-01 1.713981e-01 1.615259e-01 1.027667e-01 1.042757e-01 1.524449e-01 + +1 38 27 0 28 + -1.458972e+01 -5.414742e+00 -9.764462e+00 -7.270879e+00 -4.308610e+00 -3.263673e+00 -1.250272e+00 1.355180e-03 -1.630004e+00 -2.661962e+00 -4.183151e+00 -1.583699e+00 + 8.032922e-02 1.303239e-01 1.027209e-01 1.452029e-01 9.379436e-02 1.507815e-01 1.338631e-01 1.184412e-01 9.961912e-02 1.370707e-01 2.020661e-01 3.656117e-01 + +1 37 28 0 29 + -1.408119e+00 -1.137466e+01 8.755013e+00 -7.806905e+00 -1.882760e+01 -8.618912e+00 -1.439860e+01 2.626227e+00 -4.644870e+00 -6.243305e+00 7.573631e-01 -3.023284e-01 + 2.309857e-01 4.668060e-02 7.257541e-02 7.663499e-02 7.499822e-02 5.083483e-02 5.148354e-02 8.724269e-02 7.046428e-02 1.200152e-01 1.006605e-01 1.241061e-01 + +1 36 29 0 30 + -1.324024e+01 -1.085211e+01 -1.499886e+01 -1.354722e+01 -1.748649e+00 -4.918872e+00 -8.066586e+00 -2.921089e+00 3.238327e+00 3.948157e+00 -9.276849e-01 -2.848954e+00 + 8.751559e-02 3.409286e-02 3.135621e-02 5.932385e-02 4.351559e-02 3.834673e-02 6.447515e-02 4.357257e-02 1.199935e-01 1.593850e-01 9.575951e-02 1.191487e-01 + +1 35 30 0 31 + -1.739144e+01 -8.289247e-01 -2.001340e+00 7.238333e-01 -4.780729e-01 -1.790215e-01 -1.115192e-01 4.467821e-01 3.523152e-01 2.891467e+00 1.509371e-01 -1.082368e-01 + 1.211778e-01 8.419068e-02 7.194475e-02 1.837780e-01 2.517996e-01 1.251291e-01 6.718983e-02 1.816768e-01 2.680156e-01 2.009613e-01 2.174958e-01 2.081930e-01 + +1 34 31 0 32 + -2.593464e+01 -4.979844e-01 -8.769297e+00 -9.612941e+00 -1.399776e+00 -3.552402e+00 3.094956e+00 -3.478829e+00 -4.843523e-01 -5.252411e+00 -3.209831e+00 -7.872864e-01 + 2.724819e-01 1.879167e-01 9.612350e-02 1.214854e-01 1.656777e-01 6.932724e-02 6.899537e-02 9.351564e-02 2.416060e-01 1.994889e-01 1.197852e-01 3.316144e-01 + +1 33 32 0 33 + -2.654351e+01 -7.512487e+00 5.029175e+00 -9.122487e+00 -6.852844e+00 4.449910e+00 -1.743005e+00 -1.019095e+00 1.749697e+00 -3.309452e+00 3.822576e-01 3.401484e+00 + 6.040471e-02 8.788830e-02 1.443232e-01 5.874354e-02 7.646149e-02 6.042678e-02 4.984292e-02 8.838129e-02 1.290971e-01 1.475538e-01 1.018530e-01 1.139980e-01 + +1 32 33 0 34 + 3.623573e+00 -5.325343e+00 -1.439130e+01 -1.654938e+01 -1.307722e+01 7.779762e+00 -8.022758e+00 -4.812335e+00 -5.477184e+00 8.262738e+00 6.321048e+00 -5.370396e+00 + 5.628095e-01 9.917589e-02 1.055274e-01 5.685585e-02 3.294687e-01 5.351909e-02 9.557182e-02 1.475508e-01 2.176096e-01 1.504420e-01 8.211774e-02 1.791653e-01 + +1 31 34 0 35 + -1.761174e+01 -5.889008e+00 -8.396654e+00 -1.221459e+01 3.030510e-01 3.774254e+00 -3.236177e+00 1.295920e+00 -5.049484e+00 -2.924970e+00 -9.230655e-02 -4.206842e+00 + 6.343126e-02 1.228993e-01 4.212888e-02 1.390936e-01 1.129054e-01 4.011036e-02 8.476348e-02 7.807294e-02 9.429442e-02 6.085316e-02 1.042179e-01 1.588169e-01 + +1 30 35 0 36 + 2.517366e+00 -1.847061e+01 -1.304540e+01 -9.238400e+00 -1.312309e+01 9.671052e+00 -9.137849e+00 5.328157e+00 -1.452353e+00 1.984032e+00 -1.300857e+01 -1.004091e+01 + 3.648104e-01 9.720728e-02 8.190598e-02 5.246062e-02 6.183705e-02 6.716280e-02 6.020917e-02 4.267995e-02 1.293665e-01 1.084401e-01 2.076881e-01 1.349272e-01 + +1 29 36 0 37 + 2.055991e+00 -2.036031e+01 -6.355100e+00 -6.923863e+00 -1.682312e+01 2.630782e+00 -7.803583e+00 5.364013e+00 7.101339e+00 -4.006003e+00 -1.098668e+01 -7.041184e+00 + 2.344538e-01 8.397505e-02 9.718642e-02 8.880592e-02 3.395448e-02 7.654264e-02 1.055148e-01 1.095146e-01 6.100928e-02 6.033070e-02 6.590851e-02 1.203080e-01 + +1 28 37 0 38 + -6.614104e+00 1.131340e-01 1.358559e+01 -1.120274e+01 -1.937146e+01 -5.782678e+00 -1.057416e+01 -3.153363e+00 -1.652348e+01 -3.133130e-02 -2.939906e+00 -7.333114e-01 + 1.585614e-01 4.580463e-02 1.322084e-01 6.255686e-02 6.501657e-02 3.628242e-02 5.880918e-02 5.903393e-02 6.581156e-02 1.014927e-01 1.043972e-01 9.596196e-02 + +1 27 38 0 39 + -1.393363e+01 -2.769344e+00 -5.044204e+00 -5.866661e+00 -4.573875e+00 -3.292658e-01 3.708481e+00 4.869174e+00 8.684950e-01 -2.383085e+00 -1.354100e+00 2.503109e+00 + 1.350514e-01 6.437008e-02 5.598773e-02 1.475507e-01 6.597260e-02 8.631408e-02 4.774682e-02 8.029673e-02 1.587076e-01 1.917693e-01 1.446787e-01 1.328982e-01 + +1 26 39 0 40 + -1.043117e+01 8.116734e-02 6.430064e-01 -7.617230e+00 -9.321026e+00 -8.705024e+00 -4.998833e+00 -3.351206e+00 8.909286e-01 -2.728344e+00 -3.779054e+00 1.634885e+00 + 5.131203e-02 8.513939e-02 5.167917e-02 5.351074e-02 4.768215e-02 3.211735e-02 5.757412e-02 5.344121e-02 8.217315e-02 6.961665e-02 9.572914e-02 1.060954e-01 + +1 25 40 0 41 + 2.862856e+00 -1.469643e+01 -1.461085e+01 -1.143456e+01 -7.318049e+00 1.366671e+01 -1.418257e+01 -3.368834e+00 7.507222e+00 -4.534141e+00 -6.580627e+00 -7.334440e+00 + 2.667730e-01 5.139257e-02 9.378049e-02 5.084570e-02 5.877424e-02 4.045227e-02 5.858893e-02 1.301303e-01 1.078574e-01 8.927982e-02 6.671546e-02 9.436400e-02 + +1 24 41 0 42 + -5.438241e+00 -4.393301e+00 -1.310216e+01 -7.143429e+00 -3.291476e+00 1.905148e+00 -5.055331e+00 -5.318088e+00 -2.293489e-01 1.559870e+00 -1.548920e+00 -3.584244e+00 + 3.121778e-02 5.889169e-02 8.688092e-02 1.253525e-01 4.841868e-02 3.788546e-02 4.832488e-02 1.220256e-01 6.787373e-02 6.444693e-02 8.870271e-02 1.062024e-01 + +1 23 42 0 43 + -1.215341e+01 -4.013685e+00 -7.988126e+00 -6.140858e+00 -3.268579e+00 -6.428712e-01 1.666969e+00 5.917117e+00 -7.114496e-01 -4.702291e+00 -1.109000e+01 -4.400174e-01 + 3.451363e-02 6.557661e-02 7.606933e-02 8.602567e-02 5.721416e-02 8.820309e-02 7.612397e-02 5.747213e-02 6.604962e-02 9.269512e-02 9.244113e-02 1.291610e-01 + +1 22 43 0 44 + -2.445007e+01 8.855879e-01 -5.626787e+00 -8.069640e+00 -7.764180e-01 -9.567269e+00 8.179946e-01 -3.132318e+00 5.485337e-01 2.066938e+00 6.445973e-01 1.847396e+00 + 4.051951e-02 9.872019e-02 7.199267e-02 1.234722e-01 1.760734e-01 1.018635e-01 1.072219e-01 1.151761e-01 8.829521e-02 1.212856e-01 1.290608e-01 1.415438e-01 + +1 21 44 0 45 + -1.661343e+01 -5.728043e+00 -7.405200e+00 -6.751770e+00 -1.506951e+00 2.657450e-01 -1.522791e+00 3.851528e+00 4.730307e+00 3.754400e+00 1.847668e+00 1.130611e+00 + 4.781036e-02 6.977192e-02 7.689106e-02 7.546767e-02 8.138079e-02 9.513598e-02 5.370919e-02 6.446397e-02 1.069128e-01 1.558862e-01 1.250210e-01 9.183710e-02 + +1 20 45 0 46 + -2.166568e+01 -4.920949e-01 -1.798849e+00 -1.428854e+01 3.980304e+00 -8.036595e+00 -2.059441e+00 1.512042e+00 -1.692702e+00 -1.686253e+00 -5.026236e+00 -3.000320e+00 + 5.353372e-02 4.931344e-02 8.110629e-02 9.924000e-02 7.198433e-02 6.074476e-02 4.525809e-02 7.246849e-02 1.365104e-01 9.882819e-02 1.287055e-01 1.266979e-01 + +1 19 46 0 47 + 4.716992e-01 -3.499050e+00 -4.267293e+00 -1.880241e+01 -7.344208e+00 3.358634e+00 -1.721614e+01 -7.044708e+00 -1.705162e+00 1.056369e+01 -6.039658e+00 -2.388448e+00 + 2.073875e-01 4.483207e-02 3.573282e-02 6.665680e-02 6.111114e-02 3.330171e-02 3.510365e-02 5.153824e-02 8.168927e-02 1.518083e-01 8.172484e-02 2.255643e-01 + +1 18 47 0 48 + -7.869503e+00 -8.706184e+00 -2.189962e+00 -2.371227e+00 -4.683255e+00 -1.685401e+01 -2.801776e+00 1.752159e+00 -5.504490e+00 3.418698e-01 -6.074438e+00 2.707736e+00 + 5.071527e-02 4.632011e-02 2.984372e-02 5.045270e-02 3.422774e-02 4.520607e-02 2.889330e-02 4.418414e-02 8.027971e-02 9.795438e-02 1.002833e-01 7.437372e-02 + +1 17 48 0 49 + -6.096178e-01 4.007353e+00 -6.392223e+00 -1.561285e+01 -7.824722e+00 7.253838e-01 -6.843918e+00 -7.440452e+00 -1.016505e+01 -1.570032e+00 1.545682e+00 -1.449768e+00 + 5.822451e-02 1.372192e-01 7.833628e-02 5.020739e-02 2.026538e-02 5.664078e-02 4.540614e-02 6.773614e-02 4.799643e-02 5.868751e-02 5.821497e-02 1.400152e-01 + +1 16 49 0 50 + -2.061730e+01 -2.019232e+01 -7.606407e+00 1.053446e+01 6.790562e+00 -1.640738e+01 1.414852e+01 -5.802838e+00 -6.944827e+00 2.368551e+00 -5.525244e+00 -3.012295e+00 + 8.417177e-02 4.158622e-02 3.144388e-02 2.586841e-02 5.927253e-01 2.737556e-01 1.658459e-02 5.626667e-02 5.921743e-02 1.902098e-02 3.152812e-02 3.457390e-01 + +1 15 50 0 51 + -1.086489e+01 -1.366385e+01 -3.367585e+00 -1.188268e+00 -5.824864e+00 -5.352239e+00 -1.546818e+00 7.928678e+00 -2.578804e-01 -8.901214e+00 -6.950557e+00 1.536574e+00 + 2.403525e-02 6.131044e-02 2.923306e-02 2.987773e-02 4.057033e-02 4.353508e-02 2.294445e-02 4.433620e-02 3.077988e-02 1.142472e-01 6.714227e-02 1.123645e-01 + +1 14 51 0 52 + -1.375381e+01 -4.247579e+00 5.411132e+00 -1.883978e+00 -1.057151e+01 -8.891398e+00 2.535141e+00 3.775047e+00 -9.008003e+00 -2.298805e+00 -9.860904e-01 -2.982622e-01 + 3.694792e-02 7.115746e-02 8.871039e-02 8.804981e-02 4.260172e-02 8.261127e-02 5.659322e-02 8.559977e-02 4.636036e-02 8.887039e-02 1.245847e-01 1.014026e-01 + +1 13 52 0 53 + 3.825997e+00 -1.019470e+01 -1.134197e+01 5.415588e-01 -1.040172e+01 -9.445205e+00 -1.174300e+01 9.451373e-01 5.065080e+00 -3.328840e+00 -2.795265e+00 3.120315e+00 + 6.129232e-02 5.891655e-02 1.372580e-02 9.107749e-02 4.491116e-02 7.337458e-02 4.964961e-02 1.119168e-01 1.096013e-01 5.603627e-02 7.489239e-02 9.161093e-02 + +1 12 53 0 54 + -1.961963e+00 -6.692809e+00 -2.001441e-01 -9.984117e+00 -8.312482e+00 -3.595846e+00 -1.438793e+01 4.355859e+00 5.986009e+00 -1.844834e+00 -7.649256e+00 -1.519692e+00 + 8.140323e-02 7.888691e-02 6.268590e-02 8.880951e-02 3.956280e-02 6.586578e-02 5.078926e-02 8.572715e-02 9.567046e-02 1.629157e-01 1.505033e-01 1.058246e-01 + +1 11 54 0 55 + -9.145902e+00 -1.413849e+01 -1.332261e+01 -6.520996e+00 4.557607e-01 3.301786e+00 -3.295171e-01 1.489300e+00 6.993420e+00 -6.090439e+00 -9.701844e+00 -1.251609e+00 + 5.794512e-02 1.113209e-01 7.957880e-02 3.648531e-02 4.874726e-02 1.246807e-01 3.654215e-02 3.149470e-02 6.781245e-02 7.735550e-02 5.826188e-02 2.264217e-01 + +1 10 55 0 56 + -1.180427e+01 3.647022e+00 1.390533e+00 2.376870e+00 -1.741644e+00 -3.196353e-01 -3.499880e+00 -5.768591e+00 -3.833388e+00 -2.604625e+00 -5.400262e+00 -2.439465e+00 + 6.577071e-02 1.090979e-01 9.106248e-02 7.021707e-02 6.811922e-02 1.084694e-01 1.163606e-01 6.550784e-02 9.385673e-02 1.439985e-01 5.966403e-02 7.586646e-02 + +1 9 56 0 57 + 1.874640e+00 -1.564147e+01 -2.441074e+00 -5.274889e+00 -1.814770e+01 -8.728581e+00 -1.625121e+01 9.578165e+00 -4.386004e-01 1.463885e+00 1.414976e-01 -3.557939e+00 + 3.324809e-01 1.112350e-01 5.622433e-02 1.010434e-01 4.602673e-02 4.240832e-02 6.518841e-02 5.009418e-02 6.370233e-02 1.080359e-01 1.392608e-01 1.150791e-01 + +1 8 57 0 58 + 1.906364e+00 -1.208773e+01 -8.479047e+00 -7.201521e+00 -1.179182e+01 -2.814371e+00 -4.643915e+00 9.131196e+00 1.179648e+00 -2.020033e+00 -8.596079e+00 -5.181626e+00 + 1.427533e-01 9.481174e-02 6.727666e-02 5.027536e-02 3.507490e-02 4.179317e-02 7.856696e-02 6.864919e-02 1.219834e-01 1.705362e-01 8.877958e-02 1.194361e-01 + +1 7 58 0 59 + 3.652524e+00 -1.041269e+01 -1.357236e+01 -8.199497e+00 -1.285233e+01 6.350680e-01 -8.574880e+00 -7.049842e-01 2.193355e+00 5.458235e+00 6.160259e-01 -1.279524e+01 + 1.948179e-01 5.715592e-02 1.356368e-01 1.308717e-01 4.173721e-02 6.586082e-02 3.272187e-02 1.382719e-01 5.689951e-02 1.174370e-01 9.115808e-02 1.742637e-01 + +1 6 59 0 60 + -1.092453e+00 -4.010186e+00 8.013568e-01 -5.578741e+00 -6.453000e+00 -9.156375e+00 -1.868353e+01 -2.469394e+00 -3.219586e+00 5.128490e+00 -6.541768e+00 -3.562579e+00 + 1.075714e-01 9.733285e-02 5.014110e-02 7.476151e-02 3.462020e-02 1.065877e-01 5.328970e-02 1.777928e-01 6.043151e-02 8.320764e-02 9.516662e-02 1.503447e-01 + +1 5 60 0 61 + -1.849297e+01 -8.419019e+00 2.702562e+00 -7.321314e+00 -1.212414e+01 -4.412412e+00 1.396458e+00 -1.122673e+00 -1.623893e+00 4.336560e+00 1.293061e+00 1.420948e-02 + 3.985888e-02 4.855706e-02 8.650924e-02 4.892322e-02 5.219935e-02 5.424026e-02 7.695455e-02 6.838416e-02 1.168950e-01 1.990329e-01 1.074646e-01 5.581134e-02 + +1 4 61 0 62 + -7.432835e+00 -2.715326e+00 6.246908e+00 -1.014251e+01 -1.792883e+01 -5.864928e-01 3.011470e-01 -2.363453e+00 -8.593863e+00 6.307993e+00 -3.611211e+00 -4.058719e+00 + 5.618339e-02 4.752572e-02 3.326947e-02 5.350554e-02 3.912940e-02 4.357948e-02 8.036594e-02 4.659944e-02 3.442528e-02 6.546895e-02 7.882839e-02 6.623589e-02 + +1 3 62 0 63 + 2.814005e+00 -5.666842e+00 -1.439637e+01 -2.057754e+01 -5.539705e+00 1.274092e+01 -1.319483e+01 3.856097e+00 -1.100915e+00 -7.399887e+00 -2.081363e+00 -7.507254e-01 + 3.881342e-01 8.576868e-02 7.525363e-02 6.484962e-02 5.564484e-02 5.038683e-02 3.450757e-02 5.026934e-02 7.347632e-02 7.903428e-02 7.167432e-02 1.083841e-01 + +1 2 63 0 64 + -4.517602e+00 -5.781976e+00 5.955352e+00 -2.714617e+00 -1.614077e+01 7.467462e-01 -9.244803e+00 -6.420669e+00 -1.412945e+00 -3.348486e+00 -6.592562e+00 3.480857e+00 + 1.519193e-01 5.289046e-02 1.255873e-01 7.065293e-02 6.563372e-02 4.624007e-02 8.061040e-02 7.433499e-02 9.502385e-02 1.071612e-01 8.484825e-02 1.553857e-01 + +1 1 64 0 0 + -2.264107e+01 -1.523140e+00 -7.516783e+00 -6.587609e+00 -1.114561e+00 -1.148188e+01 3.185408e-01 -8.546824e-01 1.274616e+00 -5.514516e+00 -1.630174e+00 4.680082e+00 + 4.684689e-02 1.986983e-01 8.834821e-02 8.667179e-02 6.685103e-02 7.648251e-02 1.348902e-01 9.287773e-02 1.023917e-01 3.307518e-01 1.446047e-01 2.034249e-01 + +2 64 1 0 2 + 1.592679e-01 1.751524e-02 -5.204811e-01 6.496283e-02 -4.453637e-01 1.872799e-01 5.757486e-01 1.447256e-01 -2.971075e-02 1.349106e-01 -9.858609e-01 -7.598775e-01 + 2.331785e+00 2.010971e+00 1.230235e+00 1.559694e+00 8.321404e-01 1.662359e+00 1.130510e+00 1.272597e+00 1.234952e+00 2.485908e+00 2.090720e+00 2.263607e+00 + +2 63 2 0 3 + -7.218269e-02 3.096991e-01 -1.623312e-01 4.828950e-01 -5.101626e-01 -3.456125e-01 2.294366e-01 -3.295460e-01 4.956204e-01 -1.509595e-01 -2.172252e-01 1.689969e-01 + 5.478593e+00 1.979213e+00 2.710881e+00 1.977894e+00 1.181861e+00 2.648278e+00 1.871669e+00 1.382561e+00 1.822568e+00 2.631069e+00 3.167003e+00 2.912619e+00 + +2 62 3 0 4 + -3.061711e-02 2.317765e-01 3.838606e-01 -7.260532e-01 -3.011525e-01 -2.782536e-01 7.527558e-01 4.413621e-01 2.332226e-01 -1.277675e+00 -1.333939e+00 2.993859e-01 + 8.057127e-01 1.217793e+00 9.774114e-01 1.215250e+00 7.471757e-01 1.058943e+00 8.846591e-01 1.040731e+00 8.598698e-01 1.882202e+00 1.598401e+00 1.418319e+00 + +2 61 4 0 5 + -1.116250e-01 1.378027e-01 2.590871e-01 2.486156e-02 5.176648e-01 6.439378e-01 -7.294136e-01 -1.688101e+00 -1.407938e+00 -1.220523e-01 -3.032211e-01 5.224196e-01 + 7.738732e-01 9.267293e-01 1.393713e+00 7.074801e-01 9.532691e-01 8.421594e-01 6.998528e-01 1.223767e+00 1.838183e+00 1.476675e+00 1.276600e+00 1.333035e+00 + +2 60 5 0 6 + -3.325815e-02 7.544470e-01 -6.178489e-01 6.654988e-02 8.752502e-01 -1.028247e+00 7.483838e-02 4.065224e-01 -5.782420e-01 8.699880e-02 8.281915e-01 -7.252637e-01 + 1.552001e+00 8.833923e-01 2.353498e+00 9.763896e-01 7.905391e-01 1.446722e+00 7.742090e-01 1.198159e+00 1.303066e+00 2.273243e+00 1.575219e+00 1.850375e+00 + +2 59 6 0 7 + 4.202768e-01 4.174584e-01 -2.998690e-01 9.978137e-01 5.594154e-01 1.617474e+00 1.387310e+00 -1.243016e-01 4.745637e-01 2.719404e-01 -2.100880e-01 -1.071257e-01 + 6.673205e-01 9.872208e-01 7.103623e-01 1.090747e+00 8.330209e-01 1.288480e+00 7.256910e-01 9.626373e-01 1.245799e+00 1.472330e+00 1.743744e+00 1.669165e+00 + +2 58 7 0 8 + 4.316391e-01 -8.175016e-01 2.815436e-01 4.615269e-03 -1.003032e+00 1.291276e-01 3.991618e-01 -2.393154e-01 8.160217e-01 1.194463e+00 -1.947869e+00 7.532089e-01 + 5.740062e-01 8.007320e-01 6.213140e-01 9.994907e-01 8.442605e-01 6.958723e-01 9.074088e-01 9.986748e-01 5.904934e-01 1.009632e+00 1.595807e+00 1.652544e+00 + +2 57 8 0 9 + 7.898207e-01 3.507820e+00 8.583558e-01 -5.520986e+00 -3.119268e+00 1.294687e+00 -3.497881e+00 1.446140e-02 6.129721e-01 -1.350501e+00 6.452867e-01 1.095474e+00 + 8.510995e-01 3.938929e-01 6.879410e-01 1.480007e+00 4.296292e-01 1.456392e-01 2.024556e-01 1.175755e+00 5.232829e-01 4.507936e-01 1.005164e+00 3.456748e+00 + +2 56 9 0 10 + -3.049662e+00 3.417838e+00 -6.127973e-01 1.787629e+00 4.539293e+00 1.905799e+00 1.481112e+00 -2.146651e+00 -1.065827e+00 4.428001e-03 -3.135311e-01 1.816219e-01 + 5.471782e-01 5.560257e-01 3.726058e-01 2.773083e-01 6.896515e-01 4.057382e-01 1.808065e+00 7.156343e-01 4.893266e-01 7.425653e-01 5.128097e-01 1.051338e+00 + +2 55 10 0 11 + 4.098393e+00 -1.087609e+00 -4.798546e-01 -1.332234e+00 -1.540113e+00 2.163300e+00 -2.771155e+00 8.937908e-01 -4.134599e-01 -1.827790e+00 -1.339958e+00 -5.597886e-01 + 4.307735e-01 6.964642e-01 5.635957e-01 4.655815e-01 4.475839e-01 3.875206e-01 3.001978e-01 1.059817e+00 6.302845e-01 8.961573e-01 1.494532e+00 2.488613e+00 + +2 54 11 0 12 + 8.914354e-02 1.787924e-01 9.326437e-01 5.969254e-02 -5.523135e-01 -8.357327e-01 -6.203122e-01 -6.571900e-01 -1.754373e-01 1.773233e+00 2.224848e-01 -3.658054e-01 + 1.173381e+00 1.208287e+00 9.454970e-01 1.107549e+00 8.293526e-01 1.219705e+00 9.847044e-01 7.513381e-01 1.563863e+00 1.474306e+00 1.284282e+00 1.796370e+00 + +2 53 12 0 13 + -3.658333e-01 3.241054e-01 2.296027e+00 -1.322498e+00 -1.341821e+00 1.423135e+00 8.369637e-01 -2.666384e-01 -3.200758e+00 1.912518e+00 8.716378e-01 -1.112202e+00 + 4.886478e-01 1.551225e+00 7.841284e-01 2.999021e-01 4.676578e-01 4.797086e-01 6.488427e-01 7.277516e-01 5.567616e-01 1.600646e+00 7.134665e-01 9.996368e-01 + +2 52 13 0 14 + -5.972205e+00 4.261991e-01 6.616288e-01 2.780399e+00 1.568888e+00 -9.476768e-01 4.498842e+00 1.080295e+00 7.609724e-01 -2.696002e+00 -2.555701e-01 6.187399e-01 + 1.134833e+00 4.868778e-01 3.516256e-01 9.026220e-01 2.351791e+00 2.683595e-01 4.468774e-01 6.752157e-01 1.461428e+00 7.652299e-01 2.371611e+00 1.821121e+00 + +2 51 14 0 15 + -1.970365e+00 -1.338587e+00 -1.601294e+00 2.804194e+00 2.382182e+00 -3.063678e-01 2.224809e+00 -5.854282e-01 2.202620e+00 -2.116734e+00 8.692635e-01 -3.439782e-01 + 6.467009e-01 5.696469e-01 3.202000e+00 4.831425e-01 7.952971e-01 1.077556e+00 2.230602e-01 4.646595e-01 1.066687e+00 1.765600e+00 5.403039e-01 1.791378e+00 + +2 50 15 0 16 + -3.663108e+00 1.090387e+00 4.450259e-01 1.115865e-01 1.992017e+00 2.095486e+00 -5.520394e-03 -4.050296e-01 1.585667e+00 1.238022e-01 2.286934e-01 6.959068e-01 + 4.782307e-01 5.975090e-01 4.808850e-01 4.394065e-01 4.000656e-01 6.436079e-01 5.121449e-01 7.033130e-01 7.047207e-01 1.046243e+00 7.282924e-01 9.780370e-01 + +2 49 16 0 17 + 2.311400e+00 -3.211455e+00 -1.707114e+00 -1.053110e+00 7.222041e-01 -5.798379e+00 -1.933608e+00 5.011425e-01 -5.103393e-02 3.985030e-01 -2.609015e+00 9.103919e-01 + 1.048422e+00 9.374598e-01 2.186315e+00 1.706733e+00 7.312832e-01 1.708927e-01 3.443454e-01 6.347139e-01 3.449495e-01 2.815356e+00 6.839233e-01 1.339094e+00 + +2 48 17 0 18 + 5.595758e+00 2.743129e-01 -1.997731e-01 2.288206e+00 1.944788e+00 -3.079249e+00 -3.178864e+00 1.546524e+00 1.991882e-01 -1.315771e+00 -7.152777e-01 -1.906133e-01 + 9.377715e-01 8.857656e-01 1.515386e+00 3.238380e-01 5.116784e-01 2.492148e-01 2.184798e-01 7.598928e-01 1.174986e+00 1.399482e+00 3.503482e+00 2.850950e+00 + +2 47 18 0 19 + -3.165448e+00 -1.559937e+00 -1.968587e+00 1.029872e-01 9.265042e-01 -5.245609e-01 2.484578e-01 -3.112467e-01 -9.754504e-02 2.505624e-01 -8.318084e-02 -1.337328e+00 + 6.698665e-01 8.321741e-01 7.241377e-01 4.883410e-01 4.026341e-01 1.026949e+00 1.142415e+00 6.057628e-01 7.316594e-01 6.943327e-01 1.781219e+00 1.411569e+00 + +2 46 19 0 20 + 9.959909e-01 4.711286e-01 2.163313e-01 -2.167081e+00 -1.711005e+00 1.606761e+00 -3.449461e-01 5.667789e-01 6.004969e-01 4.606263e-03 2.488658e-01 2.561589e-01 + 7.286274e-01 1.100390e+00 1.271599e+00 6.637071e-01 5.801037e-01 1.154893e+00 7.640232e-01 8.863854e-01 6.275379e-01 1.048937e+00 1.907130e+00 1.296937e+00 + +2 45 20 0 21 + 6.054624e+00 -2.999680e+00 -3.246290e-01 -3.651971e+00 -8.552556e-01 2.529490e+00 -5.023105e+00 -8.205818e-01 -7.082027e-01 3.062515e+00 1.666561e+00 -1.745854e+00 + 2.416729e-01 6.600428e-01 2.534198e-01 1.051139e+00 5.802251e+00 7.326562e-01 1.095707e+00 3.079885e+00 1.604264e+00 4.521693e-01 8.588934e-01 1.356006e+00 + +2 44 21 0 22 + 3.968261e+00 2.425584e-01 6.107919e-01 3.575417e-01 -1.614685e+00 6.109968e-01 -2.344962e+00 -5.271066e-01 -2.391746e+00 2.003036e+00 2.050094e+00 -1.255026e+00 + 7.391849e-01 6.694908e-01 2.737322e-01 2.776268e-01 6.810892e-01 5.093930e-01 4.931122e-01 1.151742e+00 9.563847e-01 1.768719e+00 7.576403e-01 8.929804e-01 + +2 43 22 0 23 + 5.545482e+00 -2.376280e+00 1.026063e-01 8.454853e-01 -2.827231e+00 3.431281e+00 -1.513549e+00 -1.550650e+00 2.164738e+00 -4.414127e-01 -1.314772e+00 -4.611958e-01 + 4.079880e-01 7.805492e-01 7.731296e-01 4.150065e-01 2.724868e-01 4.961850e-01 7.057356e-01 3.727259e-01 1.136772e+00 8.737456e-01 9.981188e-01 8.350958e-01 + +2 42 23 0 24 + 4.941626e+00 5.287888e-01 -1.635677e+00 5.576949e-01 -1.751133e-01 -1.273779e+00 -3.467055e+00 6.999628e-01 -1.314482e+00 1.441756e+00 2.050756e-01 -1.720767e+00 + 4.013998e-01 1.621921e+00 4.171504e-01 6.295918e-01 6.320205e-01 5.990473e-01 5.205678e-01 6.957662e-01 7.305001e-01 7.829653e-01 1.086044e+00 8.246800e-01 + +2 41 24 0 25 + 2.620152e+00 -4.951070e-01 7.468276e-01 -1.827912e-01 -1.440273e+00 -1.300035e+00 -2.887645e+00 -1.515881e+00 5.810916e-01 -1.071935e+00 8.740850e-03 1.184400e+00 + 3.545069e-01 9.597241e-01 5.094674e-01 1.572635e+00 7.636248e-01 3.735372e-01 4.403425e-01 6.259183e-01 9.890035e-01 1.408662e+00 6.394714e-01 1.349640e+00 + +2 40 25 0 26 + -1.511558e+00 -6.361307e+00 -2.521372e+00 -1.791267e+00 2.636600e+00 -2.636653e+00 -2.239861e+00 5.847236e+00 3.667013e-01 -1.673051e+00 8.037090e-01 -2.532952e-01 + 2.310094e+02 7.194489e-01 4.976661e-01 2.747509e-01 6.396602e-01 1.005281e+00 2.139404e-01 2.539698e-01 3.330299e-01 2.348380e+00 4.560898e+00 1.321257e+00 + +2 39 26 0 27 + -7.114100e-01 1.713527e+00 1.284006e+00 2.081769e+00 -2.874156e-02 1.472610e+00 4.738404e-01 -4.205202e+00 -3.172489e+00 1.133050e+00 1.583531e+00 1.394310e+00 + 1.467883e+00 1.141269e+00 5.752841e-01 7.955266e-01 3.065874e-01 5.562503e-01 2.717564e-01 7.162887e-01 4.326579e-01 6.439533e-01 4.318993e-01 6.016691e-01 + +2 38 27 0 28 + -2.910914e+00 4.658793e-01 -5.200609e+00 7.736053e-01 3.794414e+00 8.895522e-01 1.826632e+00 1.388926e+00 3.778507e+00 -4.139237e-01 -7.042134e-01 4.654790e-01 + 1.955871e-01 9.120003e-01 3.879962e-01 7.118742e-01 3.353691e-01 5.552431e-01 3.381250e-01 7.696947e-01 8.511509e-01 1.368155e+00 1.029578e+00 1.712070e+00 + +2 37 28 0 29 + -4.797482e+00 1.029667e+00 5.564016e-01 -7.298926e-01 1.236449e+00 -1.414555e+00 1.439998e-01 -2.344182e+00 -7.146920e-01 2.830298e-01 3.011223e+00 2.287484e-02 + 2.862152e-01 8.004763e-01 5.004634e-01 2.904258e-01 7.100189e-01 4.610703e-01 2.810658e-01 7.376608e-01 1.822927e+00 1.068306e+00 9.808506e-01 1.479948e+00 + +2 36 29 0 30 + -2.202790e+00 -3.761284e+00 -9.416203e-01 -3.956459e+00 -1.046281e+00 1.387834e-01 -8.462235e-01 9.452516e-01 3.183932e-02 -1.778219e-01 7.473063e-01 -3.658716e-01 + 6.043844e-01 6.814450e-01 4.821643e-01 4.295923e-01 7.560256e-01 4.947767e-01 1.549298e+00 5.221016e-01 1.161268e+00 1.007465e+00 1.213101e+00 1.091507e+00 + +2 35 30 0 31 + 1.071260e-01 -1.881360e+00 -3.809536e-01 -2.624454e+00 -2.553244e-01 -1.935998e+00 -1.078316e-01 3.989125e+00 1.497540e+00 -1.653875e+00 1.125984e+00 -5.993930e-01 + 1.265243e+00 1.464165e+00 8.928283e-01 1.476736e+00 2.639559e-01 1.983277e+00 5.332580e-01 9.671304e-01 1.174055e+00 1.136867e+00 5.524170e-01 2.995290e+00 + +2 34 31 0 32 + 2.714215e+00 -1.054907e+00 4.832784e+00 -1.148514e+00 -4.392982e+00 8.447283e-01 -3.079505e+00 -6.983904e-01 -2.614993e+00 8.671219e-01 1.342390e+00 -1.008347e+00 + 5.617045e-01 1.036219e+00 4.973421e-01 7.961002e-01 5.178062e-01 7.516218e-01 1.039191e+00 5.002329e-01 1.439236e+00 8.123024e-01 3.846723e-01 9.442524e-01 + +2 33 32 0 33 + -1.104755e+00 -2.556576e+00 -5.382201e+00 -1.018563e+00 4.024958e+00 1.519801e+00 -7.249631e-01 -2.080827e+00 1.230888e+00 7.658106e-02 9.976062e-01 -1.075882e+00 + 3.007960e-01 1.267368e+00 5.497867e-01 2.429210e-01 9.701456e-01 3.206241e-01 1.231625e+00 7.994837e-01 4.139843e-01 5.531237e-01 5.964184e-01 1.893830e+00 + +2 32 33 0 34 + 4.926332e+00 -8.817974e-01 -9.744924e-02 -1.675606e+00 -1.342720e+00 1.116348e+00 -6.025658e+00 1.150186e+00 1.091394e+00 -9.318765e-01 -3.063329e+00 -4.582664e+00 + 2.109756e+00 6.383232e-01 6.177292e-01 7.386145e+00 2.472780e+00 9.381113e-01 8.338365e-01 2.017746e+00 9.589745e-01 1.050256e+00 1.250072e+00 8.740263e-01 + +2 31 34 0 35 + 2.760874e+00 2.296757e+00 1.977730e+00 -1.119698e+00 -1.258348e-01 2.884445e-01 -3.203866e+00 -1.927794e+00 -2.972500e+00 -1.537992e-01 -1.119633e+00 -4.164985e-01 + 7.660881e-01 3.996423e-01 1.042801e+00 3.656255e-01 3.917874e-01 6.552585e-01 4.720010e-01 1.455618e+00 1.092701e+00 5.713511e-01 1.368065e+00 1.566480e+00 + +2 30 35 0 36 + 5.623660e+00 -1.782268e+00 2.300168e+00 1.145339e+00 -3.284661e+00 3.078701e-01 -3.429090e+00 1.024220e+00 -1.032321e+00 1.998087e-01 -4.762759e-01 -1.063193e+00 + 5.673394e-01 1.139129e+00 6.267598e-01 5.807446e-01 8.579546e-01 6.090982e-01 2.507121e-01 1.276063e+00 6.316343e-01 1.228877e+00 6.009543e-01 6.454827e-01 + +2 29 36 0 37 + 2.117406e-01 4.559525e-01 -1.232672e+00 -5.896030e-01 8.886851e-01 9.221404e-01 -2.717544e-02 -1.046926e+00 -4.604677e-01 1.719548e+00 9.403626e-01 -1.357800e+00 + 9.797907e-01 9.437076e-01 8.066455e-01 6.454636e-01 1.320032e+00 5.396848e-01 7.621163e-01 8.945265e-01 6.613000e-01 9.959558e-01 1.093621e+00 1.375044e+00 + +2 28 37 0 38 + -1.713474e+00 -1.165201e+00 -1.222964e+00 2.125844e-01 2.447097e+00 2.382360e+00 7.160560e-01 2.654014e+00 -1.858630e-01 5.274114e-01 1.367644e-01 -3.823188e-01 + 2.929259e-01 1.232535e+00 5.584323e-01 5.175838e-01 5.256600e-01 6.254241e-01 8.344801e-01 3.997540e-01 1.060732e+00 7.202009e-01 5.475936e-01 9.138815e-01 + +2 27 38 0 39 + -4.198767e+00 -2.985978e-01 -3.694191e+00 -1.486073e+00 2.007539e+00 -1.720841e+00 1.529708e+00 1.341362e+00 1.692442e+00 -2.639797e-01 1.707996e+00 -6.435198e-01 + 5.164784e-01 6.254220e-01 6.318365e-01 8.083967e-01 4.437190e-01 2.633326e-01 9.906508e-01 3.852963e-01 8.241581e-01 4.470945e-01 9.885157e-01 2.004652e+00 + +2 26 39 0 40 + 2.451113e+00 -1.982205e+00 5.882964e-01 -5.658292e-01 -2.509515e+00 9.340681e-02 -2.301907e+00 2.412368e+00 -1.049139e+00 6.158531e-01 7.110801e-01 -3.024929e-01 + 7.905170e-01 7.719515e-01 9.985119e-01 7.309980e-01 3.737345e-01 2.706907e-01 7.145396e-01 4.846944e-01 8.600365e-01 7.989807e-01 5.245360e-01 9.762577e-01 + +2 25 40 0 41 + -3.116027e-02 1.974450e+00 -1.788191e+00 2.962269e+00 2.407058e+00 9.988517e-01 -5.177339e-01 -2.775447e+00 -5.615433e-01 5.189442e-01 -7.078595e-01 -1.263639e+00 + 7.255053e-01 7.848380e-01 5.462061e-01 5.461212e-01 3.289167e-01 3.848993e-01 5.558874e-01 5.804422e-01 7.020482e-01 3.904525e-01 1.034132e+00 7.591885e-01 + +2 24 41 0 42 + -1.126741e-01 -2.671937e-01 4.236214e-01 -4.857712e-01 -5.630886e-01 5.557081e-01 -1.241238e-01 -7.481167e-01 -7.654891e-02 -2.382474e-01 1.049894e+00 -1.340367e-01 + 1.220080e+00 1.606642e+00 1.350881e+00 1.111506e+00 1.093282e+00 1.193899e+00 9.669504e-01 1.250526e+00 1.355454e+00 1.820956e+00 1.712919e+00 1.865257e+00 + +2 23 42 0 43 + 2.242179e-01 7.084381e-03 -1.366856e+00 4.681393e-01 3.357687e-01 8.340791e-01 -9.818965e-01 -2.373270e+00 2.789841e+00 -4.424202e-01 -1.133601e+00 7.725575e-01 + 6.982192e-01 1.169878e+00 4.143635e-01 2.985212e-01 4.366796e-01 4.595419e-01 5.070212e-01 1.413990e+00 6.446732e-01 4.644491e-01 1.616424e+00 6.558810e-01 + +2 22 43 0 44 + 4.940627e-01 -5.448068e-01 -4.431629e-01 2.501036e-01 5.477468e-01 -9.684297e-02 -7.873152e-01 1.685884e+00 1.075562e+00 -6.734295e-01 -6.749054e-01 6.342208e-01 + 9.309009e-01 1.676910e+00 5.524401e-01 8.796272e-01 6.986301e-01 6.727178e-01 8.679809e-01 1.851235e+00 9.026086e-01 1.405198e+00 1.309189e+00 1.158477e+00 + +2 21 44 0 45 + -2.158089e-01 -5.128366e-01 -1.344887e-01 -2.408520e-01 2.320380e-01 1.330096e+00 8.722557e-01 3.882444e-01 -8.431505e-01 -1.286548e+00 -2.205364e+00 -1.999927e+00 + 4.678987e-01 7.257089e-01 1.050524e+00 5.382416e-01 6.017480e-01 4.442900e-01 4.595635e-01 3.574895e-01 7.535651e-01 8.025757e-01 9.325758e-01 1.038985e+00 + +2 20 45 0 46 + -5.348597e+00 -5.896898e+00 9.374058e-01 2.072045e+00 9.315005e-01 -1.312391e+00 7.359609e+00 -1.583351e+00 -8.311985e-01 4.958978e-01 -2.104001e+00 1.679798e+00 + 2.135822e-01 4.339607e-01 1.480416e+01 3.602184e-01 5.365483e-01 1.147067e+00 1.612980e-01 2.560816e+01 1.566522e+00 3.429614e-01 5.294837e+00 1.652702e+01 + +2 19 46 0 47 + -4.009109e+00 -1.151848e+00 6.088026e-01 3.765806e+00 3.125770e+00 -2.508676e+00 5.003637e-01 -1.652095e+00 2.268752e-01 1.037845e+00 1.805590e+00 1.137749e+00 + 8.026648e-01 9.406562e-01 1.808662e+00 8.663248e-01 1.059410e+00 1.884223e+00 8.999690e-01 9.533204e-01 3.920495e+00 4.529761e-01 3.445503e+00 1.708921e+00 + +2 18 47 0 48 + -2.711761e+00 2.996446e+00 6.397483e-01 1.770225e+00 1.876278e+00 -3.510648e+00 2.409179e+00 -1.867446e+00 6.268109e-01 -1.185971e+00 1.399982e+00 5.064690e-01 + 2.895407e-01 6.419810e-01 8.102210e-01 1.055396e+00 7.324235e-01 5.782887e-01 4.362918e-01 4.924715e-01 6.097862e-01 4.347199e-01 8.449433e-01 4.277740e-01 + +2 17 48 0 49 + -2.640555e+00 2.645264e+00 -2.888592e+00 1.534798e+00 5.031013e+00 -2.692707e-01 2.827653e+00 -1.023561e+00 2.616606e+00 6.996846e-02 -9.539110e-01 6.544380e-01 + 5.175421e-01 4.351437e-01 1.206073e+00 3.477070e-01 8.097768e-01 4.127572e-01 2.190369e-01 9.672778e-01 4.559105e-01 7.555746e-01 1.212803e+00 1.028481e+00 + +2 16 49 0 50 + 8.266554e-01 2.727698e+00 -8.739505e-02 -2.843882e+00 -3.182528e-01 1.438639e+00 9.980311e-01 -1.050665e+00 -1.702596e+00 5.326843e-01 1.030467e-01 7.998413e-01 + 2.138841e-01 5.201623e-01 5.051455e-01 7.145739e-01 2.105454e-01 6.746136e-01 6.775598e-01 1.334971e+00 8.350053e-01 4.435215e-01 7.227225e-01 1.994557e+00 + +2 15 50 0 51 + -1.018512e+00 3.271258e+00 2.398392e+00 -1.650747e+00 -1.133487e+00 9.062806e-01 1.609110e+00 -1.530305e+00 -4.964082e+00 6.061135e+00 1.075039e+00 -8.338224e-01 + 1.127786e+00 1.907434e+00 2.840361e+00 9.995625e-01 6.336495e-01 8.655328e+00 4.957223e+00 4.129869e-01 6.735991e-01 1.865422e+00 2.053549e+00 3.968229e+00 + +2 14 51 0 52 + -5.635524e-01 -1.159950e+00 1.023257e+00 1.990795e+00 8.100599e-01 -1.738443e+00 -1.167379e+00 4.806568e-01 1.514075e+00 8.502059e-01 -1.746171e+00 -1.562036e+00 + 1.197047e+00 4.060856e-01 4.318552e-01 9.406669e-01 4.450416e-01 4.277972e-01 5.413619e-01 4.034785e-01 6.039010e-01 7.651874e-01 9.206461e-01 1.061272e+00 + +2 13 52 0 53 + -6.189589e-01 -6.655130e-01 -7.451721e-01 -6.547148e-01 -3.209094e-02 3.354331e-01 1.177650e-01 8.244051e-01 7.684688e-01 1.199194e+00 1.514584e+00 1.236964e+00 + 7.566011e-01 1.032053e+00 1.023751e+00 1.047641e+00 1.010332e+00 7.293303e-01 1.034600e+00 8.023248e-01 8.454913e-01 1.433453e+00 1.271488e+00 1.190839e+00 + +2 12 53 0 54 + 2.450447e+00 1.961131e+00 2.302712e+00 2.284388e+00 -2.913490e-02 3.375433e-01 2.001159e-01 2.011475e-01 -1.202946e+00 -5.290869e-01 -6.300772e-01 4.691432e-02 + 5.159505e-01 7.716939e-01 5.539781e-01 7.624694e-01 3.755132e-01 4.077059e-01 6.317548e-01 4.126800e-01 7.642235e-01 8.287871e-01 1.723450e+00 9.273145e-01 + +2 11 54 0 55 + -1.456634e+00 2.026675e+00 2.048836e-01 7.954431e-01 2.043145e+00 -1.839515e+00 3.024566e+00 7.491413e-01 -1.855963e-01 -8.084218e-01 -6.925675e-01 1.890604e+00 + 1.062858e+00 9.572447e-01 5.952327e-01 4.181930e-01 4.528579e-01 5.470400e-01 6.312065e-01 5.346373e-01 7.052215e-01 8.414761e-01 1.086952e+00 1.178996e+00 + +2 10 55 0 56 + 1.008185e+00 -1.169056e+00 -2.963475e+00 -2.628406e+00 4.717163e-02 1.391136e+00 -1.746031e-01 2.363714e+00 3.304569e+00 -1.202047e+00 -5.035025e-01 -1.638999e+00 + 3.665158e-01 9.790126e-01 6.370462e-01 4.259210e-01 5.748243e-01 3.787279e-01 3.110924e-01 5.916886e-01 4.757777e-01 9.053878e-01 9.322047e-01 7.758428e-01 + +2 9 56 0 57 + 1.522133e+00 -2.568086e+00 -5.125356e-01 -8.286945e-01 -2.048723e+00 1.880284e+00 -1.389916e+00 4.464641e-01 1.163531e+00 5.573038e-01 1.860334e-01 -1.424223e+00 + 7.105095e-01 6.457002e-01 7.179264e-01 8.469703e-01 4.480053e-01 6.457957e-01 5.303304e-01 7.194298e-01 7.982208e-01 7.413140e-01 6.374152e-01 1.260178e+00 + +2 8 57 0 58 + -4.138672e+00 1.239479e+00 -2.174722e+00 -4.165456e-01 3.509473e+00 1.684392e+00 3.071104e+00 -8.612624e-02 -3.326747e-01 -1.348300e-01 1.229495e+00 -4.427644e-01 + 3.837006e-01 5.495114e-01 5.989188e-01 6.128070e-01 3.641329e-01 4.948958e-01 3.506190e-01 7.814233e-01 5.794306e-01 3.792071e-01 1.444888e+00 1.291912e+00 + +2 7 58 0 59 + -4.726605e-02 4.723888e-01 -3.554634e-01 -6.020608e-02 7.616259e-01 2.029641e-01 -1.592858e-02 4.757981e-01 -7.546266e-01 -1.846306e+00 4.973642e-01 1.959337e-01 + 1.352209e+00 1.103895e+00 1.157766e+00 1.019489e+00 1.183549e+00 8.450982e-01 9.644922e-01 9.193971e-01 1.221118e+00 1.465459e+00 1.148218e+00 1.205367e+00 + +2 6 59 0 60 + -7.684998e-01 1.343366e+00 1.734024e+00 3.246112e-01 -9.492945e-01 -9.775254e-01 2.960407e-01 -1.759495e+00 -6.329297e-01 -1.143579e-01 7.037760e-01 1.904521e+00 + 1.459077e+00 1.346415e+00 7.393906e-01 7.788790e-01 8.405897e-01 9.321544e-01 5.312293e-01 5.399026e-01 6.850823e-01 7.505723e-01 9.884750e-01 1.442676e+00 + +2 5 60 0 61 + 7.742290e-01 -1.726041e+00 -5.670851e-01 -2.657383e+00 -2.584248e+00 -1.639933e+00 -4.378968e-01 2.765241e-01 2.128119e-01 7.835506e-02 2.914187e-01 4.393818e-01 + 6.229979e-01 8.772898e-01 5.250777e-01 6.043550e-01 4.747797e-01 5.940582e-01 4.273428e-01 5.825610e-01 5.832269e-01 6.738066e-01 8.856186e-01 7.917641e-01 + +2 4 61 0 62 + 2.576083e-01 3.967318e-01 3.489987e+00 -5.513327e-01 -2.067311e+00 -2.208361e+00 1.345059e+00 1.372015e+00 -2.585906e+00 -9.583213e-01 1.821889e+00 2.858469e-01 + 2.532473e-01 8.988501e-01 6.721758e-01 5.425718e-01 3.304340e-01 5.414463e-01 5.574862e-01 4.804387e-01 5.113164e-01 5.203803e-01 8.354421e-01 7.226393e-01 + +2 3 62 0 63 + 1.092670e+00 -9.335575e-01 -3.045391e-01 1.803763e+00 -1.193674e+00 -1.497446e+00 1.128515e+00 4.622301e-01 1.723244e-01 7.830569e-01 5.090817e-01 3.132562e-01 + 6.060336e-01 1.163134e+00 9.314243e-01 8.386579e-01 8.001204e-01 7.374429e-01 1.028560e+00 9.286921e-01 7.568448e-01 1.412421e+00 1.173434e+00 1.621832e+00 + +2 2 63 0 64 + -2.681595e-01 -4.767864e-01 2.565907e+00 1.358692e+00 -1.372210e+00 -2.361002e+00 1.449265e-01 2.336846e+00 -3.199383e-01 -8.880655e-01 -1.176252e+00 1.699274e+00 + 8.088538e-01 8.042482e-01 6.455451e-01 5.796708e-01 6.854202e-01 5.434235e-01 4.569917e-01 9.320150e-01 6.433842e-01 8.517499e-01 1.138524e+00 8.078069e-01 + +2 1 64 0 0 + -2.954541e+00 5.454993e+00 -1.746237e+00 3.693352e+00 6.151716e+00 3.065145e-01 2.147238e+00 -2.416527e+00 1.925878e-01 6.336776e-01 -6.144851e-01 -4.553340e-01 + 5.428212e-01 1.841368e+00 3.136473e+00 3.261371e+00 4.455662e-01 4.536057e-01 5.022572e-01 4.112536e-01 2.049174e+00 8.882120e-01 4.507640e-01 9.838136e-01 + +3 16 1 0 2 + 5.318182e-01 -2.517115e-01 + 1.065169e+02 1.488370e+03 + +3 15 2 0 3 + 9.335812e-02 -1.978281e-01 + 7.191808e+01 9.912267e+02 + +3 14 3 0 4 + 3.281980e-01 -1.132056e-01 + 1.071187e+02 1.655235e+03 + +3 13 4 0 5 + 6.274557e-01 -1.808081e-01 + 6.800059e+01 1.863386e+03 + +3 12 5 0 6 + 4.356802e-01 6.732223e-02 + 1.040095e+02 2.044918e+03 + +3 11 6 0 7 + 2.983615e-02 -6.646704e-02 + 8.422820e+01 1.268943e+03 + +3 10 7 0 8 + 6.927645e-01 -8.783068e-02 + 9.747758e+01 2.824437e+03 + +3 9 8 0 9 + -7.379353e-04 1.277579e-01 + 5.873563e+01 7.034089e+02 + +3 8 9 0 10 + 4.831084e-01 -5.139824e-02 + 1.345045e+02 3.655639e+03 + +3 7 10 0 11 + 7.679156e-01 -2.477712e-02 + 2.057741e+02 3.942066e+03 + +3 6 11 0 12 + 2.232401e-01 -7.077944e-03 + 1.112447e+02 2.343463e+03 + +3 5 12 0 13 + 5.365768e-01 1.608076e-01 + 5.119162e+01 1.016463e+03 + +3 4 13 0 14 + 5.770796e-01 8.598544e-03 + 1.633119e+02 3.941439e+03 + +3 3 14 0 15 + -1.228550e-01 1.214253e-03 + 4.259199e+02 2.123834e+03 + +3 2 15 0 16 + 7.608585e-01 7.333107e-02 + 1.286977e+02 1.577124e+03 + +3 1 16 0 0 + 8.819216e-01 4.540200e-03 + 1.810878e+02 3.987594e+03 + diff --git a/samples/HTKDemo/configs/DcfFormat b/samples/HTKDemo/configs/DcfFormat new file mode 100755 index 0000000..32c24f3 --- /dev/null +++ b/samples/HTKDemo/configs/DcfFormat @@ -0,0 +1,45 @@ +: + +: + This is an example showing the format of the DCF + +: + +hsKind: /* P)LAIN, T)IED, S)HARED */ +covKind: /* F)ULLC, D)IAGC */ +nStreams: /* 1), 3) */ +nMixes: /* for PLAINHS or SHAREDHS 1), 4), 1 1 1), 4 4 4) + for TIEDHS 12), 12 12 4) - monophone + 32), 32 32 4) - triphone or biphone + for DISCRETEHS 64), 64 64 16)*/ +Context: /* M)onophone, T)riphone, L)eft biphone, R)ight biphone */ +TiedState: /* y)es, n)o - if y a tied state system is produced*/ +VQ_clust: /* L)inear, T)ree clustering of codebook production */ +HERest Iter: /* 1), N) - number of iters of embedded training, + N has no upper limit*/ +HERest par mode: /* y)es, n)o - if y HERest is called in parallel mode*/ +Direct_audio: /* y)es, n)o - if y HVite is called in direct + audio mode and the user can view the output of + a simple live recogniser */ +Clean_up: /* y)es, n)o - if y directories containing hmms, + results files and accumulator files will be cleared*/ +Trace_tool_calls: /* y)es, n)o - if y then script will print out + actual call made to HTK tools*/ + +: + +: + +HCopy: /* y)es, n)o - Note that HERest & HSmooth +HList: are mutually exclusive */ +HQuant: +HLEd: +HInit: +HRest: +HERest: +HSmooth: +HVite: + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/directAudio.dcf b/samples/HTKDemo/configs/directAudio.dcf new file mode 100755 index 0000000..c75a502 --- /dev/null +++ b/samples/HTKDemo/configs/directAudio.dcf @@ -0,0 +1,40 @@ + + + + This DCF produces a plain, four mixture, single stream diagonal + covariance monophone system. HVite is then invoked in direct audio + mode to produce a simple demonstration of live recognition of broad + class phones. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 4 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +direct_audio: y +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: y +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + + + + \ No newline at end of file diff --git a/samples/HTKDemo/configs/lbiPlainS1.dcf b/samples/HTKDemo/configs/lbiPlainS1.dcf new file mode 100755 index 0000000..c41e770 --- /dev/null +++ b/samples/HTKDemo/configs/lbiPlainS1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance, left biphone system. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: L +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monDiscM64S1Lin.dcf b/samples/HTKDemo/configs/monDiscM64S1Lin.dcf new file mode 100755 index 0000000..20886e3 --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S1Lin.dcf @@ -0,0 +1,39 @@ + + + + This DCF produces a VQ HMM monophone system using a single stream + codebook of size 64. + + + +hsKind: D +covKind: D +nStreams: 1 +nMixes: 64 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + + diff --git a/samples/HTKDemo/configs/monDiscM64S1Tree.dcf b/samples/HTKDemo/configs/monDiscM64S1Tree.dcf new file mode 100755 index 0000000..4d71eb7 --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S1Tree.dcf @@ -0,0 +1,39 @@ + + + + This DCF produces a VQ HMM monophone system using a single stream + codebook of size 64. + + + +hsKind: D +covKind: D +nStreams: 1 +nMixes: 64 +Context: M +TiedState: n +VQ_clust: T +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + + diff --git a/samples/HTKDemo/configs/monDiscM64S3Lin.dcf b/samples/HTKDemo/configs/monDiscM64S3Lin.dcf new file mode 100755 index 0000000..1ea04ea --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S3Lin.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a 3 stream VQ HMM monophone system using a codebook of + sizes 64 64 16. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monDiscM64S3Tree.dcf b/samples/HTKDemo/configs/monDiscM64S3Tree.dcf new file mode 100755 index 0000000..4120404 --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S3Tree.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a 3 stream VQ HMM monophone system using a codebook of + sizes 64 64 16. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: M +TiedState: n +VQ_clust: T +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S1.dcf b/samples/HTKDemo/configs/monPlainM1S1.dcf new file mode 100755 index 0000000..dd11445 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a plain single mixture, single stream diagonal + covariance monophone system + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S3.dcf b/samples/HTKDemo/configs/monPlainM1S3.dcf new file mode 100755 index 0000000..d1e51bf --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S3.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a plain single mixture, three stream diagonal + covariance monophone system + + + +hsKind: P +covKind: D +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S3FullCov.dcf b/samples/HTKDemo/configs/monPlainM1S3FullCov.dcf new file mode 100755 index 0000000..da83810 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S3FullCov.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a plain single mixture, three stream, full + covariance monophone system + + + +hsKind: P +covKind: F +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf b/samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf new file mode 100755 index 0000000..107da08 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf @@ -0,0 +1,38 @@ + + + + This DCF produces a plain single mixture, three stream diagonal + covariance monophone system. The system is trained using HERest in + parallel mode. + + + +hsKind: P +covKind: D +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: y +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM4S1.dcf b/samples/HTKDemo/configs/monPlainM4S1.dcf new file mode 100755 index 0000000..48b7011 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM4S1.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a plain four mixture, single stream diagonal + covariance monophone system + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 4 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monSharedM1S3.dcf b/samples/HTKDemo/configs/monSharedM1S3.dcf new file mode 100755 index 0000000..b4ee31e --- /dev/null +++ b/samples/HTKDemo/configs/monSharedM1S3.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a single mixture, three stream monophone system + with shared covariance. + + + +hsKind: S +covKind: D +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monTiedMixS1.dcf b/samples/HTKDemo/configs/monTiedMixS1.dcf new file mode 100755 index 0000000..2ad5716 --- /dev/null +++ b/samples/HTKDemo/configs/monTiedMixS1.dcf @@ -0,0 +1,39 @@ + + + + This TCF produces a single stream tied mixture monophone system + with a tied mixture pool of size 12. + + + +hsKind: T +covKind: D +nStreams: 1 +nMixes: 12 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + + diff --git a/samples/HTKDemo/configs/monTiedMixS3.dcf b/samples/HTKDemo/configs/monTiedMixS3.dcf new file mode 100755 index 0000000..9507556 --- /dev/null +++ b/samples/HTKDemo/configs/monTiedMixS3.dcf @@ -0,0 +1,38 @@ + + + + This DCF produces a three stream tied mixture monophone system with + tied mixture pool sizes of 12 12 and 4 respectively. + + + +hsKind: T +covKind: D +nStreams: 3 +nMixes: 12 12 4 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + diff --git a/samples/HTKDemo/configs/rbiPlainS1.dcf b/samples/HTKDemo/configs/rbiPlainS1.dcf new file mode 100755 index 0000000..d993eb5 --- /dev/null +++ b/samples/HTKDemo/configs/rbiPlainS1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance, right biphone system. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: R +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triDiscM64S3.dcf b/samples/HTKDemo/configs/triDiscM64S3.dcf new file mode 100755 index 0000000..d76113e --- /dev/null +++ b/samples/HTKDemo/configs/triDiscM64S3.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a 3 stream discrete triphone system with codebook + sizes 64 64 and 16. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf b/samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf new file mode 100755 index 0000000..6b26bec --- /dev/null +++ b/samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf @@ -0,0 +1,38 @@ + + + + This TCF produces a stream discrete triphone system with codebook + sizes 64 64 and 16. This system is then trained using HERest + followed by HSmooth which performs deleted interpolation. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: n +HSmooth: y +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triPlainS1.dcf b/samples/HTKDemo/configs/triPlainS1.dcf new file mode 100755 index 0000000..88bd2e6 --- /dev/null +++ b/samples/HTKDemo/configs/triPlainS1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance triphone system. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triSharedS1.dcf b/samples/HTKDemo/configs/triSharedS1.dcf new file mode 100755 index 0000000..bce6a91 --- /dev/null +++ b/samples/HTKDemo/configs/triSharedS1.dcf @@ -0,0 +1,38 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance triphone system with shared covariance and shared + transition matrices within allophone group. + + + +hsKind: S +covKind: D +nStreams: 1 +nMixes: 1 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triTiedMixS1.dcf b/samples/HTKDemo/configs/triTiedMixS1.dcf new file mode 100755 index 0000000..b840ef5 --- /dev/null +++ b/samples/HTKDemo/configs/triTiedMixS1.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a single single stream diagonal covariance + tied mixture triphone system with 32 Gaussians in the tied mixture pool. + + + +hsKind: T +covKind: D +nStreams: 1 +nMixes: 32 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf b/samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf new file mode 100755 index 0000000..4aeec0c --- /dev/null +++ b/samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf @@ -0,0 +1,39 @@ + + + + This TCF produces a single single stream diagonal covariance + tied mixture triphone system with 32 Gaussians in the tied mixture + pool. This system is then trained using HERest followed by HSmooth + which performs deleted interpolation. + + + +hsKind: T +covKind: D +nStreams: 1 +nMixes: 32 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: n +HSmooth: y +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triTiedStateS1.dcf b/samples/HTKDemo/configs/triTiedStateS1.dcf new file mode 100755 index 0000000..b96e72e --- /dev/null +++ b/samples/HTKDemo/configs/triTiedStateS1.dcf @@ -0,0 +1,38 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance triphone system with state clustering within + allophone group. + + + +hsKind: S +covKind: D +nStreams: 1 +nMixes: 1 +Context: T +TiedState: y +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/data/store/te1.mfc b/samples/HTKDemo/data/store/te1.mfc new file mode 100755 index 0000000000000000000000000000000000000000..9c1ea1fa864ef114ada5a4ddbd48e6af538591b9 GIT binary patch literal 12804 zcmXAvcQ{x7`^W8M6f%meLX=985#Hx@5DhXa5ha?GNDC#S>=hz~j4~1u8jAPpz9kJA zAsG!Rw4+p7{QN%OKhA&Wd7X2e>vit?em?Fe4-d}|9^Qx?9z7mQOgnRua=$jivaKT! z8IS|}w8P;*Ry3{UOCTmnv9R=@80W6950o~9gRNUVYU+(({#8d17AgkMaV41M{bv|9ei22^`S%fXb9$n0yOvrr`{x_pB(j)hyuToIgt+ zKS?KIpAXXVFaA)wzw19uR&Ezo3PL^cS`NX)L_FNED(T2uF?R2y+jT;a&llj)X zfco?BGWuGx{?nYE`U(to9EHoXctOC1AJj4)Fx^exX_I^gXfK@$vOg`M{=;@66rn;k zK5qC=lj=K<%FWFIC8Ix#PV@w%L=_VAq7kyIqldZtaR59Eewn`3`o;WtrbCbKlKxMV z{bVDJlW>HKhZqj;ClNU5o$_QTehO(=P91}Ht9$K-R<8Trx@+N&e+pC-qjL!W)L zf{d3Q^mn=!ypqd-RO<*DwM7j?Z`#A*N8===Sc`LJAP*J=t^H3^=)(g6s`jDc-FY&%-j;Y5IS_^1{QoprtGd9*oq}uZL*|oB91|+~k613X1Rgy3PqTA2z~1v#u<+$AM$EV#6cv6jhkpChdr3L9kCUu8 zUw>DD)Rj^)b7cc;o}CGYa1>7*DM3!obDHMWgjp%BjP*W8=&5cXC;eU6DUaJ(xjl}= z__HqA;S@*TOpycQi_g$k=`r+pE~An8k{EnL4(2MTpzwTEj+)aKa-Cg9+M}b^~56+W+rsgFicylX!i99YG@&&xyfJMu8n zN)Sy%w!r)2$56$*nw?Q8i%|j2l+9{qm6cK7Izfq=$hZ#9Mh{;W#Q0Q|Aw2su`hIj|oSkMYx zen_Koi!AH!t_Zw-4k%$84qeA?(T!XCh}r&H%=mT$?&Mj)<&qP)F>)7~P}D>nx4AeK zve->0yt!{nQc$Vx1@f=bq7B9>%-+a4JX~c09gTD8nZ9H+aJow(1&7gMbs&xUd6HxV zYSccqjYiR{=Fr&a26GWWeY+1T99;%_=lj5O-{iMW`AH6TB;b)>{!~u3jkF8CioaI*n*B6IS_R~B{V=hBzkun;s`#_9_*P?6O3GTW6tEBwa0VeB~C93|+ zW@;QSK*_YPbe!8on^R3e%c%lkYH|>Qp?#EDL|5N%}b{dMFYbPLC!fscX&TRDzOzSRrl%8A{3;gr-W`Gk z+wb7+ug6fkSeN;DUp;4O@H5w z#y(rnY|nKvtFjKKz6@YZRU;U(QxH}68{#ep2^zBsDP8GH9X{+qXOmdYC7xv5b~y}} zl`ZCsTg`=*&c$pfr=O|(m4`auh#phUgXWujdec>cE+7oXC|=@RedvffhcV&dM|xoNA}v%R+-toDFyx#*wfc1l&5~~6oGYos+hi5W z%l5KN+7OXAQI9L6L~uVAGuGxI^w4@0nwFJ^{-O2|qY;DVYklC~O%0;I#s~^Jr?c~% ztYAGGgVNpUXhxDj-P4-;{R5b$dD~+`zYl!uUk87*KcNB7ZlaT33^(7NWf|3tuy;Zf zjqOkCCWtf7FsL-;8(KVnMqDmhL3iO_cA@@Tu#o&p2fLPF+!GDjKJS6) z=PNwiN7q;4+N%iM)x%G0?K+m?`u5_6Kh=03Z0b1$4Ql!vQ()zEXr2U>k!5?0$p;r1R$XsT#L z@s@OWa^fkO_3R3$+*?HMhPIK)em6#P#WQ&Gat4~t-A26TLvidxbR+J7* zZWzvONTa#sykx22N~ZeaPB_h*4JX@gLeh~Q@U*YOS}hw;(NsX4lL2V(WhFe-5`~x5 zu0%Cel%5?I=6GkkMB@QzxYu1pPj57X&F2L0nu96`Pgx1|dqhwy(u*nRb$|x_r{vN_ z0jB;#6FBY?g?(PSOqvkG^qdccO}rm5)Af{%hHc9BPa`5cVT8uO(k42-A7gVo|021-qZ3=!7zB>3=^7rmX^KJ zqAz(J$aD81_$;~={Ync^RI0wFpofkD~OZIL;?GDefsw03^To1b1&gr61=Ug13$rxrHs} zDA33cNln7sM~mjs+iRbZ{L2P#N1_7a+@{hIqv;TOJP?k*vx23sChJ|v5BPDR8%`$* zFpUP!F=+M}5!m;dx#Z%Ghej^KH~A_UiSME%vu1-G+?)l1T2o|g6SKQ zG48JiN#wf$IWH~n-0v4?yVo7orB5YMLi<6xdIrR&uP4@FvzfWZ;D-JbLnmAa@S;2C()y(mxRdDG?17@#y2c-h0w4-4Mx-G~9_UjIY>*_+Q)4mZ@CmB&uwDCC8Io}qt^U}%8oa@{tTWnD5 zm?My&i?~lFkUaU;%L<(Qiz*gpam&A#I8(upsCsup_0kKVZ}tn~{@$h*0&fZH)e64% zbg-=EH(BvwJ!$MP$JL%jI4wSx@NTC^vd4sHrXdGRI^v0f8n2j-*R zp^eNbs~QMfBLKADn%;E|qxN}mFs8AC#O?hGr@uL2W@9DtD6eM>bH^}a_FvT1eFbwm zq#$Ya3wYxBjb6R~fO7-xpz`aFWJ|OYtVw}Bd43g^Q1px*vSqO;E)=Ixk?MZyc1{`f&K9lwqHxgAi~%Yo&=+aU4XBlxDI zz?3iKVR}2CK*{qaa`bUNXru_^sRSijs?|n z*;M2O^Pc9g`*P31iry|fz*_>`B~G+q*F)5jc>yhZhdJE~n@EAH1SD$xf-OD-IOn?H zcd-m9nP`NaS%1+wS`H-+{ebGCg{b)bJ(6FEp!8am)u<|hHz}*pUOWY7|M>}ucGHMk zeLd{u{fo2vm2gq-EXb?=iDGV{s24wj34Yng#(r%i*TV-<#m))l%bTOt=6|5#%EE@7 zCUpM%m$>YpDuh*RgU3eQX!TDN-bW7-JLzMr$h8r;D`dp4+mEdoBaAAMRxrxlh(m0XgnMn<|{ob*FC+dNWfTbC^p8OOUpD zfy?2!@JG!ZuiD?Ht;7nlqffI=)C)Av3sEPFO{gev9@@?GnZ5FTOzjR)d=O|w$Ld<4 z>eB#T%j==#cnwoQo*6dLT94*2MHF<8f zrZJ40wzEb;=csohCPWeCr&Cbw z+goHuZh4Xz zyA&qPED?>n)FC~UaQ<)z$=bFNZ<;8eZfC2ht$!;P23UaS!Z^4vqDP7pKadWs?eva$ zAo4XB!k#Q%PLCImTRzQL<2xO-HPe~C*{ku29tS*wW+9L3LGsx?oqW6d3rtKF!oBm_ zu-sVNG%vTzhLGd3a5qF&TiUcvIS95T}IeR2+11gjc0((+TtEgl0B z8FCYAGCaX)+7tR>A{C3J2#WvyfD)1GSgEZ6Bw=ViG@fi@Bpe)I>zo{F&`-#;Qx;fp zD4p7rZUj-|3Z%c5!G}40aR1F#R{iEmI@g~&=Bd<}>1@Jc?q)K3 z@pec`+k&kVyCGxpa_SmqXS+RtvYE-C3Kgc;2i`)AN)6q}=1`w8ZM^V4j^rmVf$nu< z*ehy6qn1PhU%)d`?W_hbW*z}?J{?oHb6;VwT$LWlCLq#Oi`i%Qkvm0?;fKOud?9s` z*_Ct*=9ZR{xX#~DC-I!dm@3h{p7k)?S4LM}0a!cGhj};dl8-zG;pf*3>?wOq#GieF zy~m!C9aB1B@VXZ*TH-~&bos+ouUcv=y%ly!jA8aW0hVvyL6p`G$LFq_Nyfu`=&>Cp znbx{6s(uN{chM~>_Jyedgq<}6_|h5lvRsK!UYOfvFUFDDXj~{sagr-%;+a* z;Z+6$4LZY1|EvfEI9$2u`2`_w|%4!E^;8gDg*xBOG3RwrCO;a*it-ylHp(OY# z8Uw~=Jj`eH<@BmyE5vpl#qc@itinol`1s@zmT8?JBj&QWM`1RRautP?&S{W6907E> z8*%xk4YHm&kg4?q7gt4-@QOn4xbp*#xD1fw@J@8EUkR>d;z*WDGCyqdAnAM^h);Kc zDE}NN5aFPd=~LoKi$LG-3wj+tNbGCd&?0UCv~v1!>XHwPm-QdGxWS3Jp2&d|)f_mw z?i+dp77>AUn)G*_9bRY?qVf`AD8_Hein5OhGh-cu*La{> zq;|nzU?O?2_!m6yv_ex?Kh(Kb2{(3~N5%Rj7-B4pRU?s@)DsH%E4H(XeC%+JS0Le$ zR|dP~zaV|(Q##V128q1i;KuT;Xu9ngS}c5qertE5i;E;YvgES-V>5vNKrm5?ddK|B zZ6_)*OK8@Iaj4!C4OQ(rFsH`~YLCd{yxJ-hPaA}rpBPqOAP!<=GQr*@3^-HoawE?S zbMH@G4*4_RLquOEak()F6>ckW-lI3@G~XEBRr9bO`?kYxFrWi%yO{JgGiWwxga_~m z`nF`y-p#`#QO*uk1|Q>*)*~30a~yT_qF9e+Wz>DPn((XnFtK-$!cvxwmPDauuOhYU zQz2;%V(7G*pa&ad{UDr6Xm4}=# zUx0@U`q0Y93b%VJqDwcjTb2i)`MQ^gymU6bz(-Iw#fZ^a)JNi--(upIcHFS84rMeRW2}-m z>mrea9KjzjWvv8>4|XS^0p_&Osv0$KEMYXBN}qh``^oE>G0@xJR=d&TAG zYdOifrd%T$_i9Mzg;Ch??l&&o(aPvq@sKzJ2h89VLeV2xsG-1v35I)F#dDDuB$rN3 zOwD4>6j`u}N+;n{R6SY@$ukm-Ib>P7HKrA=g%Rq8^Y-~*;?OSA?#yE3$v9G>wSe&2 ze`WcTuOP2M3);^a=iF%yf#pH{$TDLvUUn2$j(kH0e+8I%D-ZtMxxj6D^n?{nGa;vw zs!{oxB!mWD<6LRwp`rUE&`Cc5A{@4$Z{rzs?eKy*T^CWiMS$KL&SsbQ3^N-%y-;vb zG#n)FjHhqq;TDQ6LDLtj!0X@$2D-VSyF@n zyr5G@34O|EgVVi*K#@|1d9GV^Cd28eQ(J!;ne8sZ%qH)bg9dkfR8=&AtYUCiza<(QY`rLxK*i zbDi|T4RowX5l^lfLL&DCW!qL072O-eTW=PsYfUhx_WFR_#9QS1_ypo43YyO=V3+o9N7ajoo2|dXxMLSD!#(&EKfoavSXDSKyorR`D0?6#XNESMR?*#2g98khwyVazp_(?tyj1uRwVFLB>Az2Y8;F z9JlWqLxE*7eeqJ5%x-pt?`2w;aH$a&#kO$k41$nft{9@{<(WQDFJ`VwG(x1%G!T5g z0bYksK&W~+*;)Pqd1aoXgZUHWWW1u~ZNas@S`qZl83S-?2j-baH@MyX%Y6J5kMehh zA$iqqLiA_B6Z?Z`_@NdzhiAj>iDEK$dITsO=;w}EYA}EG!oVCJk>po0DEHJ8rwm4u zDbb0LHIjq&yxn+YbTx$EcttN)?d0z9|7+TGTZJrLp9D*Pjgpcj;wbjh5l!qj5F?2a zdg7A-x;?PQ49j?MT@^zU6lIyMseD9!t_lg4tOFHK2~zL<21N|p(e%0-F5z8cF0_At5)G6sNQCljjJP6!b|Y1|Q6!LD zz}Mu)b#aczG9~&+RGvu7E~I;k`^bRSYCKr#fo3~`iR^uKte(<@v!se~v6?H(pK_EH z^Am)?(-L4&bCcPUHIK^d=_BE-q3GAU31_B9Fp(&PJIr> zKZbmZPC9gTh+FRvLi|cU;`T{CB^lZSvDfF~gZ*QqsQ)$EWt+1?8|~TY23H})VKqFQ ztUVdOzHzsQ@DNRl_jusQ9u#x91QjNxc!zt9G@X2e%VmGFa?uyat&&aP-I4>XgHiD3 z*b}bw9Uj7OMY* z9KuZ07~x9uZKy1>4kdry#w+cMS^b5};Zyhm^60x0X&DGc-dFNaxX1}-tPA4?p5P(! zH`~#9uK+5PEjm@KY}oPgtT_s4w?g8jz{8($R*E zLJjUO)bGv0nyfK)mx42F^Lh``qG6<{^#a^D+7CXrK) zEb#r!s%M`9P16X@kKkI8-oBTP)qX=wb7h<|LAh;hK$aA3!Q&;7Xjzp4l^$xCReOw; z2%6;8cKsyki7)f~+A>DLT@@`~C!lz4D3uuQBLbTJ81QcrM^@Cv zi{2Qx1=G3XC~!Xnx-|Y#*{M8C&C9#!tq=9!nOw`EZ=K=i0(=v?q_$w zZufs+$8(KlCJxiF1P)G>t7X_%Z&17^8Z&O!pz*9y#=kL>sAtK-dyhi0@rnjiwMldG zl2*`;DiyHv=0LtvA>lK>hXQ827?)p(mk%T}{X0ToLG2INmej#W-+4}dCzp`$qIS?6 zjKWK^Z!vY(HBcZXj2NAM#tIqU!&9znQ5rgkT9_Xh-Jk&mch&*NYKVlFe}PjQBe45d z1e}=Wf-|$HvwY|4Sl^Si7`43x-Ci$)NcV-zu)_@G9cc#czCltIY5*4+w%|j*pQPgM zVw}HbH@PSuLmWgV(4cPv+_sX1TU7(>{QT)8&#nf(E__RJ-nby|bu(1jBo2ewZ}4-5 z6dF$M@`IeV!y4boJV^aT)Z;6oWi=nk{9qY~pLPN~_`1NSItu4J{0<>I!tryl1n!#U zPEI|a0Lu@N@VRyly4Ft6r7dlw@b)YSZa)Z7{OzzWy#&p-U91&&wh+tu+R$L566f+` zFM2m>DR`81pjb}^%^H_u#hh+1wL+atbM`+tS7nKI_pDfpo*Q_4?pZLZ(_|hc`fwf3 z2vaGJ70%WlgPZfel75#G63eScPNxJyvR?_^YH*l*-MJoRTc2Ro#LCH?$q{&^z6o9x zu;6lG3cPz$$t~fpXAYL7l4XaM!j8%Oz)9{9S@UpmN9r1fG2b6U@i2kXuH{tBCk!P^ zS3%*1m&9as9~pTUNREYQfy!TB8Y|O7iTHBVsJMc6KHNa**6GYiZW^+ozfsvG1w1{2 z*`=%QaXSO5nEtjrSeV@ki^KkL&$`URX%>s|_%#Y*w#v*owj`%&3UmX0`K&p?$Co zCG1=28&RO<^MX;r-v;#-+6R3fRl%=%6`Jb7L-*}D zg?9dCC}gCK29C10?9WsZ*b)iDe>aly?oJ}Zo5)I^&cnDRHZY!khb~hClTwQs3>}OF zOzy``>mOkFLUU$Gfe_%sFGN1clQjFSBA$v8XmD2zn%zq1xw;%Gx!oJrXDhm zormkbi-YA)S?Xx`luTp{)y_PSW4eFY7nEw_fb*XO8os|AL_a^kUFCO~D<|ip!Tv%_ z8ew6qT@?b>EMS$Jw7{acncU2H41-xF)NoN1h$^#^`%gDY$L`V-huje zL#f}u8}4(*7QfsSq`JCOC1gtGrgY={iiwa zeicrYUx2fxX3>c`Q(^ioQ_j8S9L~yn2F$OvT4wpxY${}G$jP{Im^)PXzpT_upDvu1 zbOup(kUmaJg~}ZR$oIw!cILf+lAscne~%ShKXjRULBSWkucnYbF&i~$70Pz|V$&KM zP=5XmKK`I6oZ%1G(~2SSQ7p^n_z9{kg+WQu5NDXHLE7f`n7nQ;PXE#azq}-w&rj^3 z>ykTEy!ESHDt(K)r;8zsS1>4=ou~bolr)+RLDg(7=G*^;-dtIfJ2fzw{c6G)3p1c% za|K;>QxJYXFN6&B`_TVym}q;+klaXXXcl+H_^M(MJpLLUa$eHm$R+US!ET7OmfJ+j=m1y7fvh|6SN=XD11KYYwt?9fD}^~S@$ zNnYD8XitokDDxv5O=r!8?C^s)zi|xt1~;R?)K3u4s8A{QF{U#!fmnN{b6*VC z!G)m>v`$qBrPLqb!q0pt>f4NSk3ECufoo9sSPB>_IKbl7UgT2M09jani`;iBgVkJX zh`4hf#iCcCvi>U+jyVqx`${2hz8IuSClf>QXi{|SCM#1KKsaO#9>^@94WkBVB2@u~{XyF!C297i4ifP(hfE#{2$pg}O|hTwX6QWS zciCF|CTb!2X(1kx3BYBuUC_2CiZ+hw zbC4NsMDy4V-1T~hX6akNl15%q^D2&*{H~@~x+ZtqpAVwxvURkIpU|7;m(a-W0FrBW z@z|7ecubcMl(Uf0J#EO6Ey|=p3h3yg20YPq2B*CDq~&6L^uEX+Op_RfJEdVLqJ0~e zcnpx}Y4MQDTTF6{97#)H0L1W^;zAQ%h&F1bx!hJxbJZ9&&Hf6xxz6ZWupgbccgeIV ze()*y6zNi(^nulqC@8FqPSOb|>vWr5G$!CSa~Fyqv4XObwm7RA;8WXfru=Cn{bzWD z&70WC?l|HG5MhlM)}KVJsz)$|Zwze;m!P%%3#fjsj#{1L&@drSFI&q(hnF(DedHLi znO`)S9|(e1`@P_kATKoATBINy>-!k=3M3Nl9#1aZdkZxO2B7uDVL02j z6V)}IV$|0NT3{3hWv;m>x78lJR$T*+BZuK~zdy@)wFk^{<-qaVd8oWrLC40P|JQ@h z42nY7k^~fbu^#GObf9tPQMk|%1BtuRh|J$Q`uKqtEN@qXvks-)^P{Q%Y0eo0!=__8 z5dB7%$+L~D-S9`1rm8;#sSP_P_veR6(b2hNt1lP4>uhDzxMU^u;5j z2s~g!GzO4Ab{CkB`@l?^N^U0Xq3L&>YP3@A=sivmD#3YdcwoiU_q(G|OeK8gR*=iA z4{o$xOy2%0BTBqiS>1>X*nGZ<*h`g>Z!<V_JH4H zUFKZc&0TQg2XRs;gS|ZmU`r{7%DiJIxt=HPOtOVP(zUd3S_wSdFlsvT<2+jbD}ooJ zmfZ8dV!6Dd9nkI`j_VwklL`k(6#plTAwxQlv}HbMJ#&H?x2>5(-NPv65sq5z$&6XA z6mv5=42|6YS8vuNJ}c8ve4RBW2DyTV_gds1n?`e#;<;U|TcB-$4@@aJO*-|CvAhfS zK*`G!aLmP;+#LUl>i;w`F-!=q3BG_IN7EpZ_%YlERVZT@3CC*k!18+xqcSTKnmo3_ zjiq1MX+1GGr}7Gh9_B*qRWa!KcpE~eG{75=b|^NS2_M70(zjW|reW8lPt;1BT_u=GxN`h0VPoa(DOWuzgf#9A4X#O$_ckSnrgp#Ew)tiQ? zo;lq8vixu~_$9OW-&JmIb^_e+9wAx*2U$Ul@AUbu8kDk&N2j19)1$o~P$qIR6LPnj z>UtYOMC(PS$zOoJcMFCj>pIRKYZsFB_8?WY+y>^s_uyT65mPel3Qkk^!JOI$%;J^b z!MNF(NKZRQZO*e0akzs_*XblGYm1nciBYQfx(mwx<}ej2t#O*!V?1w6sj*N#@@)vF zZ6gevwlP4_#m%rZC=C?d0%3}}J}qsTfbWj`sQ9r_l&qPHDc3W|ysHIJbW)YO##j>i l4%I>ST84>@xJRNh#2`=aIQR4CXCP{Oo0OGJ<}yzP{~u(3%vt~d literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/store/te2.mfc b/samples/HTKDemo/data/store/te2.mfc new file mode 100755 index 0000000000000000000000000000000000000000..15f8d7ac1e69e9270706a2229835f7bab788bcae GIT binary patch literal 14468 zcmW-oX&_bK_r}d*D2Ys=BAFE>+~Mo2GHa&-DA*mR;}Z9{Ej2oza_}q}xL`wyMC(yuhB+R=VVYbSjzY@97&c8AzBvoQ zygr1bGZ(?-qG`<7o}DC&c~8O~pCpN2M^TX#hU@-Ip>H+Z(Ck_@iZ0hhtHMFZ+VdHf zM9n8+>n%vj8Gh1vwwXl9%7c&4T~r#Mhkj=dQIA{8&}!OGxRH_#4_PdjD-}Se>*vv| z8G?+wST$)6I7p1+<;Yr{Y@Bm*B_7zA2WxZ;kjP%314Wud^lk&me>+BBf0cuhN43z% zea4+`^odqipMjb3%W%QUQ1sff3*vq&p{s2_SOnZ;{AL-m^+uGSVqFtd9`=Uah0}=1 zdUdjTy%Cdqhm9J#&FF4-2!2LO;U?e55a5~vRzU!n{Gnc%E zd~&vY1U1sm;PDIrXbxMA%5Rk+Y2+`8W?lfDC$+@d`4i~edkvp2jMCDoJ?u*fHz2CO z1+`5+v!(uoD*a^zZX$j=}iP(fcWi=|KA!9 z?oNom{|&8vK7?b}qQJQJ6xp;Xm@c)sM5piJ!b@viI{jY{xLOS{qjy43Nh%cCsl6z6 z)(1B%7=vKb%`CSAIwYq5B{7Rz0{(s1pghoz`LvghoL%Y3{X4e`B{JT_TPIg2zOVup zU2LJlC+2`sz%n`|+y^IFSD3Nm5=`y84hE&pGgdC`p!jY%j3{uqJ?EY&+_K*0JjgH?@=-n-x^G^+T zY_p^v|2aYRU42M6lmK7OH9~(-8=0Zf0t$w@VD9&pB>Nm7X@Wa&R?%ZTrEwX3qqZ`Y zax-DEmMuK|PYTVVleoQE8$noA7OG{mX`Svmc1ETzV>h=H7cos3sreJ#MP9O>);U1U zj%*m2wh_(e#=^?aC4{9E1|o5JRC;?Z^G+d;b~yXvoGMey6!OCyy~E^_Y$=pl3WKNG zFz)#|OdD7JAs5YO(N%>fSa0I^h)H-CcaEVX%1-Lz?Va1uMI8ssCuyTe5 zv#53(X?juyM_7obZ|9<~%nZDG>KaGym>jD1K0<-b9Z+qk$rX!wNCpmN(jVM0hU216 z9)$Zsq5UyD&{B+HO>eQWmyfetbu-Gx`y%V5Ic&UB%*~c%$i0PKbnOf)CXA1dJo@Yj z?p}**l9%%f%nMpT^BcHd9al399u`GY{kySl$+?CPEDF0a&UEg}4 z#qvIwvAP@Z$0!vyodG>ZBO&YK5n}Oa2C;dqPGcf+L02{wv}63BXZc`KPuTx=7 za1>m#_zIt0O=$nE|CkY%8mjfJ2QVrYl?^mG0;|`NBmq|vcb&3VFVAAk{Uadq$^fcc zj=;pD8_X>BVR~M_4`dS<81AY^qfG}%{u3QC=WH99*4{xvJI|91=D%pGf+VAM%LUSe zwP57ISt!1`4J3w);IG3r+%WlwI+`8ge*T)vY>Iaz63aR$d%qMd<#VP}8@4iA*IkDr zqO;+r;aiCKv=IJy4x{ZQKiFpd2P{{XgLXq0Q`#j8KeMBuW{}GWuAWK$^tlro&TIgT zqZ3gDaC@IQ9I9Y}zWy~*d)$d(-&TX57^i&!7XrphmC1940F1lN%gjY=;zC6y;c~+ zEM5)$!XBLP33ZfzcLduWR=_pMSd@98Nc%4I61VGcmTJZSR!pY^I zgQyl) zACZ9{HlrwD?FlgWh_=i=P5xW3i1E(-3XT#1IN#NdbR0iJ7Ic>rkI-psl{KQwYJ+{$ zB>5z)ZZU)>p}U~1^bc&v)Pa3L?_v1KBu408APe`5v451+Fm*fMGufVYMD!&?7p^S; zSBJBZ(p(A3{2!p!-VgNR`EfQW$F!v?u)o|DE^4$>r>!SI?NwO)@4^@Kk=z4_^Lztu zl!fT>oMDJ&jOZ>^^1nWpD)f;Kh@6JbqffbF@_#{mKQO5mKM|R`v5eIvJtEbiPS*H) z&{RhOZsg+L|E-C$u)*1rXJGVZ8=er{$u^q*5zsiqqRrNTP%t|DcK#>57vQPZK{LG`yPp0TB8&8&%Fe zhI>cn!}Y6exGr}g?l3$K)!R3dofAt)gx4J?i%q3Msa}i{?jYHF*MQlS9hAv=!0T1V zVbjc)s98LM`-~0Psg)cO8yZatT<;SH1%7%rvI`dESioZE5wO;%fbN}s$R65`{45s~ z<>@PfHLbAFt>=J|D7XYWCQM=l{o9(b!uvx1}l8{;IvyLns)w$mbGEv+D_n` z#y+sNGUCjc%pyf|6==fRNEo<&&<#4-L+vPA+Q2(^)E)TZzC{1y$(;v7+Qp0Du9KxFNv+4 zCkfLpgWV7NaMm}#B{KvV3&Su{tT-F%`Of3a8?A89tOQTUB{Me`c7W|n775#Rgn0ic zCnAliX#3|Jnw5Jp%n3rSYahZ2T6@<_gb(o&^9Ak($?OD%8KM4hTM#8{i_ousTwfa|Ny7y1!JK^;rc?)z4>}K7P z<0Ccd$#}+yq7zC2}of^J%+!M#5D#prASbyAgn5TifKq4R=jDAngf zv%Yssvw;+xIFdqCmgEw%$G7Mk)=T8)e}bCJ7t)Bc+sL^gJB%W7Xmw&WBu&VpiQIDT zNYyyRu+EXSjUR}DiWzmD^Alyy2BOKnUDUrpot(@Y#>i#WsP(=FE?$~}7Jr|E$_p-( zB`qVx*V9PP@FNIukwyhUZ!}&1fgar$Mq>6|!J}6;ph&+a)M-1R|3)r-pjQv4+f_-2 zpBAZqo&Xo@Z=&dRHcC7nqW^gTId#Sn_ifsQ!n>Sc^F~h$7m|Z=8VIp2Z#c7*LP;aX z73MxTh-MeHp$QJt?MuQ)Sl~bOSKR_{AI^bL-u{Ihm&O_K<*-KLGRGocka<>o1=QW_ zkgwhn&ht&txK-NRkv)hX)N9=Kva1Trw>67dcZL%!bn@LbV0h&9en5i$uw7z^;m#u`6pUu%V_BnjiiGWq_PZOcn>rvrn0Gx7ZCoKp5fYZ|!h0%bhzOvCf+<|Spu^NJq>TN>87O(CALnj3L@p?%z|A-=^aTARH-&Y{mP>ie z*W5T%_`Vz!moB3h9(`tQ%Izhmw|CJOZv>!y_aL`lu^S!^Pv8=#Kw>lfFDYgDlV?J1 zyn3||RrDpn=0Fa;J+l-tp09%&N7BLGY!*4|@c{W&1YktcT&84loJo!>At?>kL{N(| zu`^o;v18b~B=sP}T?We6IRL-4DomfeidxHmVanHU+*2z%VZWOf@OR7sed8danSG4) z^RPUVZ1SGi_FRUg-}>3}HZ-{=0X&t=pa!z$e};4Y}7{HE(*f%7exqtrydZo3UT z9y)`BU?cmcyBZDeHl=IJ&-`yq`bjSAyEP93O3&b|1LBaM>q;X>RAJ4p!_c|JkIGac zEm^Xe3Iw}?UQjLEdfSqSO=?|E|Hg>``2C!IP$w2W`?5l!(m;n{aRW2 z!xka`dlD9ZeZwA74~Cr=HOS+NamW#x&Jx-g#LdrH$Y{2Ek^|bE?7H zxTdCq8FUh6XT?BLe>sYu5{FMRN4WL{%FM8f5NI#9Cj+YfMEGq6`DNut!tV#cqsv-& zW0^S=q+Nyv@i^3Y>H*v}qp+6IgVTJC?Bv)1=1Y$<38j)8J|kUnsqiCoOIBf#CP2q2 zFQ8g$P@&`-Xn&sz{>^R>`(HVVhB|ULcW2SM0SV@V`7!YPI0(;+2%dQK12QakfxsF~ z_6Y|erawxS>08X3`!DvOq-GZ_@UcXZJ{j)pqeq#Rpa2-^@j=>+&%j@)`^2xfmU-j#iB6`DqtKPz5cV*LaJzkR`soDBF0+T0*sE+??S<^{fgqaf z^ML*^Si@|xmt%e(;R4?|ZDdK^r?qB^M18m!m)C3JF3WB-zt7X*MZ(-A5`6TJvo-9M z_hWpbGFSoQj`VlPbSREy;2*h6au;nyE!QNxP;&>e4qSm7rFY4VRwZEFcZLH8@6cI+ zW9-`t7ts%rgP^>{54Fa_IWsLBk!`Mq@o&uF921R3Njo^~SKCp6y&E=Iv#Iv3K5n?H z1I+W%hB$+CC@>P|2zbrLnFDGVbj62KDP5c&+dw)$zXSftFw$O6BaQ1HqU+Wr2K z!RL?3MJm>Rs}bOZXzxZ&>x{sl!dD3%fKpjg_=3IPJO^LGJBwU!%{GE^1uyF!}ObA zBfa!;Gjl<|iD-XnfO{pGrlJ#J|y@M7f8KTrG85n%`35xSu zNm!gQQBod-Q#s@GbVCJfJ61(nP&(4p@ z`8r+r?`J4U54Zzg2Ap92hFsYC>LBpnYooDSdP$RkEriag!(GmvFd6~C9?&3nrmull zmA=g6rk5zDw1^1*_yq3HPJ&LUEq(pcn@m6D#Z)%*qK(mJxKneI_4S+zdE_7gh2dMM zL{S>eeC1673s1pbBRP;<6bTocl!%J$YgY2b59pYph=OvbEo+V`@p^US2fgPe3F)ggk&=^#m_L>>xOM4W^vfNGjBE?C$oDX`a$msNIvwH{eh-XwZ^KFV z`7lS|20h-DO1f{v5T~0z@#yK7xZ@r_G(FBD;Rb1t<97=d4my+mWAQIYqKpz0tk;Co(t2P%1vKj5 za?aZHOsd6sgOMSl(B5*Ij)Y&LHW{yRSz{Q4y*DR%U-!X+_c!6>mm0|Z9Rb3v0-W=G z0Tz;fhcRYR7o;UuAYVodcnt=j;`)537!4whL2`8ca5jYIn!#9V9P>ry5@)}*IQ0|% zh~W)GP*)NTMUPiNf+Pzn7gZqt#Wmb3_93usSv`1Kci~JE5whA8}Z$Z@0s_4Ovk5=Qr)GzYV8Oc)}W%9VD@q(}N-%oXvAYAVJ0k(^l)#lS?vj zm*yCAqbnVk+6hC^-$3q{l~&XqiR z)6BKJI%7i|9sjVK^Tp|P8A1oYhoEYkFK1o&5Uh_Wz=3a{k-vUD&Wj5n0tf8Sefw!x z>HLVm(}nCC2b*bxbuPR2)jm`y%jbxGm}DHDf5hjH$5F-9A1yR;seMBY^l&GDD|d=? z4QylTQYNXdM=o>evOY@5KPBwMMv^4=2(Q?0!J`M)=&4X@6 zajp}M88IR&X4}BG*?RP61dF829mdm*S-8tp4!!3cg)<>(4XgZqf^b7Q;cQl?rsZBV z`3oP3cOu*Z)AM@*pWc71{7+(Ki${K7@R| z?YOili%8lWhJRQ7L+cuEJk*{}`0^vj=WIbD+_fC|!nDZ=;cWIquoaBQDc}r0-utY% z!C0^KMA?vQxZdCf9xV?cg9i_he$5i@Ri{ikmCr}g)xT4Vf~_dfXo`GQ6tza2nG9(? zWRns+wqX!09iNjgwW{RZ5J1eU-}KK=E{Qw84@ysGLF|AUB;JogwSgiqIu?s3_v@i! zn!HpXHb{_R9%y*uz@)gip#A%jcfHE4og zC~vYm>`rSN#PqKp5=)!rMnWw3)7+5BNF8=oB^gZkkGA;U>d1SqaBRsr{SL{IT^y) zv&a*;TdMKRU4BS??12`Z{~%(yA{ukL>G$b59O;v9Xv>Wm^yDf4#cF~ws}6C3Rz$;{ zMiveS?}qG@G~6V$AC^rO;dC(-h?UnNzgO6TNvaM#Gi(G)XdH+*_|@v$L?OP~7lwe?o#0AdAjTa!iNDAqx0TdrSh)yv) z|K097E_1yBirsg}M0N??u%AV51`LAp;4FyI>gNPazJcRPENm*g0jGneqrZL!+*`U0 z9Xu)6_9T+QlmKq6W-EPYV+4L1n<2|gg_APKo5fWm@P#Q0mMDv$vt};T_GaO#)jg0G zZ9}>q)q$i3myRUzLG-73kea`U6IC4qMu#S`*I0z73tP~2qZ2&5dJCQGP3SYl>16Ya zE1=l4+nH?n% zwPqocr+$PJc4{Z&sA*vJ$80cPQ;42S0nm^=$dVlfuP-}^k5pMA#_x`o|D|L z7HY<(BRB3C(Y@l2(pM)?-fu4|{3)ZMk!I8~=^W3ev4zze(&5GXqvXPa2#%uPC9q!V zhq1<&n2_2!URGoekK_pqx_>81Ul$RfsAO2M{v$-KxB!jpET*(an&fB-LntGSp>GAq z6E2}u^$C!5LKua@1ep3t7v_8LeTZsThLr6_@bBCnqVZx8$B?B0GCmWSyFZVtNROw! zGTQKL%_6AYa}LZWw1Aa(oar=lf>ehpoYgvqIBt*UY_6Nn)!piiV8qjPId4E#r2$&; zJ}SJr1I5L;FcTIL!o35T&EC*@B!p-_KhDuO_m|3+-NKySDDd80j(l8Q6qm4pOCwxz z;`ciCTPrRcl}U$lt~Kx~Q<=HVE#j=++5;-X$(Syfjxvv5;dWm~+~2YpI%@byw3;5V z_j}y%cU2!`C%ncLR;k>Zf4D?oY%?r3T7)6T?BHSMFEkI(Lfc!aDC`tPl%kr+ANCE- zc7fOM;8`H1f7^o^TOyd z>3Rwi#guSP+G3K`Qh@xW$r!(WBTC$Q3ldYhpc?o9by^B7ry2exS(C~nuiX~;TFzn4 z>j?CJt3bj%rIEF8H-}ixNoGgRUK?6*&_s4_1 zEYc7z31j`E7-{YWQICERsjrRX+Ky;wIz5A&$SWi%ZN+5u)hp1GpoE7wLKuAGHQ6yy zjk^|=WADiYs4y=HEMmmj&+ewdn_Od(uDgq?5Y|HO#Fqef9~<3F+|h}s5{JBajLJWT zw@nmq-lAiWFt3^k$!$Z$#5ls*7Xvp>-(>#E#zTF)2Rav-@OtfPhGqI6dJb!1!l*nv zk5FYBS4ETFx>{5a6$hQKXTiI?mBW`j7aGO7ab0IL&f8r?7Qc9bW>5I=xcYiv{cIrz zSx$u9=SQKMLUMS056z5RM1F4H0$hBH3f@BSIX;N9@RvX2D9u6dv@)P20fb+VpQyfD z3k@^J$bVhW;d0CzCU4#z$WY5iQ4JSp%hcd(&fX8l@F<3T`+^$z+n8^+o)C?1%5bQu zz*0z938I{UT$D@!@1b!};=hF=J3LA9>P#wgr5!oBJK?$XZxZ37Kn{KKB78wn)L2{) z1vaHn+x;rQk#eC2&IH5WODBo)o!PW(SONXN6{2A7erCjXlmx_^fc_0*SZ2EloICxA zboB?YbFhX2z4fp){Unnuki=YkZH^M`AjmDdK#rYuB3gRK*rVc0VOGLL=1JW)a?9x* zMDj(T20M&C^gRW!g%w2EuNLaxeB~N#?<9wv;)tBW1rRClh4?MM;PNPkyX9gWR8LJ| zsPhrHYi5gcBURvD%m7?5HK4XENwR&f5ZURY%T8Lc9)vx+sfE8a(Kv7up8O5KogEJ# zJa;3`Ei{BX!ane|Bc$PW$0ic8;5T!#-xRW(Yf+5UKuK&gnJb_H&#&2F;5##L6w!fy z9*3cva}72>-b?$%%a|EGX_i?*N4Ou|guu!19oX+YOw%sbK>yu3JZv2R+#788DiZ~_ zK^HzcYrxyzIjo+$o0ywx{Gom9J*<R5}60ZuTtO& z)WZ0H6>zvCu+Z-qD9ZVh_1Z@`;+u984JRjfyl)UMYzaY`lqR_T%ZxT_yoPpB1JM0; znDqWEBm9BJAR#`+D8HId1S;H^7vhP~{o(+gZEgb;Jpj!K$7r_2Jm~ru&VIS4iO}-Z zL}cnZ2zcbd$<-~eyXrDemkL0)=Y32F+XwqL<-mytJv3tXYshLyhn3e<=y%sCdQ;;E z)O*h7UQLdNfpt}k$wCF_IKLUgH5tG)A3#>Q9-dE0;}#z8k=Ef0oEcVVrQnBBqq*#d zyDmY>1#)6-3s9GrnO0c6CEE9&;5Od5p66SNa{~9F;EH;pB_u+*`GKI)G6h#(orLN@ zKh7CUN3Bzr@%Do-a!zqBM&^k^tVk;AX4RmEzAQN}n*!2e7eS|O8uFEQ06STS<37wg zSGFmpX7i&$vnu4hbwRT_o<|xa36BmR0>5lGrtS4{FkE*TS8z?Cn){oxWpNNlcbq`K zswQ;XeH->I5Jq3MM2Pvf4dNZ=0P{eO#7pGC{MYNCrdXI}EZNF&%Kinz4Xd$ztGnfs z!?Q4G`5*9%_>5Y;eUJufL@@g<`x$NpLn}+Tc%Xn)%hO_-6K!a_`5JawUSTRN>`+~1 z4U<38j54-c>8ZIsB+j^zIlA#K7`;0HVDp{U8-L?C?0AT-Lep?avXrB-CJ-%m|6)6< zuY{htw#3Oxl1aL!2b-lFc^WtloMb(rPr{8e^XzogG=GmzJyglnAH{S`@hcn{E5QpAJeh#Rv+1YF&HAf)XAk0Gt?DYPBORr zqHpdFLDj;`F!PW)s96R>=VOMH+>JzOpK83n%9nW-!1JX{l}N?3UC=*kCM^uRM$NL+ zAa!6Sh-S`)1=k+Ia6T{RY0}44i=6SERvobxs)s%QNs`x3{Gc&<1xRPEr1hPdkf^Rf zznkPz|Et|N$H9-B^LIxR?Q7V$Sf6?Pbp}L!HR8;*dIXctePDyX2e

0PMn2`ci?9 zy^Ehgt5HSbc{l|o;3c;B{GuhIb68UetH_T_6Hrsa`zIo`>nBeJ!1>#kDb=0M%9iQI z6+!{bsDKDu8JL3)_noHsT`P$DVh6IZz6tgSeg)@cqY!&}1+2XnL0j~5S@H(1xGwG- z)580|vuz~s;nMxw^z0`L-{Q5T@X;$+{^bE&-dX{o+A*+LV=isnxQ?CUFdOZTbugDV zX~R{YQtTFqpc5u8j9=>p@_lF$(CiO*#RtDbT4Mg44Ig(wo!DVDE^h+OQwvSZ8*>i)mb#)haJWBwLjpE7HA%7I@wZN-E zNwhTB8@6@);OH-`fxGjw;RiLMU;CUOe}f^2WTsQJy$1C|YNS~{2-PC4V4l)eYJB7< zy?b&R$H4IzisXHSpCw0`4(Nkd-bcWY2hW`he?{v&fjqn1gv&zr;r!=UXloO|rt8N! zR*_k7AZrfJE!s#-Ya-#C!9Z9sM7mqkce~5M zrr;3Nl(~{gK>_H|{f4z4gW>z-ZBV(-3q!1vP|A86O?s=#WIxnqgg5YJiqbvA`OIVD zyy+?9Zd47ob^vl~#sU3p;i7&kdiXTaVQVhy$sU1*GcR4BB+M7SFWpdIA63b_%>NWIEW-0yNJeOXNo<~&jt-wFm1g!dFV9i!-tZG>U zt1sL~%Sa9y8a^eWp<&>#b&Nm?WG6P*WXu;I5lUTB*R^EG&E z&zvL_vDSgQgfWQuafi(92xhJ%-KQ(o_kmH*F&c7o9oelG2&awI(Mu!;Fw_$D6*D1E zOb&iFtbrAuMaUI-HWLnmbakgGytBFowm+IkbB`rlI%Esged4ghLx;(5_zjBBN>Qc6 z9%}UlU~ypt$#dNY3$0`!*PsF7B-|Q4yFZ6SX9xB@yJ%efx09R=pAAx<9Wi2*qChxL zqpCe87N=Wbf0#W)J&T9kw?b&=Zfj808)WzTPNG-yLh|6)VX%APis`e&(0s=-3_ZPu zNKh?$ecDcF2zp5?+>R5)NA585Z5R9O-6cFN{*v5gEuiy+8u8Yv_t0_nDTJqg1@mYb z5*U&I>rTDIg$w3GoyRWNT#*hsOZ9NxOKbMKh6avU(H~6I8igL`(c>9;;YNN)_#6gZ>1ITG#s~>t_K2ggbr*P8Ttv@KHas0TMA9cKAT~)H^#`J1 zL_3qcK!5{x#b(39dIfU1HHd5|93|fl-36`65cv7t8&#{%k_A^jFb{*bA?v^fv?`fz z?udo(FlZIb@HD{aRXy<9j!n0RrlM@YGw7XlkS2|aaf9m`nZlrhP*8h`dGhfa({p4g zoKlg7D_fVM&mI?e!ukP%V|P(`g)PdvG|@{-rl{n?az;s730e+ZCn~{L=?WP!h~mw( z)7#x3+Uo+%n(Bo^9Z674X23a(9J>CSFH>7+jv-Gk5GufW9PJ2W32WNy0Of}3MWaQWN^ZkroFWU47M zr{=wZ5}h%W`?>*M<&-kJ?-bD}_8YFL&p8y%>jQ7=NhrNzM-%s}LhOvIP`rN@vHe{I zrE2!LSh5e7kO1xs<3Or=7-(Be1Ps<@b44RGA-PKhil({2_Mr_>*(b_!ac+WFzVne) z`UV=$eh05zEc(vj5_Rxqz~OZOaJn5qe|90{u5X9NxI{SbV@+dzZ$zsP4{-mw(=d4r zLABkEiq7$4OlKcuDr7rofiRmEXHMrfO!8s4<20i5O9@hbxL^UdhsPA?<6_gF#K?C! z*%LmOSz~8LW}M6c)qlF&k_}-@kxU|{Rqh~XKdYmP{e5h-*occHzoL}bH1gG@h9q9E z;qH96fN0@GRa*yBp3@1Ope3Q!~e*yeX>L@Ae`1uUql3Ld+7VE z*$o5Ze2ns+Lm1ImMCt~HQN)N3#~vSod!N$brHdMQw#t-g`ZK}}jtC}9cQ4zn&5ULC zfsgz7$Wio6oI@V1`wvyObmQC5Zj`+80?KZlBI&YfblU7WEXR+#2)9*_rpo!V9=zn^ zRy-NQ<+f5}DBKg(PDJDDLQT|+VMFm?2#I7WfgP$s47(J`>mW4{9WrBuRq)X#oi-?y z%aDnR52(iHj*m7i#)z6;m|eSxh`k$y-T^xjzc`qDEt`ap3MH;)8z23$p$lHNedUb@ z)6g{OE8b*1z@5R)uz~P15x!G6O~iqOUpv83>8*hZ#eY6WK~2e0L!(O>AZQwn}mY?o^>n;YM2UeL9$$8-lQrHpk5N1X_(KVDjt| z^r}k&#aT0BYo;psX4KI<{@4Ou8r5k-aI~PuMC{Sm

yAPC*0bz2NT=(;9kiB zGUH|^&NdoG|FtXXe;Z0M3;wvm8~qP3_fHD^Y|b$2xBIJO35{b!O#t+kBdEMC@Zv!4ERaYFsiH@Q(! z7a_GsmaJ{_vuwQMilPzkQOAD;JhODbj6X({6Zj62EsN1TCK2+*-63~Uf?WF$4L(v= zVP{`9T`Y7B%5wcsxk4T$M71%+?;!{;7J(Bt>oEF<0_0fSf=kDHII;pScntL!U@zK3 zm-z8P8EZbWxz}mQ3?Ee6I>wxnTSir4P0;Am5ooaeg>nULpTj}3&rttih_p_Wu-m?_r)$HE!1|{)O!>^g zW!75E&j>AC<>C$I&r`V9zL-gQx#W7rVOdDdC^pcbXTC}6Cio|^>hWy~$kdg6|Bzbv) zOWAKUe)kT{JgXsNdkY49E5SY4R-ioJl6?Ag2+WU9gNTP)!K=~*VsmGc1h;39oLq@} z>Y8D+))R7O52BvId1cZK=ElCl(K@s#*oKec2LMLbEHKt7GU76X=r!U zjb4k;z|^RZ1FGv}?I??4|YLSN>X1QdFTYo&n|6D!8^Pl-^mNf*Xd~(LOH}?sh-G#PyWO zzh6)EpDZSmH@={#9gi?OWI%t^YyLQ5Y;1l(Y3G#BiAkCJ=+tP1m1qG<0k_9zd^j# zCsJg_&>`=2RIPdpv?4E%LNjU9{&EV_77ycruZk#jZVi<_z67oo4-?1z=b6Jbm1LK( zCCv06ghe(wu+xFdnPt2RB`f!0jDl+!WHY9>ZwhAzb$G2bs>)FndGi689CWV6mJK+`0RX z8ROs2(fiv09tS?6?fnlZvriX-UOAwY6z?w82#-HFC;{2rF7D?#b?|y>1br3fN!Y=A zoK@SWp}@XE%x-VQ*@91iEi4IxJ8N*xdqTd}nV|Tu39g}P0R*#*Pz*)Me3MCz#d90v zFI2(E3!<jCJ zbcM-Of(l6YI-nPE<(Rk(z|K*IW-e=i=Wdhe8Q~4Z=gyJ&9>M4#<%e5bE^*koE~KR9 z7@R71gx(K%#KWi#mtH&z>COJ|=6xe>TeSk7_>OS%%w%z8pBB0)o+jzVd1OlXIgDm( zgvOgbT%`hjv~GRO>#0BBy@d)IpSS|eIjNwU&qmR-gSad&o5XcWlal;UPd}Y|b#da$dmsTpOs5 z`G~>?D9%i_flljqqAKze$|K5gTQh-Ap4!ag3~^q@6AQP+Dkyi}9C#XJNYnlj$o;bp jo_@-Jf(5B0eeefUw6qM)?zjk(igoOpHQg}edHMeU%3c}1 literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/store/te3.mfc b/samples/HTKDemo/data/store/te3.mfc new file mode 100755 index 0000000000000000000000000000000000000000..a7f9d68b2297171c1cb562878140b906563bc422 GIT binary patch literal 21748 zcmX7Phd);T`@fxJr>KbRM3iW{&+AB~l1MU=G~Sdl(?-gcRUt_fLW+=;xL?;rMp8sO zN-`=V4XH@K`}g_&0nf*|&$-XJuIGC3@$qNy@rPaITf(;%V@IFT;!~zz-Fu97%-RcA z^bHxcz&e`e(a9Y1k)^ZB4=~>yjX2vQJ7}MZDQYkIipe&4u!wITwAmbk14A3&sf9MZ z_c56{d1j1g1wUcBrmrJc3zf)O-|YY@H2ZzMxz z{C}9so~3Zm_dJwixQV}92Oa*bL;cjJfcVIFZg^ffCq=k}xt|$Gri?BFfyea!FqL09 zBLe$jFqaNs(NWz&HVe`w4s`TxW8M$#6yL*T1@ znSTGt(3E#(j3x$~^!JVuovw96p!6iDoVX6HipN2$>+kc6ZSI|DsMCOf64w%*KfSd?ETBdZH$_)J9Gl;pXPapRSL*>|8M(D{F+61E2H_tIp zW%&al&Q>ywPWwSYWQ^ONYES0BQT*R^l4Q@&En5`fw$n|z;Ocg;Dfk9uvvXkk*Z}F) z@L(!`N|H@wXUQcJPh77a`5(q%MG|CpsiCIKO9+UTLRlLFYE^8&gnZ0lj8mJa(fUdH zGd7z@#>z2kp6bE%A#qgA=!H)i=a93~0^ZpNp!A$N`qpz9iTSdDT*%waWDUrY(Bip=vj!$vpuJq9O4g z2<-X+@shKlyKpUvp5 z0W zHu2doWGTLaUy7MDX}UhgR&5^m_tv4hS2bg{6-ZikH74yd!_ZwJFtT72kGAKrSxYy8 z=0ii|FO1`S7#JZ+ns=evBpAhYRxr$qAaZJv3C0u^VN$I-3MKtRYyCg0yXa?{nxKN3 z-A$Z@&z=)8#Thuw>o87l>0lJ6xsb$$R*b24#<=2H@N;W7?vzbq4_^JR1 zttOHx>}Y|XYkBh{Ta}X*5=2&SpMqiI{doB1UR3=Uh0A>>Sf`;(sO5b(p-!Sq@5~&= zadZI+1%AbawQD%Fs(fVTlxGJphb}*(=_VB^67n|b|#C^x=j^j zRta)Kp8|1P--dpgk5F>{L)3nD2jdRZvC<~(xY5{&+>>HhkvmoN1m6QZ5O5GKpMP1c z_neQYTn$C@ODgcI=pP#VIf(ILi6rU9Dm-7(PSW(7NS*x_pbY1h%`6!{`hhR$W+%**nt%vV`WqGHiooJ}y{d|CID-?u1Y_ z9L>x2g1EahQwFuf_LCwt-KNZ4u0KXrvNg20Z2_#lcoeS6?8f&W)(|HZD`?TMfb)Od znd~c%VEu8Re60_eH#4qNjWRpx?kNquz0Z-acQNEDZNQg-9%RL>D=<`l9o|^%CALD& z)k(4yO!Da;@ND8D$H!Zh@Qo*P>ni4%%=l{ySB5&U>a{ZccvAt5gEpblz*MMBCD1$N zIaBlP5B=eLgN`{bhwj)oxcQ^b3?#ZG zaMMEPq2f$mkW!_PdtV%eLNh4SDn?>ARpGjtN4WRMUr60p1r_n*OgJ3|U*3MM7Y-z; z8%A(Vr5VKj@I(2-|KRM#FT`QE3%4y0LGM}fAV%*c3|(p^d0~Bw%eRA2ZRQT9ee2+} z`3;CPF~z0J#ouls+{A%&uAxsr6$1zUgD0;v)E5^bOj3haqAa5Bqf) zOk}R03peDz6lVr)iW)Kammw_<801Voh~N$t$kWIUemLu!3n84>aMY{+8kJ)`_4_qj@OndEx=!J{hAaL+1fU`2(T38O2np_A_+zH{8Qn-4i zCaf(wLT+!^LYn^bVD6bj(O1(p!UG)&v5~1L@N^VrW&48u0)T9#=a4C23wILYLCJN5 z`RDwN)Cp9>>pUaySWTg>bUI|~G~v|H0N7f#3u;33Ve$AN?3h;y`(}NiMcV_w-+n8c z`Q6Q|HuGwwqg{~DkMKT)+{8#vS~20SRuczY*8LSP6*^CwKi(}k<5&m=*s=~KE# zp96Oywt@VXeb6c?gv$L_AwtI&g`cW(uk?!3sM(_2cUJzK-D~fVAek8i`tvwnG}U3| zhjp+oYyzG?is$W60J$)6w4`MdL5qDeYeSC%4pXtx}W2*qOB1B1) z)?wUHMVUM=O(t#cd<+_P!}VHH7`}LtOkenb+qP2yIk(hE^z=%m`NS*wO&f^88d2Px zKTNJ>2osHnDlC8Kip!fK(OI#LTtCNWDS@Y@lG_noWqJaOmIp9 ztnm4i6DaE{igPX{!tBt4P|KTi-6H<@(1_Dditi9=e5zT+>RwA5ejwe>a%#Bg&*{vLEJnjiQBwDEe9XTY(GZbiu^Cl8Jm5 zM!s&5BjolN9Ek}cTZ}G%->jz?_gI)H9;&0YYysVR#26CxMWU=!8ELoo=AORR%xFYO zkmx`?D9d_8a_4SY%?)aB)V733+6$NylpWnf7b<8QuL>DA*s(G$-eSM*$zU zsGXu~)Kj3#!i={?jUeMj5~Sb$N`h1nM0>fcI9%kux;_A%SGC9;HXZ_2H)8DBjYO)_ z4z4Y`4n@0lptZ3E#rN&t8s7N~A0M4&6_3Y}O0!<*+F?R($>c%6kw(~)sZO7TokT5P z7Zel;h8pz+IICnCDqV0!A*(``RA@58^RD8;1%tfbb&>w=Crq-14617Bf$Ll;JWv^l za~rhibFC$qi~n)LJa@3OYrm5S#Z>rZ)eMJIDcwJnN1Y;{q0tW+sLXH1(1A^Ou*Z%h zkMLne!g_MYt&ogrDUc6)8gOQIGyLG^(nW!MWZvdq&>J0$#wYh%MMwHO()+|;yd?&j13=px= zLuAp+V`S)<04`p18#U*DuP!j-BaQ`8xL*1h$~G!suAnQf`(e%+zN$nH_Z)qpHA-x{ zUy_$L$5Hyfu=*J6ui5vCCL>@e}Do<=TL zhT-g*0N|S?ZW2F*j|8RdMC(=e;M={K$PKr^17A+Ek?&%0t?DprYK$avGKNWx;uu`6 z_(<=(n`t68m-h?=ub_rYGs-{JK{QN7*Ij0;ugWm$yVyY@I588a1<4KD^>9_|I?=sj zUpY$nn4i2Is^6}P!b|{m$gaU1zk*q3=K-`By$JVXoVeTcWyr_Tsqpky70LRul51ZU z#5{O36{qW~;Z*mX*fm28*%n8Zb=Zvi2OdMuk+X&{Xa=l$3Wp= zA+#oTV^zQ=`1v-AtV~zLb5p;dFt~x<6k~Q_YCcTMtfghMH9>CRB}}hsBU5s7AxIz$ zqpQQ|olYbA?vf$SH_JvfMO|tTFv2SQZe%4Qt%WFg!qSL@Mu9caz^iypce@Y-&B1fB6ooazV?W$ zQmm&TbT|Bre!%E&b>zPN*@XN#PpDB#3`*MfU}-fakKbB>{7ikuQ#6qnKh=k_JUvpl zUJTgwrLa)vIg^sq3~Y}t$W~0im*7GivVA~Ak}7$;KL?7=T&m8zQVO^C_Cf6Ptx&D^ z3Isx%;ds3TGe>CW&3%2)0Ts#!(g=KB=CmTHjwbFSd>PHku}Nq`zVJ_vVlXD&xslM|XU41e@3h&=s; z<`tAto1l6i4hA^R730ilYsIb3a>&148DfvxLFS?c=IPnfgxwuab}*&jJAWUoOF2xm z_>w{IA0Kw_Uc~9smPU(ABN+QPj}G1cOYiSrL1=U;Q@6F9{AYg@Mn|>b$;dE~e%}lW z=JDZs#be9{$0KN9dmU$#Im7vsqbO$cftIJ<;kf(t5Mh}Fh*fQa=-v#HRdgGazPaFM znS-42sua}X|AHzP3Zdpe0}LE?V^;f2gZ#2MQeb}w;>Mley^R17I^P9~r$q5EK9iJP_^*M$lxZewSHULgWtR@!^&V#2< zY@i}(GZ9d3LD8%-?yr{L@bK0r6x@57*>t9!B<}7eFdzkDS*94< z1iv0denuFGRW-DvXQPae5S33WhE#MRRBRJS=W5po+KzKdk9~zVCbBqBaWm7}FA6K8 z+*dt&GDiI#*~04?BJ}c;KnT@MShenu78vZPz)AH~Dv`evg=0RU+?#EjU>zAaS=~aL zdLBb~uscK*oaX+VSp(PfySQ_FM_^m>M;z)gBr{q9!6)xIZo3mo1P>a3wbFXd&wG1_ zis^rxc^xH$)USh`ueLKP@&_R-+W>nm-k|w+rb1NzF+6c#CONZuGkp+yi^i&ZlN!|%h0d46Y$@=^XPG-1Z+LiNT$PYC^@=>sPl%Icv2e_WC~J|$3MZ&c`?NF zIb*!rAZi51!`p=0=siyaKDBd+Z~G&hzwa`c@$e4u4vd8tFRl=Er4i=r@qBQT-iimZ zra|-GZSYY1K3?GF^XBMg^8BX}G#)i#LZ+Q1>$FaQ_JJS>I$=snuN8sw7j8Z5MiLD*$oC>GDv%UFf4@#eX3;@LZj}qkY1)h#u?BctQ=Jaf-9wsPPP#6q zpr&*?dARB|F5+CGiyd1lOcJGQF}#jak44r8ztl&Cg9Pvl9+F{nHJ56!0==K%zDQaC>uSEoe|YY zk^efJcFQFCb2EnLYhJ z_b3^9s}Hk33Shz`e(;fb3SYmB!GFu#QPtE4vX)Q6&EG4Tj2aU-H$xgu&s{-+!k4k$ zhssEK#S&aQ7|!DvF1YQG6Ffcjl&8_cP{d~kwEcWQG+M7hyj=rM(+WZ}-M3_uOA*sC za~ouK#^4-PRorA_4=Ys^@zj^AXd-EfQd{cDrCalu<9u(Rr*;xnCfJkSmNo3E=qRT4 z)lyXaqmNDoQ{c*o0iMYmK$rLecxyF<^V6>o&SwX}U@G!>>UwhHlpEb%dvb^j8fwV05gS5lmT!6sOJZ7kF&pgDn(Z0d-%kLuA zKWB17_tt^A%x4f$ufdrLa;Wxj9RN@N9jJ>yCRYbOD*M3U`-X5P&yA{@o~PcmWw7hb zZixTX%oHCnN4^`O@IiYK@<024XK^#S_-};QQ~My=S06&wjlmmUE@5Xh&V&t)kTbv~ z);%ZSos2Goq}&6cRRich?LPb{n+nN-J;XGvgf8xrU{*S65hYt-zLn>3+hhHhr4y@x zX8mCvuAK*(0VC)Xn}Bn9T>Ye08OdbUQ~POiKzm^Z_hSvP{Do)XWRo5&wVeV^=3Pvu zfeDOncEyA}0}%0tk9o3Akp%sm1s79i)5L^BaI;&9)Id%iy7e8dD3+9jwnG-l|w-qvRQ%DNi1KRz$%&Uf-c>KdE;C`wi@$+xtw!8ar zg}O3$ZJx>Uja7n;{RR}dWrG{%4Ui9hm9VK`1QcStQ1pHxb52o(N#7rgt}7hiaHTPz zQMbw2xL8z^dkzjFA5gO?l>9vW7(%=fV1wT*fTY=+kNILmIZ_XgFW&&lHpZ}5?iIX9 ziHA$MTcGNSCET5EL4tGNLi}e%;CJf5+0Cb^{4#YW2**0YU$TLZ|K(OJJh5JL8n8QNQQ11tOKNf;} z)?JjF5M;HuTzHnNjmaLhxc;;+7-dG1uDl*RBeIyRx}ZaLJ(Yv_q0JE9S^%HNO-SVx zE8B%n!fs<^agZ5p zJ_%y6H$gq|6E`j3FQ?0C2ui1$g3fz$=4ROdW9K;hzufuUU3u90dM5#OQ!HsL$O8CjUBNngSp7>aFEOeYg3)e48szKk%P|8v_G0uUC#%`jx_NElc`w zZ8+okHi7!zzCsfJ^Cwa1UChD%uKW*Uc6%M3bGm^3TXo@TdKNqLSs`xCtOfBlMKZ@% z8In+ltoq!5%0(ljH0BhTToXs*z?B%PzYP5r`9oT54a;W}h*1YwZkpo)(#O=$60Zib zuzv&2a-U@RPy4{CJTufZCA?hJ9b)9hneCil#@XOECI;?aWF@|MS+{Z6wM_2E!HxfC*gvsAfIg@gDB z)s$BvXLl_+XGo)MM=tl}i%8s5VFnEr_sA4;e)c#w0pvjn?(NE@+T}rvi0c)o*E)~O zDrcegt$DamYh`uA6hT}UaUYUIhB>-{KUkx-I3Bkugy`0#l=UEt`&14TMQuUF;s@yM zyqM6OM#`0tn%%_t7yn5#d6%4yS3aQHns#D?JX z&z{`LTQ4x;r8JbMo&!(aEH*779*$u%9DHL9+Pw4M@MJof5y_U~~H_LC)`jlvTceVkYMd!i;RYSNhBZkbCEcm6og?@3Yh`!}I&ur! zb|(+ePfJ{Zi`_UsGn%Xp7sjb}JDAmpJ95Fl%;pawTNX$I#@mqgtz6_Vaxmw{QXW6Og|)| zK%YA9y|jYpex3qfhUYRtQ-3n9Mf0KYxH3sjPG;h4*KwnGd92U%Abii+NzBm2- z(C~c&IX@u^P0GrQNc3~=tCt61er+Es)a*r%IL@a0ylgWu^)0?G+(eIt+7P#`dr+mr zgCw=|L4e~3sD@cHx4RKC7j%++$+oo5W{{&>{{<@N$YQU_8iv zT1F=zdHo4;&UGbyym>BxopPjIQiby={UfxWi^7(6FUXBrN23&eqk+Kyu}#0jv>Xsd z@xN!7n(Qx^$wdsd^c$0)uyW(*h4#I-A!MNfW5~P!aVU!5_i0hL2j~RpfMh`m49zfu zVwas@yNW%)cMdwYy@&Yc3h=(x7@QsCP3FCDCW8-#L0cjmZoBuOTl*IB&}Rrv*$={z z)>Pbdv87nUAzSvPQS1)6lDR z5-c2&(BV%f=m!O&w}1jGHYXSyE?lOcZds9?zg2i0u$?sFy%o9p{v@8NJApxa9>Jva zDbxu$3GH~U5F*sv= z7q=hrBP~j6Avs5O6&Fskf||qh+QBKb+^LJa*>Dm02RksnY7BG_ZA0aU&rra93-V%9 z()Rlr-1}?F@C93wy9ax?iNndXg5ym|4iiKM!?s)?{p)pT zg5h)S@5aBR-r_aP+3|!v=H);41;bI;TMCbK$kRVve5kRJ=bx~ycy0U*`Fi*dGdklR z#F-so#U`GC_v1!dr3vJ|Xbq}&#G<>Q7Nhuz;`Y1u;HTJMyb$a}s$=BIoOel}VQoXo zI{(1An=fcZZWpzn0pLNlJ1`!A(8<{OZW zN!d92=3)pFE28~7|KM(ekLW7484s#oBWC0hq&u%8p?$yLr^+Fd-MyD-LYWG4z$O?9 z4dg(m?7!Sua(iq7_v?S{Y$0gPhb*3~C^C>#CQCS5_JO7f%Yr;_Q z?GVlzeF!_G!!buU5#rc=@OSxpqMm#k0++nSy_360Lumv^^8p^#Ph|CW+d)COB-Bg) zpcC@*aB=2rvVE|VaaH%{>|D2*k@s&!$;f1KXvY#r+?S27%T|&bbUlnuR>9IX4zW&+ z0b@5Sa!$H|X+3rTuHN<~3tHwvahw3T>i7{#f+nzQcp8ML^3fMSsYkh49Iw4}8| zZ@43|mVi7ZfGdliRmyh-e(7ib?T4c;Gq(p%$hwD-qbX5gR?Q#jTJ(=$t$ z--;(mu(1`<=*|W8iCp}%vYBl9osUOWC?b1o1fGgKg6I0BL~vs}h(^~DK7Vr(@!6TC zRCd#Jb5B?ym5bkU&XFCi7jS{@1U%6my<^+(ZH1%wdhh+0uPLL;BpBsnz-T>#BnR>rKl*PrcR;uMJWk89SW86HsE=! z>j0Pc;);Sy_y#wDyXX&UZaM*Rbu6ttv4k{UzCm)9`$D*_Jt>G|;Iq$Lba?2EqA9;n z?pPYs7)#>*g=@V!RWh;ATH{Z2H^@K@u0h|uVQ}K45)GV} zz)q{x0ml&!dTr)@I8*LJcFgvN&84jwZT=tdn7A@fPS+-2yV=kJu?bi`e;} zt%%O{UJ6qi69T`|ACqu7E-QThIHN39 zh_mZ2qJV%T?f=#R2^?44e=iI=)kLX8sV_Xt3PV1zNKR1U2G+#BgoyKelqLNl)b8q4 zCgf*6S@y^g@}kya@IOH5jSgV{=ol)??}e`QDXfT|9lPn46DxX$1u6cI5Vo6EON0iH z<6*C%;7}8uO}vlltE9j(M*!tckHDuSTUJu`8XKBf!ixRUViGq@KyTtKXb`NR1i9i>T5z7~fJ?-UgJv<*t6bYbg0ggaMEF?c)$ z%8bP5T`wPWP#VGMr{@s&U2*KJxj{_!{zve&rvd(5&V;Y!(r{~A15`N*@U+z)s6Ckh z88bMz{L%;9wemC#d}&SYpP%FgmpL=BlgM4Rt&x^|*#_#@#i4T85f8V>L(6V0AX^A} z`MaQVtPR;de1J9ooB`st`*Gf;*C2Y$1Hknq4Y;`Wc(j{ zk?dE-j3`$gXFS;mP0RnH$}f*hwipZyvThgL9@e7XEDNM}?kiB*S7IE8sXl zOxqH1TiOuBe0N6A@d@x;qXBnKBvI~RFD$r}Mjk&-YdOh_k%n|cu_Aq1F#K#Doc(AGr(PyN^q(5gtFWStqZA#Nza-n{ zeS!ShZX$y8GaYYK!C3#To_b`v&vC0{bMUAIQF1jrw}oY*a~+| zjj=)CGV@7Jm=2DFvHZ^;0+gPGBE`>OcUA>*3TA^uRWeL{ZiLnnhRplgXvpF`#=Cp= z&~-}`KyLMCR(027c-zJY(Y)?!uyrCd)yu%tgVOX;=nCABxt|GsnFAMl<*>BRz$AFN z8O$o|V-=MLAWugWy0`rWZLSt%*@)1;VpnO&b!}XI*qZbHuPHoAosM^WEji79UP17V z1MC`OUiaeEH>mld1&&wdz)j;2;1|=TW!-tWOmT>F`o~FVoaTY~j~wVL;sy5m-?Phe z?U0YR`^xxv+6Vm#GzRpZb;|B30lHr+WsR~PppFcWO;OJ zT*>kcT|~p>9jGFf3tN7q!qK^jDBSXnxisJinLV)(+4_%0oi-zX3lib+pfP$$d6Uk- zRuudE7Z)~-;QyaFB8-F_>FRl%WU%e!*`#+L#lU!&OpO3^?n0R=6N5vgOxZt}S ztQAd#?xt&~vfiH1(kGDnsS#C=G%<%Q*OUJ`{=>~YpDlI8AJ}yA2lV`q;N?=X$ZLQz zxI~0D32)&(*VzK8)BeDy^8iV4+|8=ko1oRgYbf-^mcfkyxZvD4@(J!ixw3Oae2on= zqpOy4&8HJmpYghWMo&mx>QPot?hd@Fv4DRPq10)n8+3I#!1p9M)b=o3Rd!+rouavj z9GQ~<*}=LPc4v$j7~f{4JOQNwzkJz%I9YvS^dqO)`zW zSl?OEK<9jdj;dP$*ie^?Cu$9D8Z4! zOt~z2ZKE)*Kjgqk`TYkMc!xsnB{zCORtRi|oxo1xBg7dk0L{c5?0(%@fD=2A`%|6> zNUp(MUo=4?ikI`f`3JGt19X~U7tAqO3+BmtAwG02oZsuthOOs7?cWfr8#E_dwrk+= znp!yEZ;A7dh`~cAOR}}$2(0*J4jV&WLdw>cAe5@Z`iZ=RglJv7KCaHF^bF!zxe3r# zt%Bj!l`ycel(0|3Vd1GsuFpDH0@} zYY(Y%=CE&vI1KR0YF1Ag*bqzt*N866jN&I!`zP@*V+qsZlToQc4DP!qF`EB1foscW zIC}9Zd~S1N9{e3-Pj)%NqBS*m`H3I%#J>-n|J|U$OJq^p;ulKg%_9q?d2_AjE`$oE zqSz@vrs|158^1yl_N-CCfOp%;n)iz^++LO%zK}w`atRbD)MTy(AB4`%H*j`z7^k?6 zlR3J!?1^xBo_{cc<}0_6O9Q-a$&KUmy0#+ zr=iff7}YmECI!;=cu+%O)%Eu$&?bRJ<(k_}eXs{4P40p?*J!l%YbCZjQrR1S41jJ; z#kEpV#K~J6|La;ymj24cpo<4k=3CIJ;0u4?_m2$_<>iY?9n*;a$q+U&b{hmM3nC-w zPU2rZ#^{z0#4u?(+U1Jik}vHN-wY3Qt=n2!gfnLHKjqmC;BxVNd^A4wu#Sutb-SBnYLW|3-B%zfq66xgIz@ z^)S;p_yWcLJ%rV3e(^dk{-Ey>$sX}qL(hdJ;Nx;Prne&m&7GaWOXMPMI(`8vDu)?| zsCsBy7Y_QX8zH)D0hHO9vPXaRRd>EE#CM_w)oJquaO(4;@ciC&beyFH^3G=5MxisX z^+GEw@JI$*(}(c>W+>~DWX=TtI55F>T$u2D7buekS>{GMjU=9fK1Rw>i_#0{1{lxN(9Cb z;r1rHXcvWBV?vQBH3kp2chIEf0AJM-nTffk#PU-Z$aoom*4y3CerKGWlIzSZeW!tE zo|mC}h%>Gc*#kRrwm{~yDNwQB9n5O|NnYq_kUj0q{iZnq^^N|d>YfUbYHUZ})+Drc z+>CY#FQDk1BP2#T!t1a~?vrDgB)zW?#4i)>@0kDvLwqFV!%`xk(T!#W({TUEQ|Qd= z_Fder0M++W!DVI|T;ueSCo(+VE58r21=?UyZ!Y;Tz?+d8_NdTQhaM{|amzJh;GY@? zKVF;!1LrmrJCsjeFW?7-W&$yiZ@4CLS6TTZ|A0GlBhJ~N%sUs=k9(H&()-P2P$6Lp z2Y!n4dVA5N*6tx_oNPqFX(J?SV=`GSwGr+Oxxvj3V;Cay1s*G;L!)~rJgc2xqyoZe zZ~bC+<_~MI_A|#c%OUExT@Spujxc&`4tY9$35|E(U?ls6$ZCBH&T)$yDF~UENGxrT1zz%I=688dN zyN5l#d@Ke04gpYJ@dU#Xb(wrN3)07in2S%^$?+@BoXnY>)qKfUAokG!O^uBNE2(H4 z+|j*qOelb!Z_nqQ;cX{c?mMBJE+qBs51EYz!SN5^H;FeO z>A4(S{zjtd-fyI`Ya4W)PJlG!`HV_m2`m$lfi?0uocfoqIafw%;CP}Reg{hsJnRIV z{X5a^f&eLx_NL!1r|@*LI+2?30#21Kr5}^qxdN3}h$`<~aLhk-99O(S8RJ&i_@WLS zU8~8u6N|wu(46}1`9@s(9>KuLmGr?}FX}(^hud}OCS1wbhvNKZM0)AKuRSlRZ{7%G zPAZdki6f*;zn*B@TxUwmUeLiYLzq6-3I@ZqvHQt96q@@Qi0w?Mjp(QP+fsn<{2ls0 zJBI`wxaifF+vn_njklIc=t%ohj6D=VRQHya!~{oL)GXA zuQTe%3?t3A*+o85nqBJ?spsZmP#>_Jl{V4>m_vUt|sUGeNjdAE;-ZMLHvXs!SvBwvdpy# zba>yMm?=MaZ5_n;ZY~@hnt-t_NqCXR1?oc=q4M@@k{DjZl{)f~S~<5fp;7l}w~rb1 z9QOm~A!$4=p#?eX^Po>a8_y)hqV{_uTy8mRQY`5WTEA4uR(%U5Oh5z#74uhds>9*v z8b6dccmNXn3g}2*1$;l$$J3Tt5c{HqOhzVwxa(3{YP_D)EindnauP_a@n*>2KSR}x z_#me0HdB<^!JJ*J2hr31UkO+Km-Dtpn=~m6q(MlBNGMGTz2E&3N0LZno`<54aFdWy zG!c?gXfP!Wl7xEqdMK4h19EgYrUqmviG#S`>;3`jvwzroKl|D1S!?Z~nJ-JQ&o!Av zxu*aT^SE{21bnP>6f7SuN4V`%HrUJ$ANMbGI;1p8C<_=sebN@vyl5>N_xzX8GUyt{ zTV2AjVQpX|f_Y_Usd)YpCAwBu;pte(6CdwjS~4F}H?gHLKjZQAxTE0lL!0-y`Utg! zJ4v_W80G}_!?El=Fb?R%+|(&7e9>xlDQ-25Fk44G*JVJ-Q5)B`yhNLyJ-VhpBbBfT zyzk;hu|0>7 z(=d4&<*<`A`|lCn>kh`v3cvG{NQq?<1dy@AtU+asBaqNJ5&?mCrOJPsVUL{&zv{Aw zsp$ssT(|4|hWRrr*xgPWrc0#5r4D3k+l%gMcwn=7GY&TDvzr0QCbVGt z-3FqbW){-3w4{mwAZzE_bhgcr41VSENl(mq+VDggaBU4U2wNz5JiCthyU#t&p_kdVRq^=q+z(=g{!+{B z7o>X6^eJLOJT9>)Ed3fpDo=Ds&CMIJ6Hj78#ze#|D0k{=PRCxQV9E)4A@#c6msM$H zQ)I6vLZogBX8RQ5&|d>lBD3Zft_Pda;UGuJ)Wbi~pUuYE z8AFA+=4#ygy958KHiyTzoMLm`!g2aXAr+MD!{jH)u(g^%xi6ODoAVkx)E|qD!e@3< z^AFyUwO-hKVKS1xIkD@#5|N^yP8HSDC2?N2`HRL<%4)2@5ThVOTinIXvR!zy(M_nV z>(2&>b>q_-Z>fgMDjfCFrVBm`u;Q6c$+2OXl$jHX2D&HAy%Q!gVwzYQYt3GI3}WXG zrjpg|sqCj^268;DDdI;K%C;R9EWI|8G&P?leJ#iGd>5f8@FC9Z86miyyT|;6Q%Jd# zAT+!P$6prvNcE&XPJ3Fh`|cLwi`&Jy_1iP}qs@+4FY06$WA>urXDNTY$(_xAo6ZJa zc#d1H)ct3!1-2=A2eyU(~#2m(& zCX&o4P9z=b!9rVQ=)Mz7QPI&#L+QYURZ|k~+TVlQ(;%KbZA2Hi6RO8El)P z7Og+6&D%^@W5nmyD{3-I77PVxIT7Unh8Y?H<;4ARkEu}5&W)w2s@#-pX{78mq003&swJ zu3UzPh6gAn|0|EzQ^wfn4}6k_21_mZ$cBAb4Wrv&-i}rHxTu1R-H-C*;=S|NL48quWUS5;`kSyhrCuajjfj0tq8&DGFj_54<`#d99k70c z(=#_CQnLi(`BMdf zJ6_^>Wi=M*QN|pH>ImyesRVh5? zJlUQYOfF`#1{S2jz(_lg}k@Jr0#JNaRK9>qo5XsW8OA^GqPaE`W=8fd>lT$~ba7Td|>*X^hN1qp0H zPAdHo*}{W6m$HzRGf7i+gK8VI$>w|$=3Kchb^a#?=~4Y~+j||;Oq@y@%1LafjW3!1 zrOS)2GPYFlKX~1wNX6-=NaI{Mx{l~bXM`_7YGDRGI4%<&tn|mPwmw3mmmHbr2%^{3 zgr(PrUjN$d#J72n{q-)`7cG@e&(h@)qQ3L3n+luo@Dv|%5GYLzHyzdEs>_Dz9Vg`1$|E7l{;Fs#;?N;4kr;ca?ghGGU%-EmOP;Ch7Q zs~~LjWcJNWk%qOV@|4#nIk+!>nqdLMmAW*hs0hP*#B>7Zh;<9_Jg5+b~KRHHGE+A4!%Z4q&b^(at_n0 zEoXNNx0336XG*Or7kLelLkS&Ca}r~y&^Z*T*X|1kBhK=Oe~+U;F^>)LA1>=#DfW6| zj~(-P4Otvn30a-!VU?djGkmkCxZ)sArVJ6v6-)(rvkuhk)MnGRrUJEQh_BGF_H(kC2kqg)Vnp(ogIl zuSZL%Z-F7LY50yLEk()b;x_c~x0_ z?Iy;xq>p<&sSd?!ro#Q?)t6SK3(<`HQn=3IchgdpVp%_q7sP; z+Cq}%J;{Ujb6JwBCfno^BRF=v=YJks@*9&rW-M|FHBr~($_uJLBX&~@O0J$_zRnG@ zu98HS5`K;CHwnkUg*Hqx|MPFmu?9Z9he*Y-y}17A3pRdNvJhiE3x_)tpklTY z7c(?4GBJbP59?CcfYCxO&lGOX`$;CxhSIuqQ&{znsW@i1MLPVbEsefe#ifZ2h?!uD zi=$@HaP3#*U7(INO*ul^q{V3UJ4=Dv9i_7yRmdU#mNeu`5iOrTKuEUijYth68WFXF z?A|J(UN)V75A_y8Qs?2#-_|tWvW2~@3}T_31?->35E?dipHNujkNp|SWKdE`Q-{t% zikgjN`p#d1>w`(8w9uD&cUegLpYAKw^0>$13-d{N+(X%WH?c>lm`bYV!)SR>GvcEL z@K36bNX7w2H4Q=k-jU%o}dJX9+K+<3ofl|L4xV0;W`cn_odHOKRS`Q)Nx;#Ga zu)?wQU(7Rav`~NdHip?AL(7g%l*g?`YsXsrb>0<4Z$n5!Sj-&F|CXHSo`#w+J7w+$ z9pXGNhk5POL`TFY+Mp9Jdm_lA`_g+-(x}AQu2ZzwF9cBm$DMQ@Z^eo}wa6Q!$qv-j zvpF(1=okc0fBOO!`=vz8vGbsQY$2X1?x%pu;W%&9mp}j6j>zl^QZaJiWrohet=exG zy~=?UCJbUKdE-gDWg}V4jlw)lBbx1!gG_O6lt(Ye+Vl5FPRxX{8P!&z9Xu2F?<^$e zix*I1qeS}mzR>c1)0m63HM#m5%6_(i3>-v#)QeKw%t{ifO2j#7@(!WEy-Fr^OcnMz zR*~*SZ#tO0gXP5sQP5Fk-Z{&d0*o72jP5ji_);#rG|mG_i!5<#_hq~>_<^#S7fEl1 zKtXn2gsDkV>N&mw(dEPV>Z1j0m2VJJ?>B+@)-K?)Px#{gkiJ-1kte$onN9CuAM7<_I~GaJ1cmX&;PS3 z#7S&OMi{#{#gyB;dCuhWO<8VNkub&IKxX#Z9CJ0Ieq++t1Y`HnFbtixPGT~9kYrWh zBxbPP7_HvP#a(%|C5pL${2!lFLd}I+EclAZfr;6hr~lFu^`V8hw5t-QHV?=6$>r$3 z`vj(~&|_=Ux`p#wr?ODR$Aa%X#zq}C{f$XHQ4YuIeTXcK;1S({xKuKT*W?FF9zXto zlf&Jy`$hr6w+!bkqwX_%%l~J5rUYMv%UmP0XHOFUQlB|3%EAn52?bkxJbq_w`nFlO8*0GtY;VjvCpz!8% zdY;l{Q;?K!+cX?9KYMNV!7MCP8xe22a?$Lh`^pLXxNd8h)0l|HJ$j DBB%Yt literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/store/tr1.mfc b/samples/HTKDemo/data/store/tr1.mfc new file mode 100755 index 0000000000000000000000000000000000000000..a58edc7731e9b762e2f4549e0451c08f1d92322e GIT binary patch literal 15768 zcmXAwhdA|r(~q@UmC`v*MFd7anoysqnUJ?{4x7Z9jzto`=$cFi2zz2o#D!d- zPLP)d7KJh&-Y=|fUE+mY0dtvZ!BSe{=*?6VR{d`#y+8^C4DLY6%{0pY_#eENXn`fl z+hDfp7%^-trT^)sGHK$f%%GkUtL2CF|IMtI<|O`9q2Cf&AUhfY`WMHTH)ef|QNIVv ztf+?k$DK_ABF7nv=?VJa+`RwIWFLJCV(J2LRCG7Z#5mXu z>|!i*24HiPGQ-`U@qgcwVhablR)c!jY0AB2Gu1QwL-vPM)4AKLIa^;QFb4cFoHo;b z(96nZg-&?=ZzlYXCB0R9pB`UzkOVy!B&H3KWbq~mLJri!qJPIA=57*QHu#nZrx?)I zsm=eJ2|D3OHmu2Fa-T|(dpS1whykXJhE|;svZpy+t(pUM_^J$b)O&d4R7`43(-0nklUy zo=Z)^;Z-l3bJ+u%XYT>&yKk8nyDySWC;iAal{NJFf7x(^-NedZ9mDxzp1AnGJaW1` z00Md*!-Tm7YP-CLRGB~Y@h2r(D__W@+?AozHaT>yejH=muoA@%|HJtQ=TRjoOXOdb zhTL|(cv@x?ER!z=e^CyE>|VyCZTmzs=XaRK4~5fvcSDgUo(uJr**Lo^kN%kglsoK( zp3FBmq8LuLbT4GC-FJg63I_0XQ#`E8|IR?!XXw0k8l$R4Q8)WInY;BanzRk!?({xT zDI7M9_~%BdOwW^hF%}U0>}Pe@PzbR;Z4bACE?~Li24qgmW3WjX4-H4)fu^nC`r|Gf zkc%R#{>3of7RZ!+O(t)iE+yCZT!c97x%jju6V>#3*diA#Anxl0=>OV94qcjr>vr=% zz*~*1iaHG|TP8v4+B1;OHHB=muV1p zlO-?|(P+HZ3D}zQpFpqWA@-eJ2rrL5C;x)va97|uc&wF3PDk8g)dd;Rz)33-?-LB{ zeK%R-<0edn=q@lEcE&}p_Va_4V;2r5WYU)T8YJn*96ZY{2vSegiN$z0*a@$pGU-;dD~+4+M!4fAYBP1p41OLCwl1nWhswXj)-JTi2D7>}g|8gsTR*<$Qxkln&C~ z1ughH)tKfl=_B>$zOTJgt zLu`#CjTYc#Vn%+$PknwcIO71y?-bz3K_mF*%?I_P!Vnes3DWP&qvqLmw&(ZNsM5)Y z4_@eyZ16>wU8?jX=MiqHUPOQYK21M}RzjT6F#Yr+6KNSkBSH0^&o4-ETCDmqH^j|5e zDQsgZf8W6clRhjt<~!4Pel~MWD~=P|O(3@59csKZW6NrOM)zi0{M_cudGB=>@^hL= zbdNSl*2pnJO<|^Kb}2-dX9q{V#SdzOOg^>+q%@w8OR0Cs1I|@= ze{dC(Gwwrg%Zf5gYXEgU4ybV24*7Ouk^_6cA-_ZdjFq~PrfSMQ%rJz5x-dNG1_k~U zCSK`q?$`qeFg$X!A7 zT=YRSz8~e1rBGJlH_AY}DBBR#6B7mpx#l9=oxfLNXX(@(seyZN}|8PN81+AfxbXFYPMtf$v>a zNcz$ljn!f>7pE@z*vfYJK94P{D@DBqTyfPo9yoSanWp`hPw&4Qg}m$eXceJF z^Jl$BYl~`BZ}J147++GcUXm?j_7s9s-oh{Yw;*xVk~W-sLr;zO(3-(BcdfdLH3Jc>d zGjyvaM?`R(%{|@DFei@S?80uiQkDXl;_n#ilYUIgw~H9YuL5-2IkauPhdEDEX3g44L+3%s))P$gKtDn7w0L zWFm8E-V)#r&Vd^LrNA*)XZKtZM*2i$ZM!c=wTZd3R3^9 z*$lXqLi_!lkS=kM75SAg+r(=YL>YFAABf?IC14g;1rRIA``lxIK{rQ(qb}Nc9XM z3h(HWTnUrdpP!h(1%?p0s2BzWgkWs$7y9U+GX3^K50<|=MvpbQ;zCg!%rXq3Vb9`W zXMs6wnJdElzRg9=W-^?j$ZjJ1@*guR_&W2ZTbrYK>C;T!*@>!_`!FM*7Hw9y!2R2* zc>d!Q1bY1d&(aGh?T^4CPyu&cDrnE2&!9fr1Wu2xhHN8iM5A(elCuC}MGxSC`ZQ{O zL>wai6M($VMtaeD3Q}SYvU02UG2C4lkoC?Q&K~f>4kvNAy*wQphRV@z+yWB2i$L4t z8-)6NA!~#EfD?0vx{fA*!bCV|-|m8g%?kLUstq2hpJyyv!f^p#Hu7!!021a`fjd%# z<}TU?Txo^GP+bzZ4u4{H7ka}9uO3X=sS0_wCCS4TdMKyYi$cDSQ1Znl=$oAbUCEuW zZ>p94mp8@wD`3tX>qSV}-i^lR{J_p$iEZ}u7s}ZOpybn8FfhJ?_Fb8vv6)X%Bv_rK zYdoUb&CZ-_2j)Sc#uRE_3uW>T_OZE0J_;6`gv%jIaM7tq7+g5TsH9zjH4<77zWxRy zu{4tIurq{YRv}8td^fr2af-atn1Yd<_sCVg5yek+p`6%O5V)HU72cO&@b4P%)sSSm z_q9OAk_RZ0O9_rNkcmnUvJ1^&QtvRNz2kztyH0ajEWX1cp_>r*UK(N?!a3&VUtwUC zEGpXUC!g1?Bi4!EN%4(A&=~82XpIxVDR;wJo#n8=LV>p5+)c=4M<%y!GyGHaLnn0; zQj*O}9IghFx*g%KAB1L3{g6vSbDA#1+8ou_oxSG zVLTUx&qScdnxk<2%?k3R;}P6?HNpyPJPuk#>F~|T7l_g_8iYJT9WpHBY=Q`xoTmi;-2j ziv&#`BR!cs^!fagDEgTVR;orEkM&$cYwj0}J^2~#KK_n#1^;5C$zw3v`WN}%?;*Jn zLgbg(QX+qP8IopIc%d4>$m~-hW}I1=vt1NM9)G}jlAV~Ox08k+%}0qE9rAp84_hi) zkyyCh!u`vBApgGc|aOi9NOX}-7{8Ho>g!d9J8 zzwJkQz4M=BAd>z;B0s+lPmKFg1CI}_$I#UkqIthcdr+Z_Df=n z@i59K%RpCV0yD8?A=H0~CJyWC=%3rcOh)))2<>CxS&P@4N49>X;-4Qz2tC8_&s(69 z-x{UuW0+{=FHnE(DvADn1l;21Q|BGapdjNWt`~dCS=a7Iu9mssrHi?^_vs0ob?qby z;ZriNRtJ?ui`aZ?HbO#fH0NH45ftn4;mY?{pJ0;hkxEbR7SJupj z>!PT0>Ii$mV?Ee+JCYtb76;8rkI-cPcFGgVMdAe#@Pg%MR4;!G59g|)_B%1SnDrb5 z6kOR$o=bw&qA`#x8G>487RvnhmTD!slKbTmKC@D7c{l7Ax#U zIhP@je{mn|Lt=0VWT4_&Ip~{}NL2qbW-LESqVvaiGInp6(3QUM+2Sheh3G%4+?)hG(ls#Pn+UfL ze8TAOpO6)P5IS?Vv-L!+*a8iIF;0~sn!~%nwtW>;%7=o3mjI2Fucz-tUqi;rZVdEk z#fMZFFBZtNvuZ3z`Rf8arkBq)NqA00EDlnAc0bhUBr;d_^1{7`OCh(U33tw!ix>B7 zzyOO?Y~jTL%por?6!-KbF;XGq{m^?lXInpHXjCxeSC?^03k)FlZ5-I-d>vd=tfz@ZX%N$_h+W~Vn$bvX$>diP^+ z!fGP2c^tN1SO=?}EI?A|AnhF11BHPE*xsOvHTT6Kb&D0`x0eE!6`S*?jiS%-_sr$k zh4A^66hz!shY^e0u)!gpZ0{`x_0Qs1>s|>=Up3@Ni-70zne)4{9tO|5!n8CTW^T-X zO@an~K<4^7CR=on^lmr~^Fn@NO*jYU4?aeTt^_Evp9HR&P-Hn&(i9$5*#F@x-MrJ6 zoXS=t2`}F<{TGcv;l%^2qn0#aZ4yd+y$f-k9b~JL0S2z>BDOE&nW^u|U|XU^??}oq zg&&_V%{_Br&dE${tvE^J{eGa#i3F&gTTXQT-as1}CsJ1%P8%0LWwLIS!t*=nGdZVv zrYnjEUdMabTC7VeeqDx%%O7Fb@DKB}a3RXq&Lhi@h|}N4B$>j#!}NHp0eH(9Qh)i6 zbl|i&ewg3>AahMEROTl`ZTAOeiDnGyx1D3E$T$SO?Vt}W=fFj26Z(qp8Oc0eKnHwu zu?Je|McZ}I=4lG4^LvTRoJYvBx`mv~)TJSZ))MG{Ln1>nAuxTIDfr$-zu!^9*DJh$ zN$rDwA7;ZlQBiugp$y)sH4*tK9*TMCu9ibW9Amf?M#-<7&D`CI9;4k_^E?|m1eJ?SDGg9AS-K+dzN&22^J++(qn~oanULD0aEM1>Q=1XkTKDf}A)w^ghHtUD z3mM?ncPCO^jr4=G8r^VZ5~NEzL2$#HEvhQ)kx*+=#; z3z-7rEO`CO9T(i+%h`G%8pI;Rad2T19GgFa^1l>Ny#5JmtA03ePPsF-dc{m|{YBuj zI}XB+6(R3|7!hpv4NBAF*gY#2Ht$J>M@E%6r^*@RQ!m4Tj4Qx*HInG&Yz6y+OX2YW z0P#O}O}SwNbR~VTb9o_TjXQ!NS2~O~CBjY-ebmm}1-lv&iL#Ovyj#2vDlRlb&Xfwh zGw~4Ccluy+(jw@;^&OnA`yjW$6dh091QU9FaA4pt33QO5#r|g1sng{USE$ZPap#4T z*+y8R%Z8@TOCXEhILoUE^7CFnqC_iQH?M@u72OHJIbCo`S02_jUSK&0r$f5*N_6IV ziUML{jIpyi9B4{Lw}m@l>P|a{<1S3{U3_qf-VRt=Za^ZOgsI)fqNj-dqlMtQQ5KGFDJ2Otg!o(alqw~f#Qrk~GtVOMNP{kvKTu`g&%zm6j%+IiH4N0(Y??dm-nP z^*z{s<`psEOCxE&bfIRW6?NJ|SeA}IQ20pzQLnrLcZw3wah4Yh1=!$YGZ~QXQ~;@o zn`A}x0TSG30@HDGg;4E}tBGV0E(VU|CtsP7i1V#9S9In{zDrC-3QqZ4aqt%cg1A0Sg(mRxb(Lzc-H z;@ZMox-YATux3ApLBq2kuJQza>p7v~a6YY1evdW5MJRjzAUxJw!&cPfG0olCi~8eP z)agtQS@zTmDsEhWh+a#m`+jcbtmO_oBMMlP5`+tX7Q)@$T()@FGrGcKJI;H3kp`#r z5F_nkNKyU-38`#I(HuZMnn49~=3z-NKd!G-hJD(H$z}e7WasBJR0=vnvpJq*<^07^ z{P77K?0x`sLbj-Q{wa|VSI38%GriRHEcl)tMw)x4iL}L8)Yra8%aRCLWd0m(Crm(; zcRs}UQ&e@RVt$o%;jM9Tw6i}1QF2?!X7LmfoLqtIVp-aC(T|9{X@V}xG;nI$3>)UC z;Mx=&lCehz>DrrU^GujF9ACtI+^tX6dR;~B%FA>@NQoJn+k;O+bq4>&r^c@vP(p#fInz-Z3`-=`oc|N zUf>-%M+EQe2Z^EtR+pL^M5x_^5kVOyYWf(B(Gw?GU+cj3c_XfaDm1sgL77z=glta% z?Q;pV>{1nHMRE?%d5%!qZ%r2e=%t@s+`#*H4GOn)gOhzUaC8Mw>Z=jjU;=bT<)hKV z-^e?88(QBuAdhb}$nxq!xLz3=8Lmg!U9J#Za0}!%f5#BR3cP517DD$w!y~(WP~eRi zJl~Rr8@_E~RKJLlt$g)_rZ~YH$K4RlAmk2?q3inh@Ory2E;z{GX+>KoJvarQ9>k%` zBYrApb(Gq@)1>}O6+q@zC+Sf<%xWAtj7C1MU{Pr=e5<;Nv0fdhUH1w3w`$;lJN(r) zy0hsjx1&^3bv>#@u4X(Jyo0vka?~4efi-Fu!GEwAC52pJAYuyVxQ5}LV-j?@Gn7KX zX9#`tANuvb1J~G(aQC+$`j-YWief!9Pw)qfr+;I$n%_g&(Ull=R~fXPU!Y~f3xK~b z9y&YC;F=U0MRSZ%x~YQf(1~Qy)-=OyV;|N7^+8mKmceAxHX!v&fi5?F1T*$3f_dxv5Uo%r%uug7%q@aHL&? z8E@C7`Pzr8lX+JHJ3ov(kbC|=HkEc@2`DVjgVv@n*!S2S)a%)di{Bhr-mlF(557C| z-?%_hjq(T=*L`MK|M&l93RAi-;R$nDEA} zWYh}6A-cR07tdagWx0dsB5VdqJ6ADcTd%?OBeU!sS577}URMNEHxD&yDV3Qsn%NXUUf zRK8_{PJ6oGzuHF7WxAmKNECdRw_~iivmxtF4>9jOL4&zRK$9@AVzwU%y|MsC?-(OL z=Q;cuEoKtfv(RPiJude9k0sC@z~~(qWn110L;j=vXj!uWp2qD2*Hi!C{$G8xOg#(V zE!)U5Lq{|c--)c1(fc!wa*o}BA^-;t2DA#M-QO6 z6dU?}t|7P5w~|F+2F#b78(6ulkxWqlqT`OtH(E)Br!(wOeYGhXJlgDdE->?m2JQ*LAdpKL*7+lX9fvUu7WWNhoMIMifOg=GsxxdhV;=smecej5+xW%L}Ep8bN^+s#o!NIIm?A>hB6^^R1{X0 zM?&-Fy+q`=G!(wx18MpRM3$$W7=JP(RSHdbD&#-1SSE|6{wl;%DW-6rTNK3pD8o~m z7sSlH2X4&l(KpQ1$OWx`ByussT+*$@rAfloVWW$QdD$!69CaBLB40yto(;6`5F`PC zu5iC$9Ov?6GqKi3Y3O-xvLL7c?hE<@{W(HZ(#D{3MH2k{t;g7Wnue~}jiAa>hquli zxY(B)ZxSBJdG{5*bBi}!VaB<@WS~(m`)I`QXKgt%(o&On2B?QkCz68r3Ff{pcPEJa-YYx$JSf<3S7!+{|h6js}aB8*yIT zTloF{3G5M`Byn+sjM_YhpGJ`g3Ox$ORE3Dq(7K>ZNcS{Yt?EQ#x z5!Fmnix$k8a|U?c`!Rd;%`xD>ezw_u8CWFUg-KgRP{zdzgW2DRZ?ibcR9mCW)*O=O zkPJ%se`(FPOipRKBc4ojWV`AegdX{Q7#0Jl=jwqc`X~W?aom$SFvH9)k#tf8vqP0= z#tCs+_H8pBarnaaTKN(tGoA2i%{H9Z)PRm{StRad5c(`OftcBw$&bfraB#4LMs9Tl zEfpnnQ`KVoy#wS8E5Y2-C8*P_gzMgYB}KEQF#OqEaI_mD@77zuMt4Q(r%1qNl|8zb zX|lua=A)S98LSGbh3}?vXl6A{I1z6#Q)C}4;4LBj3vYs-JwvTKxL`G-j5}VRWrw$^ zpcrcs%f%kUm`Vv6_H>gZ$8{L{Xbtt+?n|n=9bnx89=dOa>4{}kpm9S4`}}-YoYQg; zuWtN|vjP-nIzJmS=aV-2%e28l4Q+D1pcVF9Ql$|`bzzI&Q8=*q5S#mRFrSGq`G+M7zZ^ zrH2>L&KF0ix%^3x%gTi{iymOB!%~{pW(|qw8zI%Om1C!N8zst}h@9|M#@T&<7>%oN zZmD`hfYL|sv$F-0N)v49J4X`*haqFU3>SahPfL}9;EmK~);qg)u-;Hbv_zLfhFt@F z9OFR}HLStFy&v1f8QL9b4=+c!p=838<=rcY`?8&xmK{5Rw=)8^iOqb5R~S>VXa(_- zO@M_R;`mJBKE%o1g_hIYXcSZi)gR(;r??u~cF+c{rN={(%w`na8wUf~Wz0hvLr^NV z#X7SvxbI*N?KjusnoqrO^mqtN9}Q##mAp~VC=EiaxH*-onl$EJ840m(0FrzKODpC9 z--T)jlsSQNbDJSVTorkSgTYAr7jEp{4@NmbBq04C7>PXvd)5L73>v|pyDy-A!6tJ0 zUMqC|w-i@BS&DnEjgZ4fej%^00=OKkBKmpM#@9gc{BaPA{{o@flFW}migL4e6X`GRjMw*e3{Xu% zW&SHDk=+SVtCHcvzFD;RlRor}@z98G_hIetP|l4bj?g-}hp6N`)30h1DD!-V0$tmT zYqk}G(hN&c{;dzKWk8P1^xZF7E}+x8tEhHkF4@@n8pap7!uZQ{ z%(kx}*NSC{%u*Rh3(|v?>obYmyEalJy%zFpk}+^iKI&e)Nw%ssL8yo#bl&L0u;q!6 zvaf_0xR=Ix`N$C%DL>|yLIRl#41}0|Qw)DPh4f8@d@ zjwHm}7sC1rT|~_3Bl+;45bQl9Fx-C%cWkp}y}Y3VIokrNO|k~j?B_4b-@;$%US0 z(f~M%|3i}lHh8_J0vq~V*#$ob;nme@u$=6M zjN1?CNGU_!?^zB}p@ke*6F(B;`UGBjdZBKN4pzqJV2QzUcH!j`=pU$rgCYy!QV|dp>?9OhX7s zZ_kHuzrgCPXSs;4;x?SM=K`Ak`iq$!vKaqOiGBSMqDIRAq`i0wE7D$(_};C=M*0d$ z+im0suk|B#U$>)}89{PxEylFXFoWEs>}z)FXftyk9NwEy-4z`qMxvjvbSjYf6Iz`* z&PCRZuu)<<8@J7PI5AUhxNg=LcCxr8h6IYis$c7gi~TMVnRyLXd#K>LMQ=FHLtMmo z{Q=bb>5c35)MJoVE3P{z!QM8ggGbl8(PuP??2>9H5z}+wahxt%k6Ur>@)B}5T^7wx z9++W#V`#5ZfTr(#*fMJS@q)l-W_0UpQtsD4#5|+m^Oe20%)XYBa|p=Vto^7&rqJL+ z2`*`PgKpSE>gIUj=8bomq1-Aq@BVf=J#h+tiHrccJ)vCuKu##-qIl5KnRVbbv{@Bn z_?arAw`~xY%w0`JYK}5rBy>0pMKkwRVy2(-_NI1bN@TwDZPd?*h8|TVy1yh0lQ#4d zlSW=>cmF^V4P8iwv>FQZn4*3qg@DJ(v?8PhiabVeQNe3^u)Yiu1XN&nwh!S=zB9uV z4>5ASPGl`l2Drv8f$j<;q7#}6%M9*e>NQI=tQ;Y=!JlY(%YD?s05bRG1rnoL3%hy_ zkR*=}@N1(#if++0DS9mgl7_bUNGAy0m#ic*$0ATpcoUvZ=cj1~((ENRiLh(oATvDm zfw?DqkCS|4m^r!7j(+i0!soqFxV~Ty;XK;}BxX1A82fU5i9aHN-Q$q<%Z}LG*k@Ak zybe+amcSN4dwS=gE;d|q#e+Aukf5?arba~sHKm?_VboFbN#_uF58UJ&<+5UGZ>fRC z(r8?q@}6E%*Ts_6V|Y67BaP2#sjmANfQzG3q4+27jNg}7t$z4D#D1R1yUo|gk*x_Z zC9{_nzVSr=om^;t@hn8G6M;;Dc4)jX20lOISl_t0L2MZxJa+y|Qho2h7U3W8v%8s2 z+V-HU^?a1;(?@|n?_ij90Op4q15ZZ>xU4K>3dH&7)xUzAVh>NyD9WKFv#!AIO(p2N zUmG_a`G}4aB`CFOJ-u_%i!*-9lL^h8$q4@mQMu7Az+Su<`~;CxQE~{}ea0~%ObsKh zd!q|*0eyOjUS5>T`g!0wm6M#|&X$YFw&5^RDhqcqrLdiN!O>M)eE>PMA?R9MYBi&GjP zLNT%uzD1}qe!AJTH^Y%iUoM2*{C?#AzDlBJGJ+yaT9|Y;3NI$tvbLP@0^t+>aQXaa z6xle!MCq=jUTba;E0_Jib4ZEYF$$t?CwkCg`)17j`3%!Nyh)VRT(EvTLdU!%pr^^1 zDctah`PT?D4R;Xj&`=`vnNiRvHigDBXVKJ1qwEg=m8OeeF4 zs!ld@ipu>+;rmyp8&QfoT;lMKOgCQji9Kx-;OxQ+CmO|4TRoZn@4+vvby^{AWdjC$Jd4uT zN?^jz1I9kKlGNnC5UlZ;jy2@51wQ97{#6e#@#JgjE8<6C>^f9mXK;5aA4*(bjkEfU z;KTXLBpfXv+^Wg6)LvAaab zhTH)NTEVKWBV4R%b}1Z)6ldg|4kF)fZb-3fXX?Bnak+yt?v%O>^)oq*E8q$1zQF~W zV7C}7jk5`zSOr_x`H&+=l~H8HV$`{lMKbz8&DtF{&yh-kL5BiYXmh`_r0+VI| zcq95C=b2_G%0$`0uN!A@(;a6bQ&~+0RNNqM@*p_=vLPXl$|xk*lD9&p@Z54P!h8q% z-k}*WFBYLa8(sENS(sH96-j)er-K-M2D|9nV z{E>o2i{(t@WgXm-|6^DYvK)D+DOv}ttp22Zj%Z9Bg{K=rh|1+P zaIV{q^V(L9@Yb2ofF+|;+V(r-u0M;%{e>}UBQFXJIFr(kjiCB%<~@-uUpUEYFM;Ri z1c`6!hs##>^rE;QXX98hM8=##_r`^ous{cm`4^I39CKFb@+~0#I1x4)8$+o&Kgryq z41P{dG^)Uskl{W^zQw}icn-R!?nS$;i`hci&sbki7l2@t9K8KA%w!H$F=`q1@V?K3 zCT->-5qEEb$sQk!DHy`|+2%O+rVZ)5ZOs&W^uxY<7g{;-kyTxlY~mwZf=UXuG)-od z+_t_3p#x4Bq_Pkr7a*$tc*#~cv7D2eGyyfs{!((vm=TWd1N+)}z!iRu!s!+gCUOq~ z|23jhk}+Q1F%K8F&SmSAcF?OKS5QgEi}|!Ni-hebP?6pYCmnKVcb52!-*pXYOy;75 zr8J)1@_weno6S~i6Q(zZHlo>L7V-VLm(AC99p`W_1QS^g;CduP*0#ICbGIIxH7JNS zA^qs6y_GGs@fp0RwL=kyeBB4cs2cO0_p ze94*l$52tk5_W%?$-Hw+*-L9E9#1_CZg=RB6_{~q9u&W2{T*$z zs@Yt##F!(cI~XO)a^%Wh1F}^|VdW-25V~gunZiFww}U6nJzI>9vQ?-v?*r<(cakP+ zak$AZ&fNa33a3gsn9VcKqrv=9*m&F(!qghsOzd)$3q6mQ#+TxfGXe1Lj2dw-6UBM% zZ#dx@1Jx%Y%sCwgo`cb@hcMuD6D$;7vc-n$;JVThl)rTZFN&Ol>_dr=d{P&>AD&@_ z{Va!a{$8T)GX{EduAuS43aFlO_h*`Q=8pO5{uXiP2^53(xt#1RK+9L_Eb(?ViP&CUENlZm2R_`Uvz)QJ9t&Yx4Vij01F5?)@bc{nrn~(s+tE@5 zHRVgNoP7drO39**{5uez>cV6Gjm(o5b>PMIoh%m@1%6Fg@Y*5Bxp>u|z1CKF#^LM5 zJkBE+&zfPb&cm>r#~b&rSVcUq)zTjp%FKs&3*dTl4^o)btcou#?1gJDql1w!`rGbA zdka^f(iNcZSAy)VuUKK4vxt*+I3sdp#=)BGM{W{DBUe_j)ugVV;dXP3JUM}T7W|}< z^AEs@Gd-w?;lzozh%89xpo;Jt1YXtC&v^i6mR%#E`U=ps<|dZa7$N^tb3m`%j6{GK ziZ!T^0P)AnTlP=Fa-T)VVu5k-Gy%@)bY}X@7<}fJ!|Z^1G?%;!88;`0R!%t7>ber+ zt4Emf+a)B@;SYVbtcU67wuheq3y9`7Ym|53$D+0W(5%x9LR!p;S&a=1c9vt9>U1Vs zIiD$!eMu{2V~CtYEz10R%*6RGfRD@1;H@_s(D2+OT$bq~HA@fCz=V2gwdoWyR=k() z+_HtjJJ3KSXL!SrVaCyuW46P1gOU}E`{EA#nEBgmPt=E&Pb4Adn$COC$ z_XW7(geW|Ya-ZQu=W%EFX4F%dL@t9=_S}`nnfr^fVd=kY`c`ilJv6Y7zF6Z&vJFO1 zXY>-zl8u4xQ%i7hk|4^jQ%B{FM{NGdc;Z_$pT;ljhT?k{Xn}wdeU>yjlR}ztt-JgT zA9MtN?JKyKO9mxRADv-pZ1SmhEm8V;7z{es(#?v`;jmaNeZI|;q($|h`j*3}(fkaG zc^lAU)@taYT+r8|$`=3EN-Xt4XpiACI3^hl5>G$SPouiTqxwGbwcp2e{}5WdM0?j0sC{k)d+oeIKz0qxH3AYf?1*z-zQV2Bq-ld{1FE;Eg3+cEQ0CG= zZZB12rnVPA`FCB2-jNMgL*Ij;`xH~R#u;@F6rss~DKi~T0IgKp&14@jWR>mqV=p;|RxMHe}Bds6}5hk-C@_`px6yL>lK|svXM?htjFWIRsNH!j@VJm5UC7}apkf0fh zj@xWGI?K8tSwjRyFEpb|?|wA2e8mZD+YOy|xm4iFA^L3UE?c=vnytU$Fr`hu(E8Fa zS$W$DN@G5t$kYGNh_cYJJ_oYf?V)_18p+(1%<6F!AjzWcM5O&DO%4%9@ytwGl+1!h z+@bKtLkX*r4H|t@8+QCy!pX^B3ejgWOhrX&8N&)Oxkq*0`5JCqRxwc!nFEara(T3_89zO@7>=tEDb^Wc1L1+5R( zVk_CchhsY35M+GR)K82>?sL1-Lk@9Jr67vjH{YP~k`_47{su!#PUA|Cr6BN>k2L@3 zfYp6(L3^Vz5i&SUR{l87oPBeGj#nikU*a;98MsfU8dl)KFIS;;T7w9c6p;&O3z?@s zhQTL(5sZ#sgZP>?@MheXew&`g*+*+|b?+_+ZW=<>m~@=KWhc!%szlhPXW>$V5yVN1 zz?_^uI=v9V+d~bUjwjB%dykd8b~4~_1w=*NR$vN8ef%?5G9e)-Wu9d6e(#bk$OJov}9x@ z8mN#xvKz+ldHw!?^Ln29xu1K^dmTPL{$M`-=pw$Qe5*12{bo@3nFBA?D?v(dANVcU zNF#rAQZtV|%y41|q(b2EtR;@nG z=^QkHUBkB-;o2>X<***p&v)kkH3=TG7^xmlh|5TV>mSG9+lV8bweb=YvC4)S_z?tx zheeo%mxXlc)=2t$(e3}&WCS)*!;9@uxp4sUgT>&(4h>q-#nOR2ZgkDmLhzZK1*}6J z^Xk+XQ+)j3|7)@a%0OnGH#|`8g-xN}aN_ktZj7-wGrQ#@Gv%&6F*~@JF8(izb86@> zy*2;V|7((hkrvsEL+`QWpkV9|M-_r${_!&$YGz2yuFPkO-sN*Wep!G-N)%aFLaM zCp#$Uodv_T6{xeS3@-MBLCt~dApiI~Q=ptm@-AC5tIbcr)CWm8@5o#G$?Zn*cjw^2@C30h9)(hNH56@GgUWl1 znGFLR`fC&KOiFY?uw8;CpR=H|KRJ?1f3o1Qkv7fj{XkYoynr1k0;m#Df!c{pOrhUm zP`7F(d}Rd?a?6LAqx%6ae>@L->;%|hTXWjUr64OF0ymn=@aPG1EN+=fiZb}Yx1ftW zoh{8M)#QQiqA`>x35ET!d9?YoEs07z0P;yX7<*9%n_s@hP}vjgA(!5C}|uo2J7GJu}`E7%RFuX4XR=T$MWEH*#+YNp#p>jo}s;~ z7xQWNF3=j%W@I&8NzKvYD7df)pX9E?ZGG`D`Hjma&lN|ZJ5BVI|8sidivhg5_KS#| z3Wt|TKFrctgha}$!YyyNU{iuP8gO2~vtLKqD1idhc;pRF-oGclI~PGjqXwu9-h^LM z92tXXS8^iuG@d-IiseE5K&6Cn=IeO&K;Smy+*yed9lGqi`awv3q6x1*aZsmd9}~*Q zM^gSh#Jb^&cu?sYxHo8{ZICzXeb5b!wB(_s$%XZlD1fZrcX8o^J1A8BhH;GoBK5Zk z@rgXDM7DtEY*V!NYhV{u=;31bJo@@7!$x?w~|@*(uEEhgszmcnR~2$MqYvk{vpt}4t%wL|OStpy*Wn*<+S_#S4=`n?O#slqEJ}5=4+D8M>E$@Xg;i=ptPd=#fZ^jc2Hl*U&1d4Snz@efsc6Qh` z6smG!XS|&cgZrN{-}LoCeBn`eJY$S*(+P!MpElgM*ou{ixq+_Se!N{ViC_h3f~zZJ#$B3%kvNL%~YJ$bgH48^e1>x70t>$RmG527Vo|`Ap_5L5FI-!h)aKs z2B)U6rVH+YvidOmk>!H8Tp(Nyn~$>`p0TcBav05f-VUdo?377adNH_a>$JlhtAhCG?DCshfK2R)# zOw*-s@<2E@FEpEyRmmt+IuGX_4}+rpLbNhD6eT*ha0m3-Nkd>M&d4d`t{OTDIfd15 zabY8q5s<(vrBx_-rw7-^K8JMqZOpISGL&=SgBkYwSia83sI|VIYo8+1V($6;q!vLhPi7A3M$&MHt4 zAWBaQ7lDsMK7b=3rPJ!^QPI^X_BkFlc#FW7;FGxEE(c}q{>5OAF}Pr&MISxr<2+jA z4Qsv#qSk;Er_tMwtiIfc3cD&mX72!G#-D+)Z~=IxJc@UV7NM$q7J2ir5YlJ6LdU-# zobDt*yqQiWeWeDsNv{x=@Wn!O=z6qQdI~yEui(RffADZ#5vgA9hyuOW;Dt&sntswI z!j3j1>+~4-K8%IVZAuW4sfN05pMzJT3TFK(MZwOSWX0n{@MY^UIOkc5b5jPGL79Ez zzMvUn@YDciZr=-q>)ybZBc-(B#aaxV!GU7uI?!Fm(l#L#`1`^cK+zHB{u` zZ5eu~(jNN1zCn>oOUbAA2Drhc58@L$;Q41?az43{`>wN?5tjJ`4GxFQCY3J2U$%|@ z+`SzxE9){xI#NjEqaieqltjOGUvRCg7E#)p*?dkW7H6J!g5#pK^p3^=(Rw_st&=!z-iUUEfXX(?^*< z`~AUsp$f)qY{HDZaXdsVNz3O+cx%R@(5@J;3@joaK3Fl+E$bjaQIT4w7cok~dtqop z4n`@|W8&<^XsX;!t{8lUa=oeW@{24z!i2C6ulK{Nd6AGDWyD=C6Uw2!YG|pw8DlcK z@MPLoTxGD5mCoJ{9hns{&!-kv`}|@RFFE1HBPUU~@dBs8B9ysudjkD(w&8IJdGxKk zjvm|%YPE(}hmVMkI$>1bF%18)5Z7(Hh^whF zyZ+%tG}ZJad1J4@Y~V049F{?|$aUy1;>kF?86x{E-7s~_4?K7y9Mz3XajK{bD}Tos zXDrJl)jwOC%Kz~C!B#7D?UqI>vE$5M{vl#tppWJ9b8zjgN2s`c4NeXD%g$JkgWEjM zvbsOJY18O!vhH6vI!{eSwsVv@AfiSjb2G7EjUU?IlS3UFd*r`9%qo6O#chG}Sn>EC zm~K`~7OD)OS$-IL4+}9zzqm5#vLcv&X%d;>aI`ISfL9^ntn8QbxKrX9tM=~)Y}xC_ zjL12lrH~5lFkZ)aX1j9wE8b)F&tNoC48|>CJt+EKmAtAvfPS;CvnC?tU}*TB8+~mv z{;0>{zSo>%e){Q<^F(fL>>~sB*xF zaaSs0UcFSs^f{s^D|-Ze#H&z7(}Q%W{lK-_TUZNs4VYED3uXrdV)UOpoT50JvEIdJ zwm`TVFJ=q_?wLeummu7^Y}yp2o<95^%#X%4}quk3JmbL-mcW zsP|J7cf~O9Am}wI6)C1gE1X!1`@BBqUd0>shcVnWmo`iA)5Xq1klH2!?cAGa@;4AV z>pdZ7Y?P@0&>yAGMj-#dZMab% z16j_^WY@DroTK++ndlpzU}U~G)TfQZk}a8Vtk54%$~gg%6~lSA|H3E#4Uk;*5|<}8 zgSIsVk(He^?7zo2W7RpFU7W^={HYERHjQ{*7wAqIZ=Cn71tnVVL&=B7sH5IUlT^3E zQ@(UK*Kv&=Niu-U^}C7Ev`+9BOTlJsTRMYzh*QgdqVBUvaMOy1hbz7^(FxfQwLc6t z$lc?Zn;18#4#qIi-Fe`1`X1h7SjNn5G2AxHLv00q*jTb2P6h7(x1MMaaa_Pj&!tSU znHwZ3^iw*o19pGv#rEhtBDee;e2Fwf{op!ylT;7+%~ec^?hnRfzAUwfNBXO80{EAF zrqc2!VGr+K-V{~hmgEbeXp{$ZMezQMaUlG|9MbK#0`|nUKNRJG`jca;9DEAM23YPv$U%y0#R@a1Of2V3aRGIJ*3c_;a$+YBc%JMf&SDYfOj7no)O z@rO0&%cf)!Gi8#Te>e+L?K|iLrB2-FXblxF{mIPEI>^o+#k}+?y4rpQGMpkj*>xA^ z>?nt0J64hGvBOY(&2w4EXo_oLr zpDWa?>ILZ4uLrfyd|;4K$#CrS%^nXaL$P@{?oXNna8w>rw>?LXMJDLjoPb7quA%(f z{W#k&64jRrKu0fu1N(ZLyAw*FdXqn{6WasPlaIjYk1|RRd!V*~0;+iWL9(m|{a7gt zmuDtJz0@t}BIcZPGvlCUI2t|-yH?$xZ*Y9Z7!zm4yHlv5q0J-9zvkG4id;g&1@M9k+WS<(EJ z+udYJ6Z7vumO(eXNISr~2JXdq3lHOPXDMtE3&hvWA4sdeF?l>JP88zL(nVE6uynW{ ztv-yiZsIHq_U7P-*&P)7U4Ri`3&}~@&*)k8l$`y1h?V9$LKMv(QkC;V^lRl@bhu%` znw{JWkM?*VEi6Zi!o9ft;aQe{?+09N{DtgyHe&e#%!t)_Te`N3(Bea_7$owFouS3! z10QAZ{P#DwKD`517v->$cXy%=a2ci008;08j44)lM$etArl&^sU^vYsKd(AN#eRKE z+#7}*=`q}ASIs&)N#o4-?L=!$3Dv-(n*CSBG0aG9Q$a?P-4fJ+4$nI>z34OAKqTLf?frJoS(2ON3VBo`hE_W0+FB93nC<;)$V$#BU9< zGjxlHno%`uuv}_61}(4%KUsxsuBb_({v`z_A$F9whg)r{!-5iaWpe_ zl$n>23I|^Q0y9qrxl2UAFd&jUqP-Y13j4tFNfwE`_>wiRsf4rD%RteeOG|ofnI7vM z5bARcQXZ*ejm0oTjat!~>@M`WrU_TE93*egV{MOEfu*K1tZ=EK%}=G7yJ`}kl6wcz z&GNCjRtfeU&ZfH`E20bE4b&YJ;Os9fVwutmdS#>&th^=Z(42cPke5LM9=AYxHwWGN z`nVq(T2SK*h4-sYp@n`aGisee{3jD=)Y4GWVkZSl2gfjfdKocFdII`t-SG3*Q>M$t z7xgN;nMma_xH|EQxp}CP+2bmVAF$aY|pIY9-Vp#*Q)iR`hUkE`j`Xi4-GT%s%N3F&4>H+k_1=RvL0M7 zzoDU_7T^{Uik;^&=+QOZxQJ{=r}H&XGNO+%Gi-_LRUMF(wWG7_yCJrF3?fgcfz#cc zus^^b8)fc5+({P<%FM!bDK9|OdI_95(#|A80zg+9X&QJ>wDz|0Fm*pGEPM#!d=6sK zXECTeZi+4&V^HbJN4WQQ68XD+FrE)zKxl6UQQi2Q@O`O(nPNQ7)XooQer!U|VV+KT zNf>R9Jw*LG(#S7+1Fd;D?WFW|2zeYsI?Xl7UZcA}1Eb-D$9ZTy{2jhr=>`7FM`7gO zN?dtO2u^j+LcM!e(dp(@CN}*QdDb(9x{M}4dsHAYcOF9y*N*csLJ&NwN^l+f9OGsm zL76ghNLF{ng!mjt(^|^1GoF*weabu@BacBUqmXoQ8q|DJfU}T-QlHu};rL=08$L|s z+vPDys}YP&v*hmgVTPVPg5`1h@ZS8haFQ<)HT@K!Vw)tcqP4goLZ4pi-cOqS{y|yh za$tTJ5C^+zo-TA2gYFw*^M==cQTk3IR-g?Z=FXdr2X|%f@k8UE5&}QxcIt5;1=5V!G(VOouK1G6&-0+5#AkJhb z?`~*_okJ~!diX9*aQ7i23_CA_+t2g*&NN9*dP4y_(?S=QghWtRA6F7L*-DZ$?!brX zu4uU?6<%`#(P?4`QrP7ipY1e$wnB_xo@pf^ zoL=`7vx*L(+dCnQp7V{K%4FGvb!VY^`6H6+*v?KfDyE(H4JY3NRmf#ZJ`ka;8%L?;qqcw#@! zjOu~w#^sF5o%N(yURgB((3Y7Zq6uf$41AYN~%-U8!g)UP#DKmtd zV%@-EB#YFrPf+|z1JS4UB=AWqbM}!oPU$?3y1{B7`e?}P&v^rMyK4t+mkwb3>j^0R z_mma?bJ~d z1>|3mOCkEW^9P5PZ@Wa_&9sGQSHCmPuN^s&E2pDL(ru_~NI{1cqSQ5I0ZCldLq_2o z3BG0fAhF)o8!m|r#5I~CwZ7CyzU3jgTHY~;CJS8NCRoPS4I-o-R0if zx{LOZUbrXNi8tL$NQ7}Sv}kX@Wg3!;6RIY8k_4R7DPa`3x@K zw6QF?7Sg)bq4UI>c^T>+M4HiVH^J_+zV!4ZQUw8$*=&1CAvYUb-ELuPAS zC{dmDgmXc44fmP-5+XUmZB~ABfpXWFk;Xk4sOB4lyDqOK2Nvxl$F}A&aVw^B%(hjp z=#~G#T|FvDO>drsZ^QZE@o^5VidW=5DpJ8&le^K>gP){Mls20N1(8$w44Eo+o=$Es zhv2@|ASo;fPUm{SiR;UKl`jB0Zdsy&r7}7kmW2N7;~?cL4Ej&&;o~z6IGmnGXx$ca zYDynue(OTbM^~Z3k;}RJ?;2$3xgyUtg7a0$G^2hJHZlolEVuwQ1ox6@N)BYbQXUF# zGsgp4Zb4t!3^KQ63%I#9K~wp42)65HExNyP-#lE6Cm)NV{aH=;{xnzXBPd-ZLyYD<^ifQ z)sWO>1uq_NX0ucSpzhCBEZ!&x6VFQE>#A5rX1o%sWGJ07luh$RyUCV-%^>X+3Q-=8 zpxIZ-M(=Cj>ClU?;BOahaZ-e=))nNU${^+}bD_Qb>SUVyQzq`+P0(&ug0nh#)V*1q zd63lydUxb8cH&>^?-ysHh|kuEH2cqfSw;#yqUKh zmhIq&@!0op(DWJb;14KNCef?4gK*->dbn3+!cF&zhFaYz=oMZJx6fzbs`PPi4c`Xb zi~rzMbT6EGOM%r)gKdTSK+}5Rwc>I5psNPB6G9ju9|Hq7FQa0ND0~&V1C{<)AZNyR z=s2~WhH1@$Gr5LLn&&-OHue1qmxqslX4GN$5)Wt}bV0p`9k^)jOnC2G0bN;7z{~Ly z5erd;uAW5rPklQ$3W_wvW=%rtE^j=l?hHExd78M29*i=_a5j90ScUJ@__G3VH5A~R zU>Wm^@#jqUw*%*bQMj?!A5(w!!r!+Z7;g6)MMqzNR)Z$}5U`cgp)JXMnkow~L>_^@ zVm!qhkZ0e=u4xDRg@ z@Zl28Hh5Lak7i%oQ76(7+J*R;&-x2FQ>rvzbN?eVCF%c&Ptj@62)_s)9}*bR-U$gF zGTcvP^Wn)f1~T6w6jwhZVKG$@>%R<@2Dg%uxTCaNcMT1FO47xUo3f9O6j zh>O#Bx~2OZcyDLSF2D2z?n)2gk~bNw%zATL!OIauj5@(!>P;3GCN&oEQL5e>e5 z$3$`ur7quN1JyaWVXG+AsoW-mvptBriUZt!eF2w0|H<8z$4A6UK4En9CX{*7fl-oc zp=QS#HrdJ){cpbm7puLbKY#_(McuID<4)+Wy}^AG%*RA_U&OH4eK@yH4?~AmL2*_x zdlJv`emfCD<9?7E%m0AI(r&n~Vg?QW-cc>W$5bulc`I+Vki8~@u|C$YYsO>tj6eux z)fvNW%WdrZK!m${0m@qQ!Gew9R#);7fhbcv;rA6S9v;9G`g6eN+az21&lxkmM?rn; zURH6L32F|01VJk)SpA`>c}qVZb8)l)5360n|HdaVW&uK^kuO`7aTrTWZ^7=Cbn@Y7 z4=Vi=qBJ!gQXVKY9hkz$^gb3wzs{MsGqe@c`h`KaaFjj$B^nEC48UEXnq>r z!1n{^Yz<-lUg^N2CJpGL>4%Z;av-Pt5nJqRgC+Xo;L47@H$4N$f8G(Ir@Km%lj70*r?H`SUOY;f&~_&{!1LV>h?o+?-^)~J{gC{9(nfBQ)y)aNkFU;r{s?&gXM4z;NRjCXMsv zn~V@{^3t>$=z$N%JjOy!>itrt@Z2C8hY+XaH9cn=n**`e{ zk2+K=bO!NmC3w5hnCu*|hvbvqAU~@UZf*@AXP3xxWwrib3N0fwdVw%Dv=p}qSHacR zJV@L90!6I;k_$ULcz&=3SjetHxsXW$Hy3c-L}sF&_8{{u(hC>V#zLQA6OFpE5!JrT zN9mxsq`@c}5{#N4FTxp@g}!8p9ZsR9xdbMh?+4%YC1@OO%{)}POT-iJ;1-92)Mm;U zUF1YTs%?};D3_wY*)#%~NoX+jJ?1|6&BJKBa9PtB>6Eh|D>#uT;bCp|Y^08ROfHCC zQSfDcf1AV{@h@^ zljoRm^)qP^@J2PSG|Vb{4O;U1(P!%qGXA=p*o0q##Dh=irMchf%|qg}q2?Y@?d`|# zlrv;{wJTgcoPbFSdO+&kVa)RNCogLU$eu1+NNAo<-CX9uP6=Z=rV7l&gfglG7D5oe z3zc|%2xo=vfz%h1c+BS)_lr;=QEzzz%PnJ>q)A^$W+GsVE1~uwwLH#LMvWF7BY*!} ziH@V;;CJ{sT)i+IH6GW%#7|GEcGV3QAKV6m=RZNN%@vy05)Su=x0+RM>}NIYoshBq z0flyZ;MCqr82YUc-bU##`x;r;^zsP|ziNhD`w#STr$01ZPGJr$`Nyiq@I1E-0NLk4 zz;9(6#=K2NQH4^nyl)jmMYqBIZLc9WHH4-;{tbnro=mu-KC4|gimUt2L)ywp&>Z@V zzWPqM?Sdc~JAMQnfjY31u8>m^EK(fVCIbeN*lu*IuP_JV&{V@O@vB99t({Nhw7jjL)mN?mR z=&k9;;GP~qfhuA0S8fMMPZ}i^yEW)6uVFHK4nL$WQAg7%JDhoa8uPGxnB|}0-8|Wu z0Us`Gg%x5nK75{X2z10NNum567v%F}#za`Ax-NM~$GaCky zf1>xO3k2PFLggKG&|rCrYhX0NeO11Osp{THvMlO|rSvWuoz}(G{IHZUI=LTe1T29` zsizt5)p1TH2j|9ZMbXtgP&niTE%L%B>8%C(<|mM}Tuah45(=tqhhf^=Sn}VpVG3tX zVDOc%Xw`85w_b23?&114$72Ot9le25$K_dZ)%EP0WA-rcHHOv{_>yQI#x@*~z-awk zbX?MetA+bXjA11FFg^_DU!=k{PnP^C{mibpdme_gzSD5$QL-cRI^?fX#i;r`^iXX^ zyKM@jvHB;9%?3zPeFcs3H(7C+I@ab-A*$W0p)um4B*H!mdX@Chr%V~0dV=~&gCOQhC~6*i!*V+ONJqFmybrua{dR_us1^5M_~=dC689TJMaPksb7c8eK8HJJ zUcyk+Y^ZuX#FEmd{)X^L!4Q+39!jR?B}o zN%4F_mD(22lT@FqyTF@MjT=!s{V)diOJQhgD7*Ic2lTE82HT)au&=Qq*CXc0{DolRtm)-f75I}=RT-=X4{Z$O&{AD&rU4YkLPz+cx; zxXaURsq!kg@^>RVKEIR(9PwbnR36dK@>3yaO)JcK&IcVoeqzDAZ9L6WA0G0(fHM

)S0I{^WD zq1OxqeVQh$iC*)h)Kr+(10tA%?Nm3U&S5-&Tm5Op^7fSXCnwZh&B?(XTK%q?FTj_$4$ z`tndR6wm$)#kDz<9$yA`&s1Rg2{|a(uYpR_lVC*s9)yZrhkc^`v{Y;n?0K;q`gE4T z%+jq8z~9Nd@34oCWM2$qH5*NMnNP)(NKz5Ggpr-RLr%RmW%>E%!YPq46!HpS{)8n% zPD41#70pGXWi{v&`W#I|f6>r#U7~Q4OZINK&%D~To82I%1?FKB(5yO_bDcUtcF#OC z4OT|C&iA<0Z8e4l{ib}e*<>&OK4wrN1WM|j5St^P;X$b*YF1`I{Ky5!IpdC&&aG(M z5Q2NJ#o)BJ<)EpwnDB=-F-3DGiLu=|a?-RA4lWcx+0aU6ngcHv7;)#NgI&XF*)4c4>aOss9$(%nO4c5g&V+>)$jYlE=G%uUzQi%JMRd92`2I#$6 zLprRtP__RKp=ja&iW?cS!eM7%RI3ftB`0WR@_7h}utS@eSr}$)i(Z3saC_@*y6Dq7 zrr;TY?0IV-uGocK)z`vJgNopr??!k0D~2%lcgR$}K~7u*Zau4je*Be8&JG)xB2olHH@|_O#}i!Xp@}gUS7XLcG31zxlB|o%NLKMfRNQxp4sQKO z#=>6`+i*WJ&BXv58yvvHDIMiaY%pv|7GAjJi7S2_r>eoF%!l`KC}Sv&Vt%t2ub_`4 zKih=q&D;o08?#`~!Y1h2rh=>qKgKB6!!5s9cFvPKtdDm&)LWRtwXinM51x0n;B6Vm z_J#sIFAskFSBSr?8R`ulN1v9Ns6CEwWYa#@_G>xRHoE~kd5(MDvyTfqWZ`1RdK6z- z!xg*9M~v@tuwtkhBkEMp&7}jS8@<@LsSUVv;Z<;~HR8OE6QiOrOX1z0Mij0I;^;7Z z#PQclO#4MK%w-+w$eW^^_GdOCa*&t($pHN%9_~r5;_(0RLgBU@D3V^Jsp$`Rw@VGRB%)Y{ zjN5QO%AE=xISGXqQkWjCIdJ0JIW)PL%9(EwN^&>oV!}}sEbcoE59^|R3tN1zxw=M`|1K-9%-oxwkdE7dXwq8L_ zbjjk(-{Ht_dWF$irACsPPU59obr|$#6y#eA(Mu(g^_*b{7u63ozjAyE(vN*fXzLSH zSec7zj5%X)!<8J6_=;_!{OD&kOiveF#}i8HSY3xRP;D+u1GEG{7+BBd%TuNMDqHK!D)7$VJl3H)2F|`yg=Qsb#U?FG1KTLeBAam&#|!0 z6|^@^fom?Z*u1tK4r)1oaJ?IAxW|^hY5Ghj+H2r#SsQ#J-p$q%eB7z4>+yuYE0dzI z1|=3w;_XTk$f`O=Lxl#}CFQ4}=+QCmro7KkQQ!sXV`JPq-F&pKkf$}gIYIUdh2ub4XBOwZd4a9o zb8yCtIrMMz2vJFUh!S!Er1Sj>i2SjG$ff}G{i6nRA_>m#oX*NCWTUZoHn#Ed_dik< zq0I9VUG>_Om*1}>iI?wl8$a1`Bd1rokOR(Aj+v=09(P<6A`m;PdNrcGHk?_^ z`op3sOXyiX${25#Bhii)xS%%ys}?sfT_@HPd6VBH)8{JF$L?Z9gA-vOUKvCmJb?&F z9>-3PCjrl%Gnoq&aIu*qW_(JgiYu2fGM|GUMIIe;?!V(=!m;kxtZn zmXU3nnsE7gU(AeI1{sef7^@$1A!(&DG%h>M?e3F;p=Ct-{1ESz71)tyxy+FfNOXfIAb$ zS!(d?^&eC%EyA=7Nf7n+8;D)mhM_!tM<$nJ_A}Uu zXpIiDha=ZReNqqovpNB?j&`9gjYgHX%6L+Z%gY7Df@RxR%<)(_mZBUF^CfYjP*{YItk>*DUx9eE&!2#Wrc0pz*kV@v(Mgng z^cd(7}2{NwY8#YB0bC93AIuv&?1qbKb#x zV+Mx*y5ST-U)(G)4*SCwlaalh&{1;%eq7ni)rb&fn%~v3^R4C4(lDDYd6hyt(%<3y zKx-J9mIA*n@26;0Mn*qmz`u-d@GYl;F2ArFq!(0@%hgI4X_!wpUTlQwm)0owvJKAj z_%9#FpLTry$qLxE;*y7F;e}Z?Gv?0E6$lDqr2_|X<(gek-Qoi0Eb}0OclN0~kNV@x z-!R`%hZPK|N9Eo(FnVPsq)6T-%iR-MZ!kyS+qVIGZMjZof5E}9wUD^D1^zA1qD@C{ zlZSJjqLTMMxZju#38wP&?#?jQndtDeuG3H)Fc1E7(jwl1A`qGoiGox3VU~(JIa4r% zF7Xklu;2&i*?JQGXAJB6dlVO|Jwh3QVwCWW1MxY5u;IpfT)1JnX{b{$xhGYG$BN8Q zrauw+VO6ufl^=N@ehW@N`U-8&jzRKLUe;-PE6l%g1@e~mKs`@qxUBkqe zijIM!Ii9Rh$2Lf;jzQ7Whj429QD$w`S}?sX4aJK#qTrrnR_Zt(ipy1CyrV1U$C6^$ zv}6UroGYNRNes9%!f?LtH1goqV(_tj2th?U5V`LmD}5*$j@~rI*s&VodE^ZW`2K`b z&!VBtD;qrN9u(6&OwO<4`DA-s!EfsedL!-|D>|nUq)t_1lHmtZbIuBiOg~|2D1I9L1?izu@XGbDw_U<=z|k9sbn3XdjP5#8$#a7m#~*C2IkZc zW@ox3bQR^JbBPZ;S93=pp4P8=a~6DH-FP`tD{f0PkJGDKaWZtmY2yP|x@cZK(bf6} z#W$W|au*kp_x{G!wkA0L<566za}VdkRajar<_ht25q zzzSk34w$9!@>raE$|P%YBbW|3Fl*{Ed0L7lbN!Ay9Gxi!OMYl$m*aDy@zM=fEH;80 z0X$v8)CPpsyE5;!Gf?}}!lqzPQ(CjWkfv1tohnX2Hci&OtJuhSX z3#bpLjMKUECseE6piSkM;gV`UO`n$ybNJjrvu6~$b1pHe&-SCILKd0`4T0QyQCfQH z9hApr(|+kcw3yQf1?eZ4C1#%V!Imqa^(h+%ggU^8I^)^`L6jLtfQtv_f!4F*5R^V0 zQabvx&BLeb}2kgH+{bG5b;*?uYJ znC1^a<_O1C_csa5xeH7Gx?-pQHtN2EqITsRG<7QhU)~*&_7){GEsM?Gmbh>Q|GJ?MOw z2~NKLuxr;2thSMd&Y&Ggs%ueEQVBfB2O3i%OGy10BJM9j!t;N?Nzeb_qzyx(rkFzf zN;M2vycUX9u0)F)H_>>8H9B8zM~RJp=tC_9y57Tv?7hf`e5-e(xIhXh`f}i$cL^GL zRl%c*TzIXz7sl_%;G7(37&#JUW*fYiL~KeVYXT2I;kzbW;5e7AT-gUrQ}>}t^aVOI zKN2$RB=Joa^zn8~o$VtTnKUon-k2Bj>(>H|lO90f zeF;#lP=oPrzcUB7bwd0t17a_&O(u#~!zIQCjdjc+H&2HK{l~|N8@9zrwPF-a-URO) zHep1y8RN)Ig&MzhR$|s5tK4e|ZCelHp5qqK7xRrur>YUH2iWh(S+e9yG% zkKv-Pyv*dS9MWi`!q2@1oHBHrE!~}`iBBomz%&09 z1Xr$#BO05Yaem%4rYT=qAp86-2#qm75v5;T135(|(RLX%jn^Q38v-yVWi2`@=p$pk zf?iUJ#LQt8o1*H%Rn5O?56vnoJ@P?i6bZrh; zZ~jhlnjXP5p$d$0`HPN){ctb7ft%@87MD14~v}TlC z{WgwL=O!^$1~Jql6{UqgvB|$#)N>kx^1#L9Qo>fq`WXgS>xRs5UKYI^2PD-)4ej5r zz;OOa-17A-ByAdI*S(p*rB6H{gOf`Rycz}LJ67=c<98@YSx-+aCdBW6AjUX`qD7DZ zYPtM_e}3-l+LJqRM~o26nDv3sDIFk}Ls8H070#^W(B00iWYyX*EX+ELOHc2Fir_D} zaNL9RN#^3rtLw?qb>*bx`gOP~_#8EFEyrc{Z|RIBMPyC)L2O!e5Nc=|bXjdh~B^X2PIj{LcA-r9Hoz*5m zt-Rw=c=LQ1-@OooZ1d^qclT)aw_-d~VMzq+_)#@x9=h*&2Gjla!~Tr(?8bs^uwhLJ z+}ZcP63+au=d2CmUu)WEkrG;nR5DR9TE3t2v6V=TR>fGRmo=n?jIBk58cU^8Qc;a9 zODoa$Tz9sL7%@bNVTxqyL6YM6Jf1(``t6+iocp@p_vJ$}UFomx?aOm5&ngaXxj;F8 zhs$r>@WbmuH`?0T3#RML_`CLpqU+oQ$+NzW)=G}{EF%mtU&Jvq8)j+E7p8`j zj=2xnN`I(dF5O{^-aCpx&5ba1E}?19-Dy~TG=Ff|4Sgi9>&QJ9nm;-p{YJgv&PyI( zf8(G0sIn2OcGx72F>hwNyb6lhhWKn4h~7t>G0VdN-CZWMBqaoQvVRx+?wn#)=7v1b za5F2HW_(FOeVIW&9~vGMi?0^_g~=0}5VNK)33U?BIZT-hr$u3AO$@uOWXJyAyj~6SEc9%}l(cmmvI`s_JoEpy_Co8cjjhET3{j=EG zyEnzPtKXyGoSHNgD@Xp|5=1`qCC!yXDBe(sVx&9lVl|9~)`v2~Ty0@{>~4NAk&BD% zJ81UP-|07>b`FEB*pk{wCXSnF=fg0H&kp2mtGw8)=4C=r&>JE6yQnxke4%KhwT}A! z{Fz)^qlEtJZL#e{5UII;p?G~SI#64KoPRV}?|-ie%`db0Bhtje-l3xAUJo)G@c|VZ z^mwI90pc<$@#j`X^USW3ciT5bWy>ShUhK`DJ&xx0S9Zeh<}d7Pi7|~|rG$r4y`GhE z0&zOG*z(H~7aFoq>NR?iuG;|N{3a8odbJq2gNLKHOCB3D%9=kvvYm`l!%-~r<~=q> zEcef46t!AL8%OAqO5R3TT+9)Yt~!&N!~_?u*AOZlS|mRD74_k3$s{j^H|juWA25wV z<0{GYtQx5$e&m1kxy2S1CF6!^8M|xqU8t2=VQ1i45~cdr<}UJ_ZIEY|r%~*fMw-*H zm-Id#z}zKr#ix(sv3Fa!P;q#rI5b(>UC%5c)39-5p>4-+s0OjVs=l;$Ul=JD`B zTbdAfY$;0O$I)aV6uFBo^T$f>D|%^kQ-J3`xVU0E^|rku^}-dnAo~r+l~0S&diT*k zz6qxdT*#_!0NjIpcu(A7o;KzcdFT5ga`ru3mG~g{I1A*vxWa#ZoVe!7b<7)UjjBDX zk*_01{}3xE8Fgafvw9M@f8w?iXHu^B74PiQEkFGmix;)RL!r$j2oe}t3i(_EezYAHetu`HVn*M1oc^ycyq=J zW@D-LLzAl~&B;)Rb*{<6s&QKUWRshM6=q@Zay#x{Zf+Ci&tJrkXKNw7#fqt}UdBdMwFsMwReora7Ch$P zxf8C&20`=tX5QSR!xeq(*t9k^?votIlVw3Le|HSIFQoTod&>{av79gbTGJj}{?u4; zbXiu#c9(N#&v6o(3)-+Fph)=ktOrTvHxZDnA}rZdM(Uc?RNPw5<~bZ7?F}+$XPHa> z{(W?;_Jr*AC)iUVZjmdAs}jIfjD^w5Z{y$md35v81h&C7pOlN6uvh1h&}z_tB>nNc z+2<*bIbq6%%~;L*dVk@ad?%LZrs8tv25KpO$7Hwl$vS=zzLmMN!r{lUHTt?RWSKS& z#IE4>4i2z$U%|7-rU~h{zoMXY0oB<1upOnPcpfFODX)u#RI?_`YN;0-N9rQQNMg-P z_ae6X1U8CWU}@AQWlbbdoz^YZyY&$1EBtZ!K|PyXewz#)D+w=8H{y2wDWU6#74Q6` zN}(kqHpWo{k&oum^M><^mEZCuk0>2AWdnKP@0O(Q|BB7-_Z?>vwy|A>XR%Z2yW%ub z1?N4HSneaE*4?Lhbf*IvY~o2xJrheUo|19v4OW(Ci0UPt%zxffZZ%>On;2*=Z*f}( ze+wBsa~mSxwYwG7iQTyU~FHNKKEWNPYUUuwhu!8BSHd59b*sJv1oq z3Mqe{Dl8~HPbMo=g|!U1RPipxfEhpWj@VQje;G;!H_f<{YZ&$w&Y`l)nTYtl0Drl7V8@y%{8eQV z+071N<6kzg!DF-d(U4kPcpHfBnsOe!^9fErc~1p@d7$NF10H#Gk=DsXT(Y@NrduLl zmgx=SA^AM7WHg_5(hKP)dtjiXKvmo^N_!E7=5Z3Ye|#ue^fSjfBRLI@T_N9YyBwdB zbysKN9ls8=dV}!ezUi|MBE-c2n3Qo%pV*l}9;n~ks-d@v4 zx|8OTrQcmH+GybI)<!ji<_SWPPbsr5C>4i}3}f5+r*JmcmPe$8@Z3x}8TM8uU%y?# z*ru1bS6hU`bsbn_9VS0p(*|*qEAutD#?mKm!_bV&aLT@hc(vRgbtkG;PZ1ds0X(>i z;0Ibb_p>KY{bYu-j$0kmUhZXU7dW$s56#@AZxkL)^8BHRC|BhR@0sCn+ZSv(=Z*Qb zVengNF!=5+)JzfIWqLlfP0l%Kvk16dimu$mu^qvxeQPU)*q zqjg=_cW4OWJO;>BRjLIo_51MFSoTAc@k;`xH4Vkd#TPkNjzHqa3|M@8uSh(vCOrMD z2GjpB;@UyNORp&AqLT1Kb9h}Ee|D)5pQAjW@ZZPxI1f~0biIa>ij!!t*izIOxPn=B RnX#EozY5t}l0Re9{$DuqULybi literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/store/tr3.mfc b/samples/HTKDemo/data/store/tr3.mfc new file mode 100755 index 0000000000000000000000000000000000000000..7e512b936a4ec5add5da5d9ac4272e9bf7e982e5 GIT binary patch literal 13844 zcmXAvcRZKh`^T-U2q`OM6-qQj$ooEbA!(|FC?pM3N~BO$%AS#sEi_1|jQ6=NX-Oq1 zkw}D6v@}Hh{6615?mu6T``qW8`x>w3#lyoZ%EKF;&7;p_fuYTTG^B3~UYTpaJIxNb zac?8@axFiJ^NuIahGU3Erwz@GTTVMpmvi1{x1yH*7d**b41Ud3IL&Vfc($a%>d;6= z%-o0x$(l>P$UY<$vB*ujewX>F-9f~pRsPc)pOQc|k0ryWBq4BXEP#TK9-JQaG-AK~ zC&@4HBt=T1ASI#zI)`HGvV3a((*#vIac74)K>ki4jAR|4?@MRaQZ;mg!6B~F;Zaklj)F^qK?Xa zWR^@0nIq-*pC-}37kF>fLQ2RiFv_0>tzEjHy6+n^JSUdy-doKi*v;YG4O~R*oEqs* z-H88ba!+z=<*tDGiyUr4$T_GET}$Uh^n#JE1CyGwkf~YthfEp&%z3fu0_EOv{!bGp z9nH-zRsxkeQ^;3XgtGJFpt1fK+}^fu`JMa}`dNRRI{z-`^ynX^{fhSg`<@d4;4iNT z4u5PQz~l-H9FsE*TkK52++|3)cqhGoqJf0*D*Dx-qq|2v81JpmWaJNO}E1=s96VECm29PC;HZTp;H z%R@tohqiIHhMMA(S?A$g)f!Z>)5mn#YI3|$3TL$W*ZJ>Ggz}5IOtpt7tXH8ZpI`x* zt9qfq`w2}roek%*Um&0274+)3NzR!HL-+>;*vMmo?AwzlwaS#qIe!H{Yz<~yJ4RtH zo~BFxbV2&+%c_vOI1{#BRJ4hD#QqkLX;2!o?)yPc* zh^|ZzO?X|1Qr|mirg$)C=`=p%skGoOcZ(tRYpqDmtCKi`|2$sk4Te~_4?hly(dA~A zG}HGe7=`phlhO-%RbU1f-ff`u^Ty~atvGVz1mAymXU!ucR6M!_f`XmM_m`23T6Q6N zer$#OW4q|Ldsmq|U40}i`~WnVi`?&Ie~sg3szAr!lG zo|uH~hp+PlNIl0M{EeegEV2+Kq--GNHw))Ite}#66U|RvpjQlck-m}V@Ic-MZp5@9 ze{wmQX!nJ6&Hyd0vdCU;MX`~qU|}7Fg0;3N!|%)__a%{@JOW+v$6!G922OQ9OXl;9 zfqCjnc;I{mw;nl)i@o1+o_JTl`K>ciFSQ+o<}{J9x2kiHohD>;)?$z28hPn#g7%nG(o8(>#?mqO1*ZOC)XfpalD^wcpISR29v9_9QP z@H`gNuSK$Aul_LQAD=L<19uPsEfF?MeFCL;wQ$RmI#f6Dr-yI4!OFGc{WXNb$@^Io`RVlTtL0E+tU^0TByi-8Qr@%K=W@kCZ#($>4 zEkZaaMu61}t6&!W%maUOM`~cB0$pa0IYYICl>H`H`dbIBU+L1tt2bj(`6H_NEgTn> zKV(<9N^pwWn?dxBH`SV31kd|!abzcWn8%Kl=skM_#tkhX=O7We7i6jL!7V5ztjtco zn?}+aU&51yM`SgBIZAiUsQcE%!@d0cFFLv3K+m_w$bI#9_)vEc0?Z`fp>!Urx2Awd z-<}6gU53cxd%ExrZ&IN%Z%B0hElf0w1>vs;=+hG_c;lxQd{|6S@OL^Z&^XG>d)Ntc zNBT&yM0%a%wm2HZmu))FtQytIcR|RByQKJ)8g?F90+|+FIDdU2DUDNsy|#j|f_EXY z|5n0$mpVvqTYskg97p8S<%e?z8_4P#MtH6ND~f6(JSx;=QU-(|PY8*w)qFD7@HiRY zGz8lm{E&%@W0KWunb-J&NL2E`(6>vl-RCl=;MPuh@{BMrb1u=_1~%|;OErk4PD4>P zA1`F>g2iITncia}@TyDz;JGh%cE}hS7an3xi0vjP^fp7lAubf1)~T5o)y8RtJMhao zX}H1{Ndin%QRt`$82G5L{4fheJ-tA8;Tu&4^)gXf@k@*-C~YQhg0JGV(JQ!0XAer>>}CZI z%%`w0gD%nMV+M!o;Mc@L?lYUeOv#DsU2;4ab72f!PL6QKmR&>N z%%^}Yx#ZmqK46TRxg~M}+}xC5uKXKM^4DN7*IZBw^sbNNCH*L<-ZG796yHa$TV7~( z*cNQ>bkSZb1-RYoLd)~b3FW;_YDzf}3^PE{>n7&Or$9-MED3T^fFDOJp(89Dc;~l} zhs%!>mCjz6tFw`=U@sF1F#)g|w+D`-A4V?+RQz?FnRRI&7(ZGIsjG9T;2Z~bdHG_J zAbp70uaL^A-qJ}#CytYf5f1FQq=Qb2zM1$8 zY0wx+VfK-ij8I|~hFyOF!cHY9_NWLQ{&mx~$AD+=on>X5&(Q1-T)3e(0FiwzC?=jl z-}ZPBUZdX_ZTKD>H6KB>t`K@>j?$a8eHcA>gm|alAc3O2P`*qTMi1VDb+xjzVOcYi z;o5;abWNdt@C20a&BFts5p@GkWiZ{;nE4^vORk*Gf^L5ScynG8!WMVZH%FS8#Mi30 zQR_Fv{*s2efFtPkI)&!HU4Y?2FNoY+VN$%z5?bZg!$S#qaNl!~e*X*14#QZqy|{_G zyY<8HeN8;_M2OobwjZP3ULl^xtcd8-Q8?}_4MQqdVVBMx5d83qS@PgII>{o_vtl7M zJWj)uk`J_Fg$cSE$&yzUx$ycxebd=bND@ z^BdA3!g)^k|^BOYe^grynyHhS~w%?GbH3XGLAuwU|?_wryFH}lRzTFvv3|+wm*%? zme%3Co)Y-?Wg9V zG}3}~TcCR82@KqL5%!G@z=+m)mXxI_qGvMZ9sNdo0~W!KO-I39 zAsx_T1typb!z(8}oIhtDyxije@6^6R>*8OG)XZ$i?7N4u-~u8S_d$q#EH!Pr2Y0Kg zFw5pI{5UFyN>L$@-0T85;+x={rYuAbc~b2Q@!+Dmm|2;o%an^XGOM)f;I95lOxf@m zc@Le&X=1*Recl%85~66jN&_=ec7ixLFRi)fHUbyg4nd%s0tlpP0WPe?m;_hocQC@W zjgm0l9!-<(s4}*fhDbukNwToF8KpkR!Ct&ei~Xy?PeU5&hgvaQAr-nWy5Wxc(8+$& z4z6ch2c6DnM$lf9o?kQrURHA;O#@8FlgjA==~ifrXhGNEbx`|65yrzl!|AU(0LB8L zAVQvrh|{gJ?|4ghFKy=hjOd2dcM9oEpL*yn(MRJ@QMg;A2aVa4@Z)hL`mIeu4RmHU zwlt7mw>c1!l|ausiV)+27h$>YIvCKHi}FJy;4-g)luAp{JJ;M${WSyQxRp%(10?@q zBurd#Haz|WOiZO#Kv_?IGSJj@0in}R|xf^y7r0_uPua&qo^DrAKK~d~{J-!v5fZ5Tvaitdrf~HyFi96c~p4e4;<-%#G$a>Aq znH2;Fe--0a`3W}VsUT`r$Kl`=hKkJRqQe+K!xs_UKK6@jEjz|6TAGi1i|%sUOoJfY ztqKOs3xg8k#Rhz0U5atz2)&6cit#4`(#Nd}xHB)|+_zttAs+sX*4y98%&sK$j=z zndW*qfVcB0c=sk2UiFzUHkR$sy0!uWc;2B*4TEV@Ik;Ubinf`rLc1L!MAh>c>1pqQ z?4sFFl{y7i%>518hG)su!g6@}ZJ{$%@jKCJr~0IE}8VzJBEWDHD)Ke{p4pg4@{6?LI2)di(KeF9(OIZ#(4 z4_llMQYVuS^xT}kpc-$77X;V9!@f8uQ_#o4LtAjB$uFGQC=9VBzZsjT=k&v%74V27 zIb&JD6i-_Oh8+zUy7U3vAH~bs%+Z|eKXOoEa{&^&=}>zpnWVm!hbNBiaBmQ3ai|=P zIldeAzTd?i`H+iy{HL&s0?wlR+%`;~^#X3Yu0y4Ft&sQf27UATE+hp8z|4coxDi(s zXee(y@IN-j@HT07EB%eeE7Y)jR1GfpU&e|&TT+ly4}Xn1A!6qZB9i%=%yTxNGK-yI zfnpbKpZ}5FW-E;1bt8Bw?j2m-^AK+hxsiG8fsiuN3SW93GKwe9kP~-Z>4F_Rp!K&J zUC%|ZF81{}QLL8*rY20ldsBqVWKd(E< z*#1D22$Mux{-1CwDi31|HbG_#rMF_=pw{vVQ}-LYh~t)J^nF+vs_vP=RkySxCb6+- z@W~v;XKJEN$}QZQ83zLD@?4p<5in4e0(uX$nH}-XFl)UfvK^UZuU$6N!p=bR6~CZm z)iYdEsfsgggPCA;9n*2!pYX3l5Qu9cZJhoM$j@j@`DsZmnAbBukJ;f?GeJ5mYXiB5 z2I%>N(RI!3ParGY1QISwFcI?njQH;5aCFip=y0pxxI4e1S+k$P&zc~@X*cI;m3<_2 zTl(pVf)NNG804627p4a*QsGipCTvz)hHwA=q1A5Q5RvSPrsAFuzkCkLU0h7+7VRK0 zhZ~4g?H*7cjsSkwgVa!11Wf0eVgINKcR+qEoZ7bsCG0(5%EE^zs$|0i9=ZZ@QJ!?p zoPH*@MVtFUPZ^ZfE&+p++1RV>0DRZCz@MNfWJ`_$5!s1iRu<$GapfrPUqhsn=hDc6 z`OM7MW3ayQJ}{gBtZgb`7GK{Cu`Lcb%eWR8J_{HW{mf4B^oBGYMb6l%5qPTm1>%e> zYaI9qI9X_5bmm>M`O#@OZW@M`&!15<^)r~XTZ<{r)Q5OCdvaxP@~oxyLC(?NBv9WL z)?Qr>eF7ihd4~(klg!0+!ThMKcn6by@DbTNddQcyi&TrJpm4$oDBN?H%x(z*GtM$- zJG%;%?bp-Ii678mUk0Wu{f)k!fMSAAS>YXBB<1K*+PcP*S#YwF{9R-K>-9B|+2eu+ zBZ5rLQ8$bXSH?Y0dtm0MB%MChk`0py2Fr5;MDdO@%*l=>udVr@MCLMjK?mTZ zb~WY*XrlXAF|B1Df=c^aR`=h-Dz3DC;pO(gZ=Ky$*3%;$-NO8fQbXe|O$^HfO1S5>G~%ErY_tI*v@ zi#67FBkZ1Z&MTX2_}o*%EohttCtO@0rs67m{5{Itxzs~O%NF7C6TdMg%@+QB`$9HZ z@4*FnH%M^pQ`2gZ5YV!2=SVyahp8rZutF&f)t;_kMM`3D>BtxsUVV+~-&VqjhGTUa zYY#y9whbg`*+WP?AjE70eR{qx2()VYQO>Z56fpZy;CernydMPayJc|2X#ttDFbUq? z?jqN_mN9+TcTuIR<NQP01@-@{$d#M||it~ncJ{2N+GY+0uuYlCPbr5pA zgJv4!Lfi3R%5|`2XCEF%f3gBp1OaCrtV8AB(a`xMo;WiH;pqlGxO%x2!iBr&gZ!Cr zkGW4XzM7J5dKcB+s=@{5V(3kIi2Cn@aEV0#8FZ|KH)mU6Ub_#3xeJ0y%4TSoQ%S>$ zmyrtj1QbwP3!9nMIBnbvtvj30>CZXVON=j1bZu=28t>k5=y}tlWt)C|yS6v7{a1KOPZieqZIW$^$0ZB~_MEUdS zOpm8Lt~}|FktYmrX30u&`ff2;Z^$Ll43ivVr`t zeeothlp3 z6LZZTr#Kd(pyN~S%!NVByWAHTZX<(g+ppt{^dsm-qkKu+o0l0E_u&!}B z5B)iO4n>#Az>vm8xYjnEqsl>Yhi^R{Sk=I;-SE(~e8VOBeZ_k`C)q=sTJ@>>VE~T< zGf`Hp8NSw+!jfIfn8Ow4$zcx;?cF%QE{XU@mO9J@hr`b>tMn#4=$8WOet@$r)1e^7 z4$|iDf{ZJ#I1Oty(GOM4MCY*&Y2X@?8;M)M!&@JXp68LIYbjtU&4W>VkKs{@3QGB^ zqjld_CXjdXUy044f4eV`f_|)(`m+Y2Tqilj2Q}Jjp$X*u5xn&BFvQwVgI|}AqVMdj z+<=Tcf9OQB)#Xu9 zz?<2)P?2WrZYRDCeNbb(2O1N@sZhjX5Vn)UXCm_;p+W}y*?#nW7{FY7xfgm)i!tYl zoynmmm&k&RHjr`cF$`r7gG46*;qNc8e@qzetyD2C_O$uwdy8NU|6NB_TiT=GVh1mlf&)UhIHx7lw#|eLcj`ckpbhC@bzaL|r%k zL~~CIdMEKJx6NxS7+h?{r))SHC*%_OT<^NhnibUC)f7zzgK+BLq{bS_!A?C?`k@8l z9#c53S?j@JA_K3vB;m>Zkz`-l8&Z5@0T|sfz!~q0AnGTVUGKS&mDPU-+n%rCrXTDl zcqbT6f6vDwmt=8)lO80wS`(r4QYx0fLmOj*AR$PYv{!Lht=@A`VABP^vX_vUm)GFc zum&cb@c`HRYoIH_9i|3dq-S4N(TN{1pdk60x&3+yd9q`G=(wDLYkj}D-09x`ag5aS zkLY{Htq@tWmC4uOBX;{58FA$<602fIvf1ez$=I9Zw9-2wFI&vK@A{9=LFPq-mjaGR z+Ac$g-(F%LQc9IqDZrSr6}x!k87mSaNmd7Lr}p_`ki@G6zDnnSeA|d++#)=3yB1IJ zjlf~+m!#p(M@;m8NThgYwg2zKK$UpKD6Fcsc zPwD5GnV}369+F|gB)H6n%K0$!*csw^?-<7UdBJ-*X?PO18~166fS+z3mhDtxSMbYl z&p51R_?wgHb!*`|1G6F;I{b!M&ijZ_?g*n(tf1KA5QZ)&0RFLFOuu@X^*h<+#BxrMIc67#W6!j1;s4PV2#))=JaXM`x8>Q;8_BDaNs91nk7ZMLXJSrdj&`Z z9q#58L1b+d#Z-3zRBN%PWBV6ljQ=6HZgw4Y|G2Rs83#DmR123oYRf>^;dm763gE6d z!b9d9e}eIw*Q5CRSKyr|jB(X_fj8wY&MWm~10EN^EY&Z}*9A8rSE2!Vq?gwD-Q*!w z-|H}eYlV7eMnJ211mgpDga6_fc(5s&U2VlvH$yCrQyuCD&*dgL*{1__K|gqiZq5;m zt(fG^>OR1g*n<%_e8Fu=E|mQoXAO0c)4!Puswx7<~p=0&qqC@ zWf*Z@b`A9xp1~QpL2v zF5=NUh{CAMuAj)FQ`(~8;sZhG3El$v{R@_tH1jYe&RfyDYag`v1fkNzbIdk*LwdU; zaN15wcJ1X8+#)+4*mtP`xHm=N;nY^ntg}H(PeCN^`Su0Agz+G=`3IhBmtXX7h`5^ePyH-aH93R+Y!>cVi?cO$Y@Sm$Sq$ zr%u*63rbg%K!;ErG;O(IdhIk1Gp1CI2fBrD`lsJ$U^xZP;!EO_JBTw2CfH32%DEp` zjzJEohuUUc6p8NOh_nR}*L%Vk)I1v(R=7cd&S%UI+EJG=w-6#s99Y{8(WVaTgJ9+J zE@*R8L-~~&bpua$$b$P^3`?|z28&b}>@>qPsajg;=tJArLvN#x=%Kp zV^oe;|8ge1M+Nk6vc{_7A)ke+9N{^xs~D zRcq04j6C%nD$J`;_vkDV9P*Gxt~w4yQM@Q@XAcMGNJEInOGY{24?3xzVYFX#qfF#J zEPGZ2;R-)+`i27fG$()+TPKISrR_*k>KNKz2ce6M0Zw?pbH5I{UhpXlk1fV`qpQ$x zV;Zh1Q-T$H7qXJ8C-1l!!Tpz667u9eL=I@+_6^2RRbauutR5P%wF{lnUqRg&OKAC2 z56UZ>iG2S)h;W$ndnbF+pmoV8@#Y4G3;Lqvz`tuyNZ<##wf!54nSI7^%S1de?oPj_B*M49n=v8iHX|Z3xwmnf*kwPOSSh(N z(2?teW+z|b9T<#!n>}#nj+GeWR0LQ5e#R4xW*Fuyz`R|cjp{~=SRwysLvs4LF+9;z1aKK)8Xi}}W2t4} zUt9+rYB!mp_+Aj;QAZ)c4sMadEx5Tjj@>gMK?-BXVJO)IwPPcgblp5iTbaSgw437m z&{3ir&kqF~dU0RHNoK>u9+ZD>LNS zH#wUi@qy;~)Zx~oZ1N$qiQEbhhu0pNkfm10Ii27J$CUi2O7RO68m?pZnp(ln*l7~EZVf%jMi75|lj@^8hM;_>qfNS{)LRJ z3Lps;xuZnqdgp!ZvnnywECav9*Mo`A~HzL@ljz_|iP zl)j=u>zvcbX{%{O@b{$0nb{2I?6v83B`??%V-4|M19a3N5a+o4!Q6B1aAv;%oSyJz z#QH9PVcC9e=$1Yvk@qe0(fJ;uRdI?*u2^Q8HuDsrm!$ryVYBYPqu*bMKxN)L5ZK^D z2V!@T^)?<%M0PXNQV`3`)sY6BXfYzdMlrwbH2ydHWjl=efi2Lzj0cY_mgX25JV4p? zJD69QzrfvY2JJHtpkFTQ(Z>#->96PuU=hCz&t)O>#~K%7c{0v8>#} zH{{x6ZKbkm8@cQD)%3xrCoJ%l1^w>N7^tul(jBFtV$OE>dT1|X$ftqCw!bVRnGeBB zrxL4s!7x%V3f!$4#3f1-bhfJCqWY!CBQJyI39r!b^(NFg(*vi%50Kx^65R3-KSsG` z8XSFLjCK))#7-5!{CYH6^RL21P2y@h{Zx6$Oj1JttU5$&}4#FYMeb6k-VR>BK>8O?q6Z`BVTGj^9jorJsNj^bL z$vsufe0LrOdbCk&U>RmbrjTe85jfwM$VzYe&Ryc>$IS}bf*T^HgZ?95Mr|aBnG&Rr zrRH4dxZH)>YO;8KqXfC5ECrQ3TvqA(0%qHS0MJ_%iZ($-@F>`W3F6^lyiV=JiV#0& zyH|HhVyqo2%+e;p&-vTjNU37Gv0#7+c413s_xf^yA<0fa4rfWAr_w0?B z`bLu+%~S^$x09?$s1i|68KgFg{Lry`8#K$CaYkf;hzfG?@RvednVT8q>ls9wIPVGnrN(^nb6$o#2RJg_OA8ps28;ja`|XN1~?m z(B6?ABwzU;*kM6!(>MY!fRCSc6oj&S+A*{L=MfmNRl4SDgj ztjL#JkV}|aiyiPM(~dcNw+Zd5eX-s)lor)kqNvXV^C_^J)$x;t!fOj4P@AFg$|iLA zT^=SPsTAHj<&#qme{rkk0({lEmU--xge#c?ICYmBdAsi~&}MURztT#!A8Vn*@3P_f z@3+M0qXtpRSWGml`5=q$8(E&324Sb$Q2ED0kmXxSKbYQyS2s6uUe0oZn)n7(@vtE= zp6Q^wU5Gi|FG0IqnoTFZzJZu)K`5566?~m~>OKjzL!FK`#Om zKqtKPKLwj?KhgAHW02eZ8(gOC0TEvjrpSL1>cotY-I`C3|DOcTANHlOKTjgbwt~Uc zV_@H^O=HsPnW{@~fxTl->9?~)d{G+%hZmCFT6=KHS7Xfd@uVXTKcTAD6P8Zf4YyjB zfWVU;>h{o|?%$9KmTxza!dH%rXR8y)M|%D*_8MG+gSy`#RKSSLNhxRa+?v3+F&8uf zc)4qSZ{qyfnNJQ@K4CuidVrWw`hS|_H=2+fuoz6TACV-tT1M`g2ZZhG=6;Bp;L1(T z=$LjtV`{YLgH7%y@OU@lKTV2#0>oUI>?6Jg6O+TjbjgDwjF9yMW|e9ZW4+afxhOSC zuBRh}ZVv*%XodeYr*_#wsZR7{Eg20DU!>CB3o{u1x6_#0N*ZL2(ikZ-zDTU1WT@M$ zFj#1L4la5Ip@C@#O2pm3z1vz*xJ8kXzN1B!>P0iAflG*)#TQog(N)5>zX8jTSUCJ3 z95RzzagnzhidD)Wne26|$GMbycOG-2$N?1tx@d9gMN*-YMf(EgfI_V}PCK0l=`jKD zhos}2h5C4+HxP!OT!DuvbBW?~5tEuC8F-LkLwPrhl1ujLw9_e;E?OxzxwbcuC!qkN z7E>`IwiK0PCE=4=0{OKsgIwaD!wCHAf+W6uT<^QKb5{?za>Y2y!Ow293y#6!VE%ax_W={tp>2%2d z#t)r=$4S<~mPwk@#d&9DOBIcQ1gvQS^Nq!Ltm**Xn<+Dpj~NLwVsQ1+fK6D$&FCu=L1_DcR;@IVd55B z%oMGXY}8S;-1no_$W0JO}$lF9bscQRcZmghaUlT-$c?EZUzB` zd1SYwAocq=nHTzN=-nqram}g(eB?37TZ*5u5}zwUyW1NqHV%PLNCi>NT}}NpEy!t) zv-C{CLb74C1LuPLKD4r&h3{WE;#{q0cHw4Axc0ROX1gDQb2nd+1JmRnWVnZT%0$qt zQ6N5Lqny!X1>7RgkB#rG(WX0+l}qAKw}ofm>YTMS;jRy7bz32*b1aFO;Vc?Yvq|nf zRc7DU9^B(I1E1AA#yzh8SPeb~JT(3R@8b=0{A~@eGZpA?l_vR*GgUN`bI#ICPt7Ew zOU}pE&HZTg+>YQwGe%uB9u8cd0MixaAZ{Q-4?mwqZ0dq(R!kX5c2i-tH1eUzt9V z^B6hz*NgEg6@}m?caCb}T6nG1Os6-EPI8iL`tbHb67eFIXomho&guYsbzKLwGoF(# zORj;he=u!&8A15QCVN$JeYjY8o^)R~r|;)2WD0$rk_~Ye(W?0XHl6(rw8n`1eY**E zRQ3`VjRWM$(ql+WZX$1HGU?xU5oW5Ya7(;zGwGMFqeO}wf_oWwh1QUpKNmy3+k93< zT$pOKdZL7DHA=rIAWoaQfvpp!gW_k1@3H`R*XxC48T&!hB7^0%y$5Fwykz(N_F_^S zdQho(9A|wlVqETjgMhm_5SekCcuuH6N0%LZ8c`#&B=eXv3OeAcv4}hnm1Lgi&H>Zj z#kf$ZnG}kDg_>KBQAYX=?U6MDXzhog2Ny}1cO-L(8wk5)carKNTVi4Pg^ov`0^U>E ztX|SE41h5P$LfI9WiNQyy8#!y_`_<~uYyA{#Z{aY1IxQy>&$>5ix?N z_HUs5Rf4EEEUkp^NzFot^^(IWtTtyC&Fa#sDZxZNyu$IP7+-Y;ASCB{V^77-HvmUzng%nqC3-}T1~TBCa6%&RFt`Y8qem46W&2v*mW|7`^6^> zln0Yxozq8>6*`mnKTu)D^d*REd?4L6Ik)jJ!x)vl+%RFoNh0;v2yU6W)BZ0`AekBj z8MS}uodwO4#HpL9E%YO8vlUJIgu=+uwh>h7X~(GXpG?^LX;7dxNGq1SfJ(_7pgcE= zlUltA*r8EQX_Xtt<-leM@O?b~pHS!%MFWPYD# zYNaj>;ai(PJoW>`{HgdaZ-+K_F*lak(C`8kMznkd6LM6O$}A}+%4zZ7SlR+&4@8)Y RbH)gJ^eah^FZ_Sa{{ihP;JyF= literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/store/tr4.mfc b/samples/HTKDemo/data/store/tr4.mfc new file mode 100755 index 0000000000000000000000000000000000000000..23612f4810afe7a0fac4ee928625d3a4abd8b3cf GIT binary patch literal 12544 zcmXAvhd-C!`^Rmvq9kOOk(I2Byzg^M8HqF`8q%P&OSD8}WoCpjLXu5Z%KKcGh$N}B zB}%(giVErL_xb$+&&U0EoO55}^?Ds19-i+!yx}=KCOk{<{Nn8(5YGcSAq>b$Kjbti z&81^c^daYVAj2!w3VI@MnORA@D7`oYA%9Fz+hhpOU)BdrSr@4DH-OcT_JLmi70@{T z6pGAcn5Qv6K_IfeYx}rHSO! z*drqSbJu^&S5Ozb=w*| zKAr#x`={ZYt@31va17b16-KHa`9nqK1l+v5fZTdgWfwUkhPfy=8B`3mwXdv zPydY>=?s+Z7l(au>qvNo4;y#aa#0SAI>Vol0 zy}0R*rb4sfW3cY51A8%doMq8Oo`~zQS}yt+(;kkV%U98c+zixelte|TK#X^&0Yi^- z&{Pskx!wt28WV|%JG04fODXGC{1R6W=c7O0GU9yeINA+nqDEFJhCW&Ykx{15@tXsY zt@bcyR0L;DUrw4y)YqTpITmHXP5ukfth#Gdl+R4rDUfgFETdf?%Bf zOO|v9hOj{|>~OofFjgB3b22nPpm+E?coy;ly&YoUjKDg2@_QO=ylO#{LYJe6QzY3l zQ=UySN=DD6F<6}D45#w$q22y`81;OM2cHQ-#wTeq^^6n*CQs1i`~+@HpGiY`McJ6) zLns+of!*?@aD47Kt}_0HvX)J_v0Rwh_e~r^u6zU?y9v5ND;T0$pFr}+dNyK8KE!;l z#Mcf-pigfF>UQLU%G6(Inc&5g3h;wyPcM)s$~0?34x9ilu&TdJdRjkmuqE^Z>~Vljjyy2pAXu(jV-(CP@mk#p5#?=8r|0FT|}EkHFjm6|l><29_z9(Vjv_TI|xw6z$tX?wSb^HLek4 z+pU0C<`-eF;wHdYQCuBp2$7##;hDDr*e?qP(PLYfL8F;O;&n1J*f0UZLHnWLfGce7 zub{Pp$DwjK2b0e8q z()bt-+@1q`GcTjq-Gh{#cmy#&-(kFtAiQ^~fHW5+R;J4g?p^!|%$?nE_QFEzUnHM~ zY*vLcw{DR)*agK;m^_}f@N|_s4fe|-VWtVxsy!HP_y*$UjRRyL zAp{B|`0#WdFYz;T#Uq{8OtWAv$~Q;T>YeZ5-`^@$Y@Z;g&}4YH zV~pIyFc0okqkljhv+iFjpvqQI8N7i!{g&*^eQn^RG5{SnU!bkzRT8b|0V>g_@KEF< zCQJDvE;6&`80}j{jr@Y3PSXLWACM&zp3bo09D$QV8n~%SmrR)#3Hk0%aZh;%vvF-T zRGS%)d;a01=+_yv;CqOq`XsE1-w)f4+0rx1PGhdyTyPx-Rm9d{E9%PEDZJud4p&HfweW6m@O~_LHY%_ID9}XtNiaSW39{=3(Dbf3?g=`HA~W{E%QDwSE0cv>g>@oOd!?6L<}jqQxC(0a znc{_y&%jl38=N$5LVhDFlrvRB)63hS@PIn^Q$qkF-?|8PY`Mt*XE*U5h=vQBPh;>r z9uS-sd@c{p7+2=hBocCN^4o!Zws>lc z4<5bmh0bb!)^>pjjFq~9p|}$HnOO{nMgO5iYYu!heZzUB6HH2c=Hco4eweBv1~vZi zFnCvcwYGg&M!F2 zT5Y|DN|i4ms!5yV{n`z@uXaEiUp=}k9%Ed1yhvDZ5XO%8W4K-cDs&%$xF_x`BNL6b z#@Au0SO<|`XThoZGK#aNwW9Se1tyq>ha?1k$8+}zF=*-J{0x_a_qCy{%L5H`h|q?a zk@+MjXAQl4VI$7aYDCslhjA7M5^fWKdETAq86O5c$_Y3tzLH)4brcu(XTS^}dD7-H z1`!VrLwkuhuAExWc(oA{zTX8)%J1WvoCqkZ>A^+In^s0`BMGd1S&#EmjUoKiIoxEF&Z-E%L7juk$vj?164rMR5<~LQY};ED zUH_4>Sm8x1%{8!LyB|F3Tn`cbI_P{gpWI)?3y)4{knVL#B;<1xEV%UxSH0Z=CG(#$ z28D$A9C{XSZaocZXJ(>g)GSY6?# zuHP2v)2o~{0?nxT<2Hs%onfvX_y+ZvGg!`5X#Bf=E<9WN0r}^iLJ@u=&eeJz>$wY6 zu-L_ssY!l@@}0jiDJhDYPW=w*qxadlgQK)`R37R&w!$^>dT2kxay7hyspg9!ymX!= zu|Y@CO0yhuN?NTOqLzR-CzaKR;fKt}HgH;3A8e*_pu{|i`}{58W-Dr7##a?m`rZuP zmb}2c_7KVwU`(S+|FN?c9fXJndmz@l6@&_ZK%(R_D*D!o`#m=n)4JY~>z`KP^2uIx zMWl~zsZXI*6E|3qI7dim@}#;DR#dRwgst_iaA1WS6uS+u z)+b(ryIctUD%3@PPCNtsh(K=m2_7bVz7b}vb|B#zlBlrA8ZVk>qNJV*yjncOTB#S& z%CSh${`#HXl=6dQ%Q0@=`Cwv@vllZ=k1@}7EQUd!0L&=z$2svgP)E0iojv$~*&J|! zPJNgMay#`PIr9*AnpZFp;b!8gC<$u*mxaHFGVp+04X%hnbQ={Uy)o*{k1~C7`CSC$ zoK=7%=R9u7JVJEF?a));BS>s$hJWvtqe~j%JaPvEJ~j}`6TFQ#+!|To@mTuTxeWSb z7tlF;s$~9kE(-TDP%P>Sm+oyt^}J1JwlE*};WqAXi(1HAVZ{1ra^a%#A!yrnjYd3? zA{HGT;FQ@5<>4|gO!L5XVv=F(@Mzt8+I^@FB}R6zi*rUmC|?U@Up9f@ygue^ktm5; z7XJ+Dc%$G(e}%AWXfYgo-0?5N6H6n$i;xJ)}mwEJI1@rt^5l z?KYb(zYxt8%h8}UntcC~h=%5Oz~;^noCz*LFk6Eq{@oze97NvDaU>&K1##oMTWq~D zAB=Y$Lye7ItjYbuX!J3TUe8|$XZ-tc^W+^GY3MPzhfUEyx&ha!9R=&OG$Inrfx`u@ z%)BE#1Wogyb&&)~Q928!^bB!B{Au*^TFyM?R$ySJ6b7{NK>p^pL|~Bvw7=-2AMDG> zD&>1G{k;#) z+WUhU{VW4aEZ{{`p~j~qiMns&;K`?=5OeMW(H|=2Ufm;&Q>MHI)6zu?#WKgCZX}U; zSz`c8R-ec0HUsWPs|%cjuiH`C!V(&NkJ8g#UX1kHai(2{g5+=vw?DcAnah4){AhAl zev^Y+S5j`NJ+qnue4rm1@}*SZd{7W^NG`j=kF@UkY4B^8O5lsi%QS_C;)cEhz_UJ#rhL;5oe zAn)33Trszb0r?Ze@~6!~YGlgk5#p>Kj9U3m^2;+#P+FotPR zDMszMZ6rP22xM!z$qMD4lvAEVn}b#WhVql-!QaULbum{qR?a`7ZvHdcOwR^}7$wwOu83_oQ&PQaYx|_MuOr9aLY|CDjM((Dw7+#`-f! zOrGoqrs`-j-BrxPy`4&-%ej~p3b=`?mS&i6O%p@b6hmro0Xc5sifqp>PH}8F^>%M2 z#yqn0kbAJT{JTFeA#21g-8zaY-`3-Wlp&l~!jH-)bjb0O_hC$14H|ct5MlEkZs!$q zdetWZIy^Rmhw?O5t5ODvZ)D?{jzOHgVpr%ht_gEZ-xYlCies&BBl5IgV)YCxD1A2 z0XREhKUp$yhUJsbMaiqXp|Wj+o3Oke49=$EZK-jz(p^uD(tFTE%?)MWy`Zf-g5aK{ zC^NP44gwA9EXP6IuQ~X_~RO3i1a#*|`QUAkotX zXI>PuE^bwW4u$)0t=O45H#^f;j|HLpO&fhvcazC%Z$;v54#o{TSO>W|Fh5=#Elzqf z+jrzZ+TnwYW5GDs^Uj&{o37y+ITcXW_F?K8yD=%}2dB^@o%}iW6!fPjql&%^ohlvx z{-^4hglrQ?XwZa=<*#w$FJ6$&Z3o_waZEQGB#wLHNDogH9k#mJ*4=I^~kiFF!qf8c&^QOlLd|5_cn@8gG+lCBxrWLGM#RFQUxlnt)+WMnu z3(nHrjmm1ysABGp^LdQPMX`&73Y)>olHKq^U5L!z-3xXD=TY<02m1YNF5#{nLC)=1 z+-2R4{2LwMQr|}!k+Xz}ud zue~Pz=5uk)$*1&+`5TVCegTCweBfA%f3Rhg_3JRQAiF=&3lax?>vT14&9X5Z??d{n{Gwy7_sms-2-u+5y&wWL%Ef}Qt zs`Ei~**%m?eS)b`znL0Ipuu71>B)+C?wGCw;n>Y2n;M-6SL!!cZO9R9#MVJf?&RL< zY5Sjdn-&~I&y-(Vj%fYrB z&elCpK5sW;?^;azbNcAsH&<}=%U7H$Zg%LSxeYU>9zeCU`=~4bm6bLvX0nJetekNZ zBJbOhE%&y8p!R#HFP#R1f8vO~NFHj5%AlW$IIhZ?^yX8z?3SL#tY+ChQa96^&hRoK zH(x7*;=~rTb9x8`e>)(n@GInO4}v${YvJSb7&NWZB_Y{DtjW|}M5=u@oIm)3t{GYk z-A_7je|bFE-FgCdUn)UrtuHi$Ccxs&z&I?vd&VbduI^5ru)?iem21aGUjCis+QHsLrsc%G?vsP;V{nwdu=7P;c z5%h2T0@|(8WI69CCiZaws5Y$UD%<#wdBzIlY3LHd*ZGsIbM5?(Id{?>eEH8q&W~Ph z=@VI6>TXW<%oZnp%pdOC>*jQ;g9c3!qs*YX2j^pm@qbLzpPdlQJ%fhrr%`o@KQO1G zz$kK@ajV?tKWF&^n7?)(2a}7 zy`e>07@n6K60s)%6jd_8$ml2WFv^FT<%Q@y-~nuhGdcLpheXH)cS^P%W;}o`XA|7{g$RIz~=<)J|^R;3$y~9x^LQqJsug zEtfzV-o1u`tZrtx(sa1bIH8NjCfvAW(o3Ip69dRPXqa^hu6G^B<0A<)d{TFX>~$ci zectrfN^RQjrU@@gbCC#ahxdgaQC2hoYCmw9{SSqFjQX~!kUI*&5vS6?BW69(y7YIA6iajLbt(*5nmFXrNfmSPe*=64K8H| zqKtYPa`ZE;X+SBH^m{+O*X9bF-p7!i7xchWY!NhDt!KE-`B0iL0E0gyIm_Pn!`L2o z_|@%4c8rEGCwm9TR?ZPP)D>vmXw?E?yys}y&tc@N+s>$wC=mZ5L3HsnVBa=qdny4o zmo5;+7z483WQ-edaD$9%FMF9oK(NcicS*w|Z z;pNQdXgQkk>KIuc{06;VKEheEf|00RCq=f~Ay-a?X;008B-tU@^!79qPm~e!M}*_Z zw;sA}b;;#>=kVAo4_vmP7sdPkFzbqaVW4}EG-gkSu$MNFIFEv{ibuW*qs`Y0lvPpZhSW#H0|{l4v#|)mlw`qAxScC7TbUU#cH)lj^g$Je0Fv9` zgrbtJxH;n;F7DVxr(6_*e}1y8)J72q4Qya0PTr-lDS|ltx-`1}F+@U&Nr}<~BuwT$ zVKdx8`Nal~@ir%TwWEQ1G1UuZm*$i8?Mq-vSr&TndEveYMEHlJKl06 zSh*gqKR*Yavudf<)?>754k0dum!NhXMVsxfaL@5kD4!Y5s!wKpfkir0#ip4RnYkD~ z1igXBO6Ndp#y@&RyMl<{Iu6acZs;^pj4m@*fz3Q6f<6pJud=i96fcPBhvR|u% zwI079T=sPV+wgMKiJS#*qOL-4@n&SN3A6Iz#jNau^{Djo5e5%d(yTBU5S(gm-8Uf* zxxX|R-aqX)>)IKVR5pTK6CZT$EMna%W68VcJZQ|xMxWlJ%rk=#n0>zs_wsE|0-8T`A*Xg-fkL$vkgvX+ywmnSy=Vb8g%SO9! z4Y-XvKr#3#TCg|CsXs+fv`r3L=W8&HPqwjw^XF2tSMg|}znh+Ib%NgqCg5MhTv&6c z2HsD`Gx8nT%&UNNP_VEbY8#qh;igblb^Bt}@qRv;mqwwwu@mRQ?c2=CB6l(;DGr{0 zJp(!6&xy}|U+_765R{@L;KcnOET6wVlI~)J^!@PQdj`?-qfAeVGU45S45zH*h1uKJ zlDs{>AflN=t^XCmSLF|^8mAgPHwxohM_Fh}n$1jXRwKuR`swBIdT8WVpwc^*6Kl`O z{$tihiw(PAz;idd;EEFleb&bpLrbA|?;FOY--=AjtAQO^`(Ssp0nr)tA;;JA)8P6p zS|T9_Z~ob_9{h=zwBrYUesco81^`#7jzf66rhw~}Ba`Re#zfY4kkW!KIx|+4R*r0f z!6^q=%j(N`WKyShol```Cz)_W^#^fo(wv-twM5p%j8^(8kgIhX+^mpbP<2Rv`$N-N z^??dpHlc=3UI^mihhJfR?g!@6%Xd%^6+vXyTxCuyxH!0%$ySc#z7do~ zfxr<|m*@nG#g&|h*Isb7xD+MyeWBEO4)Vo^uwsR#B${JK@&pT*1&{v1s>p*V@tA`P zxu0MSM+Nk^b%K?i2^7t@hld8T$h*RV<&`gHzW;khN|le3%UX_9;^_-$-M3|Ot1+=?dEgZcDw<_cI(D( z&s%|K)qeW;rwR;uM53`q3u%HPB6P)+Y+rhc>^Y!CWcc3E{GAq@O!Jv2>>~w|3p+sP zdDEnh%7VXZ8_@pnXA=FlhS|qkMnd-JlE|oPVs~qZzEjWz^Er)loGVYgcPN6$NCRkh zl%vG7Mx5>33QO7);nvp<&@(xU0@2RQ1Kl4GrZ$9g9!6SMbgd$P`Q!+X)jky8WeD%R zpWycK*Kqxa16RX%0kZ!dqVhpL?gif*coI1qQsxTZL%H zbDnAiNfX(<18B3`AAau5;5MIZhMzaO=`ud`=y#FqSKYJavttPTgV9Cwl; z*+jxS(-${viKE?56TwbV4Yy9dcX`h8!tKOOV6}^n#OlA~oZVLrYm<^;n%x^>yey7L z?AFC})l|^5olDZ_RJ>^7f~>7DiVN}+ofkt)$J|87OH>96@&tJ7bC{?ft4MstC`RSj zz@_I_C^+BYcz5nv?b&DC3(2= ztrcwc4q~+rCqVAUK02_cpLX;DC~Wtpwaa%hPVcthg{?c`+{z=gtCknjZnvYotrmT7 z(S|iL{0J?H3f#inqcklyf!WZ`3(WgeCgg7ko;z>>?gXr7UX}GASL+pOT&$#l=8IWl zCml%ClZ3UC^%}Fcj}cdPq*ZJgv--exOppBvw>^$AJE}N%SwI?92iDR%Lr>Y6?JMDZ z%MNCP_YlnuA>2_vNp5J`PU<3-fH7GV0w(J~(qJW49LPs0&I>xRv!B(vw+nuK{Y+>4 z8m7gQYPj$GC#FRHJlFp8XAHi21s)_Erf$2GF?-`?lob>Q!2^5QS;4zdXsURlbgMe8 z8RlVT_Gxhggohb*-GjI>T?>_;K4jwd7h(2`0@NH9pvQh6V};v-aORzZRM$^{;*ctr zb2)}NA|T47&l|@LXoLKl4%3?h+8E!p8m;^JL6KX@E?Bk)mx)eeQU=CpyZv6SxXmUq z=L2Pw)IVb2=ux<%=>WE+eHj1jESmeOLFLp0)*`P0rwJXT4MpL!`6^)=s#Y^uwm)e~ zU>&-T186=Jg}tNcc*P_TzLu##v6mw&I+;^G7C!|?qR&uzJ%?#77-shM8H38eJzN%Z zoi@K`Aurzy3->I&@q5~C);H!QhuzsU>22K637&^!%v?pu;HaB&iHl!BeI9# z&WrD~$L|6w=gW=D5iK2W4}FzXBJ+Z z^!1lWd4w~RN1ud^t=m9W!M@Sc)PZJQmZA6meS~X@BM|*m9JThvVT_CgSVq1EgNG&T zlqvyeGoJ<_MaMx&v4UO*zC*9=zDd_O)<9h54ajeZ#U&C$m^FJd%$XvEfy%^9NR)G-STjZAVapCoCxUnxzcZgp(J~x7CO>2z@x+-4FsLBIICS8_hdo_7>=MVqPA4u4R7 z(+wgzE^zYb4f6SL6RP(aHAX!?i_7MI$CMo_!H(YpHp|^5=TZ)$^6g5Pf6^C7gCZQQ zJ>2NeJ|H>l{?ZhXb-4sCQwq`QpEMDR z@h3z>38#N^BWV+!@N26Xto>w)(*bEk^m-D@W5JBa_Ao~Z{z2%sW-O@D0QTx_j)2}} zv{^4t;<7Daz`Tb0G+{cOq9Mw}shBSuzGMl}CyK%3p)2?gYUB0h9pEthlluqzF}O#R zB;1yO@p+w0f?hRuJk%G2o(sSx>&dD2u8ko-m(U0Dp)hZ0Gj=)rg{bIbzj6TkQrP|}0FvJ1gJ#)E>>Ldu3tw; z3@C|hkEQpROs@PfVft3v5TEOc!)nz-O!={o82(Y7HMo1JqTSgpL@TK7cY4avon-mqI}U|nwQl=q&9~Kb*yH$8uE($B5qASjqT}e%-{R3xRIuDGM9C-Jo%-`eOwS z;?dkXzU#Org0TX`5>WC`^1H#{=- zlwe#bN_XhciL|5S+`-pOV7fer;2|gqA0UNyg#eBwV|?>2h(ljEGFKZ-%~p_GAtx+MR;|iqDyrg(2``L>oHm zr;rtw+@WZ@JkxMY7a-4s{wc_XS6*Rwy7N0+IFkiEyKm!RS66E>7d<#yejC177&GgX zk252mBA8EAg~0ph6}-rcg4cs#c*egGu8*oimE}UT%xxeik2ryd$VX7Aeot;La3|F} z#+ZVUgG{k{9+m$&sn?H>V9JJKD3e!%e@Tc+7B1BDU?~{gWEo>vE2B)6{`%pXY#6jQerRLqi%Oe*lH= zHbTOb25zAKHd?Dc4T2U*!o^EtP&*{gj3`JGyLV2c`I$IMb{#^$^D}7f(>o}!qYQ=j zEryn<>GXJgHh0z^3D~ni7(Us`LX6W7X1S;vmuG(_PXDQrgC(YFOv_vnCl z+7#xs*?Q}JH=a*s8eV8=IRmPyztQyoj*J><$k&-r}eK!c$>UXc@GQyhW9N2^ey#ld7!x0QYxx(l!?}=1*hQWG4Hb zYF#yksSlH=VpIUitxiPiv`KGruG0T|st;xXe@Gg%Je>=3^!78i%*wghGdf|(xG;%+ zVFE43CN+{!0z9w_f|Wf1|1qap%NMRmwSmfRVc6@)f#jxsFp`lck_{{wwy$TZ`tHMy zuL=A#9%-oRwk7+~t=cq~Qhk``#-0Pks*?Sbo7XbB>fDGJ5AB zC>^`X_@7)!$Mj4g@@6Nqn5$1&=dAxQ8HT^Xr9A*HhyQ|)8e(7@^OOu-J4vM36O2n) zH&aucLt4KCkeZrHG}gcI|Cq!~FqCmXNdXDS{3XFeNF4xy3#)0iKp?Zwc>~pmn@W<- zCBux01h6-X`wx>GgFx19haulyNSF4cpLPzBxOfhk@Hdro{k==nYvx1Ibf5Y&`eJZp z+vtCo^g0i|`_mwlOKgB2xyle+Ge{nHWfERh4~Ys^qwxF%^PygZY%C6hSl$2EIl8AG zws^Lni~dhs*!U8%C(dJa`dWyA(=oz3G6$-(vKX`d?@6}646qYv`mfFr{$22gHq<+m zhwMH({@uzTa#iCIq|a$#HuYXcnQ1xD`#gnl*5ff;MhZ45#<6As4((lDw@ckl!>PwLghqM9fF1j(U%Kf<$mtx*Bt*dp666 zhLd#xKS`Y45L`-=N234XXO7FwzKjs(_GzsUMU!VowZQ0cg7TiG1 zDMVm?IAplzLb2ZfA2xD9uYW$uvQLm3zYwa_dNHxw5dC+|XL_#)vx^F#-c>D>IBvg# z(jI>FyPhFe#wrq;w1rVX^9h`IF-DtbI%61Y#%b&yQl*;8GUCawBzqOpupQ9$wIwQi zwgg^k5(;QJLH=|*ZW-?@)JVjm-R*yP;2xJ8IKi?3p8Iir!idl$JN8h(4m3Sp4Y!`O!Eb?I@IYxLO^+e8@Q^e8zD<_- z*tH5eg2T~!Uk2ve%z!;pU$DsnBFKU>4Y(D?SX76@jr3#CV!InccJQcW7l%1pY7ZSX zlhAIdJf7vnqOs+1cGc|HDDfbaWK2Pt^Tq=T{7#|8TovlCGGf2r5{F57vJr-qo}hukFhw%aH&v8z^c*DT^dfxSMecd5bbNh92+{XAx8TmgI@-jACWO+vaq z4TVYV`d>tdn?IB*b)lkB31|Bbx#4OJ!Xlm$T z7t2t{T5JHb-EF8+-eWq6699J{uF@+;iy5m>U`hrjprGqoO#Xcw^Uq~L4;5sMQqRNS z$uMx5{RgJK+e}W(S3r>)9>5Da%7jMq2q#AjYP%5QbA#|?LnRW`QPyc?G|uTXq_s0C z7=O7#-l$u`BdG`!O5V#z?b0Nkf>}^foq{}JF+4J73o^%7vO)%9Xr#)A!}aR)X{rt@ zmcoPX{4y}tud2`CaF~z9Uy1nUqsV&bqc`_B3?;MVRH7ZcNQy#x*IMSR)79jc4_8C#IUTa~feEAFdxrl) z!VWea)`YULc5>fkKh9M2MXxSVn2>sjyzt0_w|-mEc8(S7*ES&TVeTYYAcb0ri9+nq zH;8@FL-@Bg;N*ltjJ>cEbSsR>j&?5;FqKBxA~E346(aX4mXHa1v|$Z(0kMZ}ROX14 zo$8cEoVIy6p7fGO5v6uwMW;cJ?Iu((DJKGs#>}Vw8O*WopFt;J1r=We%;D!OO04Qd zS=)NNyfgsWpa-nW^HaFzXgODU`9V4~#v^0xvq4H!g7!Ldxy{o#jJ>H4TDVD}@!A(y zv9=etrafU@uF7JhnKD^)LWbwu~~opkN!FJ^`A16H)W9ri9R2AXEU?CRw)2|*ih$;?w|)wCQ-K3k*R4?9-6 zu@sHZyF#O81T(lio0U^&fz_Lf;l<28X5}qSB3AE+F7-Azx8fyc-<8GC{9@MCavCmI z=RxGhvrMAn2rG2&A7zc2;MUh0jO!&rmiwyU6wPRyW|)o@(`C{2w<)_Y_8-o?x)7@0 zy(AI_BkZCRo?zr-0gZke?K|o?B-VTuD!(P@o_iE?{lB39a}#!c{u5M{tA~y}1KR$` zn#3&+t*;&_fvv|L@oNrqNF>ZamDAVoEu6z>S;879LugBJdc8FOJI}I8_2w3$=?x%q~y8| zN*}mRJtGP6iOxjti>XKkmty-sG;UKp&PLSBp;7QtNSL4x#c~BiRzZlB)QH1rZl*L% zsE2Tc{?Lp=8ECI$k2ynMak9!FYY`_5`{%3C_cKS}+V6KHv_PAjcN>Dtzg!v<=tg25 zorQO4-RN_(5?i}ka7#-wYg<(dZ9cY;P$mxA+Qa-nxdB!zyAzdHMA2vgU^?%qLA>o| zjDGhEOWxF>Q)UCZP&1frsXRrc#212q^=EP`gpl6ER-C|pN)KP*kYvLWWKY|n?u4Is zdi@#Pe6fh#TK64ozvwVsVJ0Y}Zp^=P{U*7#&Imd^r}JyC6T+)?MCB9O$h4>6b&qrm zcz1%`{d5>rbY00zv-fCXv7h9s<&!GKKzxpSTP|F$cKJFV%>IlY~(RSQ#aF$)P=_GvF zltr8h-lNL(#mwENKEA-CKKQfNjLRwKkfIkps5Bqv^I4?Ws{qvcK+76(~)mn1n z(GC)`Ngl2>7BKsZG)b=c5XxEY!iar`G4=F6Jbho1jXF0A<=%DCUAOkYh^8$`nY)UV z-FN^$Vkon?Mw9s8t)>=_TQ}x%5nPA)}HE zzFN>`YYieXe4HSa!&ufc<-pytsUH9CPME63Ox$bnf|3FL{B6ioTFyZiTnLYY5ZocoS8RT&a20$ zIWsULWD)tAv;;+0DnfOb9{gxs!i`wtN{lb=1JUW5>Eb3r&WZBqn!H9_Z_tXN-cpz- z<;_kAIt29j3e=F>hyrA1{n@~iBX{EMsXa?v!&lvI^ZM){Y; z$XS06)s-aqjg41Xk$*g{a&9NxlSs&|h%m@XF2d!%c<8Vr6lVqQCAM=dF~rmYetIdx zi$Vo5e{L%~bwCqJhn?u6jx(fUr6y_=-bBSG-{8_66ZBjAohB`Rfk&q+L1*wFvwBFJ zxX3&s=gbeHSpO0Jq31l3JkBreQzoEHbqM5tyNv;kCpcL+U&oik>CT2LOOL{tnad!5MGGn2N%_|;IH)69NV3uvfy1yG zs#zGo4;qWr=K*HzeF#%Gxe>#Et>ED`0R_xAlaUHddiEjU1|>V7 za{Fu|@xg@lzw#v_`;C~w{Co9%`7=qzyelyIR0|G1TSZi>T5!_opQtf?8Z+g=3KYJ* zl;jq+(l+fgWaL^m4c>kbem=`39ud;?bJh^P9lS#%|2Dz1u+30rx1D*_>5H;AcyzhB zKT6*F&B_F;k~h8%^k27Y{gH5__cQ>%zCFcAxJ01I{Tk@soXbsaOh;`+DKc{E6SZrd zM)HjF_>0s$p~$O^N{M*UZxd6neWe}~u_6u~7Ukm7#Al#kQj9v=#E9o3GphAAo5*ie z1y;=q9>}}%e`&UYQiK=g>Bi8Zm<6cUI1{BbA{ZuR0czQ&g1qZhusSPEB>#MYx13Pa zTT?|7obSW7X|2$>@di=+`3?1x!_l}ajQ{CCBqS+Xfkf&p=s2BAwt1>BFRW@&LRuE& zCe5d%dOd_$q6?otMWC@a#Vm~nko>G44Ej&v?v6oF7`#odRtK^&k+pE~-D!9pY{I|u zjYs^~`=djX801~thF4w70fyX3RKQ;>`I7~YuPmp_-s`efP1`~J-yS&r%Z)F8p2N@u zv*G=sbuh!y8|%D(9x3bn{1@ZIPiSvDmS zrOVc#^TaT|s&fpOhD?AfuRmd8j0?CzAtU~AkeW}P$1T`VINm?|P`)spoP3aqlINDA zGxr>$U^ENLR~5m5b_<-lcncg8On?{8@wC`~jIrH)1On%lq0%hMjD_n!W!VVs<-Mm$ z-8YdHl11I=4PA+ytrRj>Df#U&#!wUGldGrUQ;c_&;kYsBKi3;7>YzR_#? zn{fWRYG~+f#D$~UP;cl=Zo40XmGXb-Z|M}~nXx#@7!H6MyLhbs>`(6|Rg(iVp5bag z18CI=!TnFoK+~j^tSd>PLtka-XQIhmG~klUzk=bi+iq-~E<_KB>?TvPcA#EBJoI03 z#^Y9lMCIEq#wzV4aMnJi50!>sA(_hD+F%Eao&x5lRl<4^BiO$HaH5kWoKSd&>+@HD z^v@am(TT^2dEW_Id87w;>G~kWhfL9%k8;zy;4RU^?&@VIwla|wzW)>>MO7i`Z5v4Nt=Or0&*{?%-?;5B zM!0Xwc|>tV5SknF;l>#Q>_4s!zdSCJk!3T`@7o(F4k#k)c(+L*yPW>pkOIEBn;8|6 zGfcQmJu38epq_dfJ{eGj=s7!BjXz2l;+q2NQYBfXE1`Igjh<( zplW#@&I*gbt9_Q-n4V$Qb&4|Pw#AU{d>iiV_wryJl*-&_4}^$TJMOHL9CCzlM6LU0 zaQ#=rk|{Fu!k_u9p{f|>3{uj?^M>U=6JX=yU-h%pr6F=ely8*BA-nQoQA9Ej4<`M? z-0U_=nUn0y^|ct~WJjXMb*j|2jgTQPM-@`0(4`9N`LjYfWc8pQjKq3iL}eistXN7b zTUW3yJ^GlctxYbiDFa`pW2hi1MXYVg=-upKe%^-hItCwMc<(jb&{B?k@m{WDyH!RMii%R&_Iqv8tFDH#w|L{q-ly7l-{}l|BQp^>E+JM_J$JLHqLj# zGE^b+L>nf`hNDo?Ti7m@#vGQBLGxdmh~ifrI6LnLoKbyOKPUbY?cAD4yEpZKvUeZd zbG-?DgcqZ1vKOfMmx9_{6&TPGhdw`sj5fz0^TL^|%sB-ahH$%lF5Shk z!wTF@Ec15I;nwT0+Rg%QRox+CmIJURsTHCl;=yB6E4g?<7etJw)d#D%!kRGVgpA4`=Hvlm44sYN1kUGgW)#@#XWk!_#Q}eh-BF%XC%{}_IusWkU@p2X1Y2G;+|~^RxzqP>#kA{W!ebY1#xG^K;SFeN zw-mH=wnDUrBQ?s`gX49j#73tXa_6i;Enf}0)yC^Etkj<7^+%F0(*c;Fa0nXW^FjMW z8tgx_(Eg8kF?~=p2+At`P_%FmVs9eTx#}G9b{oRgA3x|V4Fggu;zmJV35Vh( z`Da%)GtmZ;Aaw64oc7&`oKtm7gy3OR-e-q0c6#uz>>4YxB94})eub}z{Se*$myh?K z*S}|f!}8c*;GBDe3IYd6-KY+XRv(1c{1xc+{3vn0;7ca#>}Eoyc0;1v18%BIEV15l z33i#(kNXg{@R@&>M2vg}d~Se_(g8T>as^pjmrVEWKg`cvYz--`zwE26Eyz(9ZTjin z1Ne9E7WyVEBBft+z~j^?E^QBj4`TX6aH1o`M!C{Rv)ho|@rfJ#NSp99R>LNP3}`)@ zh-7w6lKB6e^7pk@{qldy)Lhcng#_f1F#Qd>l3hUH}t@dU(__YH5tX_)ioLY(J zRW;gB*NoFmr=q>&7W=Iex6zU5jld202@xt6nJ;hG5Y<-+P$kGk!LC;*c=R|8y)hT0 zwk$ziNndo<=>%h)S6l-X6(Tq}6Sh8|$8b_6(0(rq=xSOE*@gSSw!syQkGz5^uOVD< zL>=A3w=$o`ZW5osJSy}~9F||UthaFL2Trycyj|qLm_PLAw(PCCG#*Q?Qa>F=>}D2jwgdrk_1V z)T*s$%Xi@CZ!-oxkz1I!%!gYnSIY#IcoLNbtC*H2yTFj6OX9mX!BSB%yp}fvvKDP9 z*A)dg&R=hw;$gzKFc5YcXF^7|h-~~}Nc&X`J6`IL-t}f+o2rR-i|y$pg?cpE^&ajX zT?`>x2hsjgBdGP?=6n2p#sqx}q7N&3pw!l%R8A`eS$V*lyXxl{*~DVNf;1Fl0)UhF z7ae+56St{@axW8zrTn|2WaV3*CmZQTF0~qdn3=6*m!>G0ddH76{ zXxx5FbVuXC*}5LQN0o_N!8*EeTxWd@pGAzm#N*lqJ9LTifhBPUXgZq2*q8Uhl{PJ+ z68;KOzs+SVPd_7PRqbft8XkUf%O*Q?oY8SZL;6?q>c`i-DIje zGimK&GrTvTLc=HTgxAuk$UcsSZMo(+SK|v)zONFtHMPq)4Zwca|y6;B*x4v44DfvitM_Axgw@+~G zn*t9+6-%0I_oESuV%Qt|nYGXoX9+-RW@ALnvstgcI-9 z;oOx6VD)q>;CFu`KXuO1tWBnHr)Lz{zO&4t(ZfLA_@Gw!GcdiH53&zFLMe2h$nzO+ z?vWZ)Dy<=*Y5Tcn)3e6&RY3?T=%e-5bL@-Wn4-pSXBug~h%Oab5Bxa-I7zOa)?aaj ztRGcGCaHwXw4DXLLFXYUxfqzK%b0A=4S1&Ymx^1t!_qJM(9%#v3!iG!kH+CBo*zNt zYY6jBBM=lsm&5547uq`(#vEy>LXA&ORNL|pO}=#ueua$DhJCrPF^C6mY^(U+YuAv; z&7;(#?B}@mzn&4^c!8(;DSa!I%JR1e~-7JjIK44qf`TrM&-$kb`C4GEf!uDf29{Yfz;gXfw3do zF~Q*pbZ^ST4Ih3p)pgTRLQ|M&{Ax$vx*CyWVP*2Tb}h=FAa&B!ByG!ra9W-po(#GO zZ33aVM|>$c#eWHpRw^-0p}#<+bq$%L*+E)9WTJ1`C8`!XUPrVQm(=y+-nfZq6w-}4 zIh)D1_POxBTbLN89)d#QLK32&M)VEkk$0P+B6l^(wPp@_Pwc?`g%444XCgYhEn`)7 zIzw%ZJDJN`LHC*_QrGg9$p~@54Ho*;Y#ei>)B*L112O-nEOg87M1w#cYogQy3EIw# zw#+cRVLQo&$RT?ExhZm0L#Ul5A)V{Hky#msc?-f(**F(o)+>^cNs)BPOLb5^ZU7^B zugS98TPcq_o&#Ucr1SGM$!(KpoMM%OdGpNBQ)M+&HVm^S2NhxR?bXnEDuMnnCQRJ{ zcfL%q3EFCYqz01-x!(Q*l@2sve$-_=7#I)pFAA`eI_A*sQ5krD%e?;aY84Q%XeBZY zAxQSFqa;<6%u-*7atowz&13_Nvz(5i!vbu8=rh_N90m2I&j5wy66rf1$%(O37>^U^ zhGq__e7_dedb==j&}!UUR)va)Kz3#hp|!tn!woVIc>cGUj{E{>}g!;@d{Aknd$sS9~V95zOy|2{n$w~9lq=OZfK z9K@u{d(mIuJT&8aR=4>Y?Qfn5-P?TViSPGlR+2kOH%!E!#t$@u9U|)|9Ys!tH6~0t ziJMx+z;m`bD<0tnvz}?d#lcdLdY8e(rf+9nJaorH6D{beM{Xn=jZwMwAjYp#$Ms^L zph)5dtLQntUyvyWuP5;su5<=b6wRi-s}wP6{U=&tBuirPI?n&Q8V~IGh?C51;DqrQ zNqW)&X(R)LObzLmV@<^G_9r-EAcDcxi)g`gH&XKK87jx?;)%rVsPA+Mlx+No{epvF zH(pqF=^Avu!cBs`YIZTpjOTKW^XB6gGe^?)Mq4%*Qh z6CM!rvhU2=E1kek*@MfauhE9jOy@gz<64PM&-%%dbtd{4r8pDjKkki8E-7&k~AMMok!?V#G@-gocbH2QvQI<9U-3OYqK8OP6gMt0$)53r)&O}cm z6S7RRa7*wR3^wSc)#uL;$!0TR^?EXyv1N&Uea~75YHA<%V^f&Mju=!aJV>S*3e)c7 zU3lWP0WRrpfW0=ZT=xnQrs;Ji$ts=++cg8Zo>tP}vbcwNacK)A%SkdWtNo$y)gxRN z*p2?110ciPfbh#&_&*g7aHGW4;D~iEQIkIot4>SuQ#Le0j@=S4i5dWvJM&ONrxC>` z-h@dXzmm&mOJKw06EM-g9A-ro(99+iNL3twE4P%Pq(TXeVk+qYgDRT-#R3v5HV_Gw z0y2HxMbahmp3JuVM|OW!C-J+-p!WM?oH-l^+b@TpzQK6U)2so1XFsU^e9~_25lb>K zX28f?T)`Bty#$N4*3uVo&CsIy3At?#Aw|##)y6&euNB*9^jk&v+7^Q9e*Yjpd@4@y z?VzV#@F3R074jOL;ptj^^q8y(F620htha%HCSPuoQ3RZw-9)wO&*Ma$IFPkF2_?xa zt@4~kDx<=o_o*~)lGzUDQYWFV)d^H{+zoMU%OSWD!D$`P-^0E2%}0B|R89&!cZ$(v zKWpIA&+WJ&tq!iN=Ac!W7W9qSL&6gu_~sX4|7(!}Svg;vgmjmJ)s62kM_!)>& zMfw;%>nzmZ7qtGe1G4uqAiZ`YY^W`ybse8!#s^a{*wO&)&0Vy6eh<09SA(ymuIS(W z0}eAeXkj!BdaOoh<*8v9mLJcTBb>PRL(TZT(|bwE!pVG5E-;c_8Ze|Ag&Re`fu)TC zym;9H6%Ja|f59&l66pdmQU%Eq=P_9apAv`ET0XUUMiO5X!e@yexVf+%fZjmae>_;{ zBs{)@rUD}_c98n@E^Xke64OjUrnzbAxb~aFSmjv3knk+r@w^iJXH=r1yeA4=b_V~H zTJV@;Pbr$%Z^0A7tbm@^5!Nqdw-xWg^S@;q780vT?R$L z@gz)66~#1SiD1SX2v}YLcGJqp9K}K4yNF?es1A6?ZQ`%JIt8UIlQ7=#`gk7q3c@Xx zp}OJ^LiveM6Ys>VZ(2)>;_ZQsYee^cJ1Ceo1bHHhapLh3D7TA*$;2PxjZEOFzAm$C=4Lp?#J*9@30N$w*+jWG3<>?1UJz2i@e$u4b}hdp%iy>pGk? z@FSC~55nKM1GwanD@3joz)i#L@TnvKOyEXjTnCmo?|;`x!NzdeM^KDco>V~?|0&& zX}Pee(;G>PI4Y%%K$pgJlJ(b}Y1_68%uk&I>6Yh=(oHwW67M1Ob2&<0dxzV%KWEnM z^uZ+=$xz#FTYr6IoUaxwg_z&>aYEX2keOOT|F~yFl9Bd>-~tE z4?l;uZd@pg+X?ATLg0Tjh#Qk*$e3D=QSR(cVs&OE39ob+|CSi^e{+x4cmEydOj_{E z;SRL?iH5=v2d3RNjBsQ$=G4bHGF@2W0=nbN8%RMl|=BpmwSsZvWd!KX{d)PGB?KTq40#U(aF+ z`gSoJ%c_|D(OEMM$yNX_T^%fTGb3y~L%edEhTaE}Efb$@nGU;V9|0WW3?St35Cof<^dS})b&78rMe=vcym9OCZyzBqR1X?k# zd@^9?wO&|w#*J^QWK9HZglO8p>hYQD3|swtXvc>xXxF?5*YY?0hsltQp?~Mw!v?oZ om|W*V`ycy|f~IDBp7|SE@ai9EeT=QI`Ng9fXO2Nm@PGIAKQT=;00000 literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/store/tr6.mfc b/samples/HTKDemo/data/store/tr6.mfc new file mode 100755 index 0000000000000000000000000000000000000000..fe898aebc2552f4b4c50fea79c9f0a1049b82716 GIT binary patch literal 11036 zcmXAv_aoQc`^U{vwv2|d%E+n+74LIiktCH>D0fMlhBi&B%reSIZlsiqLP*B@To)>7 zkcdPH4Jx5DD1CkJ&mZvo;k>SMUf1*axGn(!fkpwr(`f?60@j!`ya`NKoq!#rJ?*^mJ!Pt!%oq(i_oZqVc|KBr@%%R;uF zg>zs8Y1Xg7{a_xdsvbt;o}bL9T?Bc0zoEWE06LCLhS_#>Q7^a>idp%7l?+Tbb+Cpe@3 z4^FptN9!d^;M9dJC_VBSVgepP!>&7EZLUw>+)3xeW4{u0_ybrf3_g_GYnE5jWy0?-KDbd>CFZ9W_c4Q+I$0*BO}nr@-3uR6u}LzQIz2A z!qY$7;LF4ma((ex^7G?Dy8ebgyL~_y{GZLF*8{eoj0T|Joy!uhv- zVU^7f$et&L(<;Z)m}!jW`fY`AaStGMiXrs=P{z~;is&XKN}Drv*>lhR==yv*T)(i9 z-}FEQG@jP;9{=46>BnlJ>rO3bYAQgLfdCdQe}j7A<+SJTdARO(5El=Q!l~PzSVs8* zDA-g_&WKOoSM64Z{yFBb>54Pla#qCqdY{qYpgWCQq5}<4Ubrgx7ysmvgP_~~fi*Op zq!q>cN$!I+5c;Yb*5u!V>z8A(Y49tW6{pkqePN(A7>f&+@WIacamAG^aoFtsFIDDK zT6$lL(k-iLqOlI78p`1Z$-ii=*+CTUY=q&BfM;T~82-zr6Y5Swti(5{-Zuy4WEnzb z;AEKa?l43o$zhW{4;4($&^N0_;dr(;F0^c;wr8bjXNCoP&+}p(Rpt;PdW{Vxdeg;A z++kmZGqx;?Lm{e7J9t}BC~!3{91S2BySCD>ld=}Ym2#wW%X)Ch)`X8W#Vpq@2iyXE z@%`{?)Zz;1xi{0GWVSELj^3oI3!<64N-MqhT#eT4u!2>Q3&5;5j@BJn2lEqD@rCDV zl(>4C6W?$QZpkU2wcsjBUxo5dD;X1O{SKO<5e!*JtH5#5Z%$Tf1{lk>;7xfK6xXug zgdh@1bc|5<_b<{u#~T7KXMp-rJ?3Pu2H9Iakau?OG_hO)T=lgv@~JEuFLtJx#S7qI zt1s?8l7lk)G*RrzQJD6qkgj``IaW_eevOMQCx3xLN=yOHO*{-&UY?-M`XAY|&lGJo zu7Pon7Q18Ee-tPdFX%pJD6nY z;H=zqYIxuoM4zkx5AQy(4*1O??z{o%za8wEx-vH#Wga`xV+av}lF(Z@K<1tBgKC+_sCQY2 zdY(B9jsMJqzI*1hMOK44Kg^=_%5Oop+zF=7&IZAAPoQ(&YVaAl0_OfbkU!!_W4$fm zXU21!DXp3y0{ZKRV#z@f{*IJzx^TAxrW?t_fuW4?~>2HpxDv4Y`rs#9{6nqBoQRm!l1^c9kKHt56^_ zQzoHyyc_NbKDy=RDk*^x?#hQ<(yD5b}?(c<%;R{gA zMUh)4s6+Q}+lE5g%ggtKzh@c2pLls|?ozFIf7o%EVuipFG&B!l&U4nHoq`)C`|jeU zrA(w=k=r05$eH*w%ay0^ks*_YmQyKvQJAajifOG+&{q5q8_C#-(|TTDzG?yZ`TXD} z8sU^*nIqeoW=wnM)uK5UkMd3JWhdmw%tOmJnJj$zShezVySdCZ< ziFS?yBVT`NZs3l3sl^a_E{q1wRfRmAH|S_!fc}^7!pTJkX-w@(ND8(A%Pqb%dw4!5 z`*_fk(T~x7!w?kqPouWob0NA@7tfqf#{Ek};EGHyJ-d7hsLrf{)TTJv(@+JvZDRD| zpaq`(U=86bm8nLNE-sN9LGHU0MwIrjCA*f;QN3UAZ1!&Uk~5{P3D4P0&YtG%RK%#m zDd1;mMMH1o6aYgc+6wo1zkl>*xZ$AaQ^he)pRVi)dIVL zMDjj?!^$~+C@b+656lRmA^|5kwJo9$mm$Q0Dk|uWS5i#jg(|(%k65}$7`$cF+4*;2 zSSSCH>E@f`ssR;JzAliPd8!*?-S_doIhcXQ^$woAu|K_9S%gI`w;`;voPE5MgRkx9 zGx2RV(CSkL&B>zN5uur^HFy@2n6w?Zw@tj#5TKX3#Ie>a8}2!*gst7y_;$laTCgw) zd2fB`bDoM}J^>nSe+$c(4ZuM5Vc31h0Bhbg(JvKsINk0w z{de+VT9WGzdAe>8IBPRnPQOJ~bOGJ#+loc#0zax(!R4995d8{i^DG%)x3_Xqx|N*p za3%ls`voXGRtK^+f>>QnqZjT6W5FpybSg<<)hr)tB979A%DYfuH z5v}7+LwnW)-p~=C7t}TJY*8Wx*qgB5-+J+OV?TWyq6EPZN-t}(AWyYPCm3wG6^N%k>%*F!B^Vu`Mt5y0hLDUtT0Nl}3>up0+-Vu;ar`XK`W{bsovPG5 zK?7qZ5%iX;g^F!;=(qAUZL!XQwpaUT&!$qaF*rcA1+9?QE=BFIzhu9n0Nu9h9tJ%t zMd!KssQvvZ?oRUMW@g_-lYnD%_LBln|3Sx%H*q#^ z1h;h9V?;(Rx5=mgC4U{IT&y5mQ{70{cdke0YadX=!I<}?9hlqa2vpo?jB06NIH!6M zdX}x{bi$qaR_BbVtf@6hY?wh08t38WwCSJ}VaFs_3cxtO2`HUzh&n;1pv7VyybUd* z0eKF@Hj?8O)#yW6YBu?^Gy{XpFH~rc4+n8Q0Z3iB4QfX;QF(12e6gv6mHX8gcRGQt z={MrmFEJwJwY^Ze%Mo|yf8ceu#=ty7U)IcUEoSono74cy%Cs z^L~(S85M=pennLN$D10}M}u4TcD#DR85FvAL7SjAs;(Af9r}6TbXA(luewb4uyxS4 z;xf4tl#0tzfSy{{3fq?TW1;zSc;fGeGBicy~$MQO47i+oB-2s8se$gd$Z)--{|!9`Yd-!3p-(L#w>de zvTP+Uh{znpxPb@o*WxGKb3F(>-z})bvRI24?`5#VKMdyQd?9&qNkrVJnv@K^qQ>22 za4r1UEB$n<+zkHkzBq7Zzy6mSOJ&*4 zyW+4s%!HgC?P61!97wLgo{FON*I4Mwe3mr)k^iAan@#d6V~-+=`P{FXK-7^r5nWCg$He%KqIZi5}~E;e5|T z)RsBO>UZ4)?n*qXPv`~p;d;OaZSY59J9kDb7@d?S;~i^h5IA!J)!aA1W9J^!4A+6x zdPrKz7DA$66HJ<92Coa3K$P-(F0RuF^(V~4{HV!PNQIBwLk6MI4(NJxA`6`2$@(UE z!aC6un0shDniYMdf!N* zFej#gCV4s1Z;_!Wv4tZ7(gjp5MTB)JwZW*3Bym4HnY1mn#PM=p$rJAp_?i)n7ydqA z4(n3bgRb$Qx%VFM#&Sbspaa~#(PwcbEr6U~{+iAVh@s&@OK5z_#{cfyz04?d$UFn| z)@{&gx<~KSAr!9_N5f!4cyvP=u0NYgQwLtb_nczZ>pmV@wlpHV)gExcT9qY!TS|?-oP*%k@_4C#%uiPAfb_iG7@n#CMGnfa$W$0j zpKT=D%r3IX*aBF-xraR$HYTl=;jmnOGZxGlM>fuPfQLF;FspF`?5%VHv$djVID=SJ zU3o%dzsdmDyp*UIHqgS+53uB7A{H!*12vg5@Xjn6Lkul>ZF{b8@(#{Sa%mP+SUx6$ zefJ^0aSe@DH|C~qSPt%|eK15$mLMKuA%7!r0TBm#aUE*9UW-4ttsL~`HBj%9+MsSc z8|IIXr2~DpV2^VndVenm+iUB{o+tC5E3E;ijeaEUXLV?%a0m*YS0P-f3Y^h=3V%*7 zfV(9(;Pi+U@+RxR@RttQ;Ijz+j(o;IPhFU(okQ2?CX(@vC)nDRsxa>P71VgP8mBG~ zfCS;SC}`gUe^U;y2nSmj`J{@cJ(Q^U;nno|`U~{ZzHAg4T1^w4zeQ#54RG8;0d}wt zYl5sK9>C38Fu*FC`r+1zmpCr^DDd>+iAaGe*{7j~MTu?v zu2505FySHUDAM^CF2T`B$GAmu=Xs2u3OCtToVDl)Owsy7`~?K~X^Itii&Fu~)IwZT zl#A6tZ%O7rJ7gMHaT@P(%FBng!9}xnG-?xv%jc}gHV5F0 z2+zqw44y4F<`!-j=Fj<*1ha4dM8iM;PgPms>YYYj{c*;d8W(s~*QIgclUgi8OWvLt zW0|d9pPQwBfb<-4WPfxFQT|gH^L>@VE3WbbjIRJcz(yY@U7LbgQj_7~fE_A* zccZI*o~5QeeeB+$cE~d0z&y~MN&HrYK%Jkk@yB;K;$se8&4%znv>&%N7r{NofxfUR zSoPl_1K;YQk_1BtodPy(p-2_NNJzm8NZy@9Hzlm(L1rSHdTeI#;`k*t!Qm>|`tLNF z>S@S4qilJ@)<;pI^#-0Vkzq%|pF+3gFIJl%%FdqcV}G)hfp_>4TeiiTXjq;hT6wi_ zQRV_m>r4Fae-LAP2$odOhKkSPWNV2eFJmW<-V)ki5&T9DX734Nv2&upAv2UYK2+uZ z>-FwG&6(&%R`kddo+^v-BDSrxSY)xBnx%G8`gIo@DvstqRZyc7M22|h7isYd-uC>b zxo}qrw7bH3r_2DZ^AMF2sHB;3IqV_t9&bUZ#Q!uhg{)+q z3?$F-Aj6kj$b?y`@a&567>f)fW`;+J=hSTSv$TfJicVttUH;dDgKlbJnyE9amTt#Q z<0Vmb$8%N}77dr9Y9Va09SJ{K2BoI6Nt?<#)-#X;aqD+u)}m4L(M*S$UQ68l=RQge zE5L3K6Nsg|VevcBim$-|5UO&OD&F^HK}MG$x-J+SwF{x)vm=D+9>Une(oBCs0>szM zg9qBDV8W*m65S|I)qT6jr3h#8N?!@eBd!0Pf$?P#$`FdWacb8Hq#>( zT1T{bUxb5LMDsg3i*E@Znor{q?=5uQ*!xdk@sR~%5G(sDLQF%B(Z8G$ZTl$$E1Xox zGrwr~$IP09TBX3BWPn3+?Z}tWTJllo3Tz(jf*D-l7&lTekvpGK6z& z!PGKlJ``Sb1=;TiRXI=TyI)^{sXAg<+YC1;M?feHb+D61YuV3C|=KL!&R!$)6=4St=AF zm#DF(8;fZ9oGwsUla2?Sw$dj&KPdeok86a6;hp(xIB%1H!h5sm4IT&Aw$L%oY(Q0u z&(R2X0od|rKPsFxVv~z3U|QJ$)D1cT-*5Rsy6aE)y1|B9d0{nF*qla(^j|bAKbDoO zc82ET3)u6eGay66i^|1?(urII3*7V;YHUS8=J7o0w95smyQX59yEFYq_YTAeNI>-$ z51#zUG;pk|ruN+b#m6!MgzteiZgb2hVn|d7^v-bfI~%zEU82S z!uNZD;?FbirT810^f;M~o4pcL#5dE7vFsc0APJkpdPu^@uh7Xq1wW2lf`a{y(E0O_ zMWF5;C=JYDBMQF(j!lNDcLU{*RbPU;hYh~|=FQBnPKS3rk5OUS5bP9Pi^^U|?*tWt zlxPmr1#O1gndY$PQWv}F;RrUT^sv*$8wB+RP(SG&iaM%NwafjeN^Y^$qcvokdI1F0 zTQFrWQ&1jbE;)i@%;C5zHYaHFRbS4B`mXc1(03czQ#~CF_gx{b8>^Xn>Pj%Yv==IO z6VQr%0&3E~L3O?W_Me!;TeDsX!nU@djeIb9xV9Komc;XR*iR(k8(+ZD^k(+F;sB(p ze5cx>2CQeF3=TedP3WXa@cCyn#_zJEw%N0wy@_M3`@WHqZgc+oca!))eIQ(X18>~j zQPynlgCA#Cf`Z%-471A^L^287Jpk7n9U=0&CrRsFPK{lWOuw;-&fy#&Wcvt+b-3dF z=s`&M#}1|hHDN%)Cw4!egUo!C#%D=WV17(Dm08^n9c}MGZlefm8Y+R6Odg{q{e^5v zWzZT}g|l1?;Eb9djchv2k}^F(uxt%2(Me)kug!ql=8bSwq6{v!+G66|ai}o*7m5wm z;-Z`C5Oq?5pEv6~5jnh=JiBDaNhf4M=#&SrxPOrMF(MA`EUHIK>pFOwo`vJl8osLb zz^&GItghRgD&DZ9frYtDbyq!@o3>E>6cZ|7Cji4MeQ}l9W7OYfjDlH;=;RiMQq^5B zsQ!g62R{@!xE9Vly9sv=RzR=1233jujslWr@U*8o>%lzpzfMzd>el_F^T%~6cPa|v zZQRhLa3N$A|ABF-M`73PW90dd)iBz451s`p(0sTEp&XJ-@i~4cmjXUu9 z*H#?&Gl_jr-VTEnX;gMbG1RQeg1x?fQ0(7$YOAgcduKd{>urPvKDdDa_01?SzYk}= z2%&T92H3FpVxp+g1PKA=5ZpWngXSKjW~mxD$k{-N#C!UYShfZ z-n9b~Y?HxS&;^E+a>!!!1+XL`8oJ9i(xFaAbnD-W`bw!NwOx@7N?O5^ViWpie*ySR zl%QgDpWs9FE9m&K1NVFCp+0M)E_UlsY}`pW@1FvJxg~5-hXX7%?VxePuR+^TfcnSh z!ke23xMt)po|x}~1~*-3>+HLzCOt|@XC*+MVH=F^TtlL+NbpPbZ?J)FKvj1)9k!*=xZwwd`b#){_9Ii1FU=1}*q4kwAb;&zb~yfHil z;y>=@?0=b~m*q(sHzmKx-KqD;M6FK#r5OU$by^vUh1lQ*`3;!6)DXqQc5)Ym zJn_=`&Gadc@KU}F!RKJ4>Mz2`mZatUo9hLreXS1+OjJNW6$#8~W2p5)kxO0~hu6NS z)0Q25?3i0Gy!l#5QX!4R#d`A#ms09Aa1Z*q3%I-YCuZkZ;}iuAE+*F(!+M6P?6Y>d ze9m3CH~j-|Z61&=eI0&eFi;Z{3e|sA(KYQ4mR^~UlQZkMWE&w&vENFmw-9OZQ-agN z+RQLzE|s|PFCT;j=+wQ6P?5YAOkL)ns%2-vu99WEP5$2_?V6g(EqEjl$3&x=)<#|;RwQ@g)#Qgg;;Q6+4whaF)` z?P;Va!~SN8FX1w5+KOW^oSKWm;mzV6y#W!r_nD5Om zmxJox&!OVlUrg8fh0^E7aaw9y@qwWd|0OMjeKo$Eae5wH`|QCUzbIkhZXV3=cNHi+ zN`^oKKa9Vh&u*91(g_9am{x5B7v^4r3ZJLkV)bD7AYuo5+EdsoM}RxOeQ1|b15{Nt zV7PSz8QK38sxB`>-^(xH@1-o5Vla;rc(DVL{VL$yX)(}>HbcwO&z!F71xN@{#j_e3 z~Re_cflP*rQL~>Q8}!RZ^P7pZ`{-;d-+3m#c;vd_KMYI z9{}9nv;C9*<+uB#kj0xX6N8!mkn$x|#ZGOR(R*vE-!1QE*@6kF7_G$r_dU@Fk=JzW>gmio@riQYwhT+UvZBj~2kQ zh#{K$Yk=%9G6#*vZ^3hUBfijxBqO4GApPMhbeP>s8^$$5?73U?vSK#fcFT^L*xe%! zHmm?Y4^^s=8E5{$ zr42~pWsAY1q914Mb>rpF3$m!zv_Pfuxr}z{;OXmHsQ$MfXSsP3p$oF)hRIo+TWCzZ z$9$bhrwrT}%kc@aGbn$&09r`bLsP3G8jfYb7`ISJ+AYfbHpi0g*(-3IN))?qI|$?Y zR3V+e8yNw;d-Vg`j@>+=!baW zrEsI@GX4C_86I&WXbfFwxWO6OvbW{8qdmbtqm%kB1Nb6yk8PjwfITUpaCGiLNSiQ7 zZ--XE5qVE^GHgYiiK2LCkt=V;hfoN0>><4ePeP<;bm?ndTXyYNJsfu+ko>ue25d@( z$$uzr9P&b`-KUZ76~GHUz5?3+=^vRD|&v0mEH1Zj(0_%r)!9YydGnundvAPs}0>9N?5LU z65K3i!H4_$q}A2~W?j((pTqgA<+DATdiEPUCwe6GW*bOssKo{LF7RlXC}ywnfFkQY z*f5+%MpYTi)BFXml|p$G-#zU+f2_~NO?XQ?5Kfe60?o>$>jwDj)g~k8 z)o1KiWIdCbxB^A?JfPd_|_9^=w zwd+p6nG%{HpjnI-eLfiYZiGFtFDEXGU+_NGm7vnxg^=WI4-1vYc7Q6@(gX9XY3RUr zwDwD+S0!C=W<(m=Pn}1#pO26-=~gywhYqCO;6u0L0@yiiC&n%DA?+i1)alkVoVNTK zCpBb^`tRPN?!~pdSFZxVEKLLziZ;W2Yg_n}sRx1L)>s{P0Nh97$>Q02aYtPPeLLe1 z^9sy`va9Ya&Z7bh*N1`6x(h5`VIQ<7$b--B%~;c@2tiff*ej)dcwwlH{mfgAa)+!S zeBV>Dg1um)odtAF$yzXo(4t~5f?@O0LTu5^gL7@6 z5n)G;IFU)g7fGW1ZdhM@09%eMV{5*s!1cyJ3}63;F7~~N22-ZNKSuR5v6atqGaF&G z{2SgR;i**T)Nxo7{s>!@Tq@}D1aLi~hWjQo(2Vh8v$;v%`G;REr?Q`?vKz-NQBm#} ze_}}otLyz2R#r8R?XGmO18nRJs*0GUq|b?@#i82NalAs`9~52M$>bvj;LxbX^bdGI zp;j5J3{J-8kDp+*g$mTEZ^WFL!ITMnK<&y*u-+EPo-O_Zj)Q|N%O;zK9f%=SsyD&D z_7k@Ja06>lg8M}hc-F#*n^Le46*A9K3BjYpYDX#TfAhOS^T|qjF)E4)ijRj4T^@M< z!ycB=+XS}-E@1rPI!@)0I3#*ar*T&In4#kih*^>cB8G<`&|eM;j+Da=5J2>gXRU)% zVcI;3*B_hGkE^0_f8qgHe%7B&R&NJhuNgRh_yn&z3*owIKAduShdI+~A>^kiJ8P4N zkCNR;|Ac1rQtu=UYhH4?QR3uV;Sx6K%)dO1ju(U_b;ISUEtn8942j*TuqUvmgix<4uw4140EQFeESMdD)i?CYd8*I*8ii?NSne*KO zl+qF6{l0aZ6Oca4t2kK;6JwQ8>D))qPNy)?&%+p}-R#?ZWzZ~Jj~;qe#3bM%&&|Re z;?LC4c0K~$h(bBzB8%$&GY2>>;OnKOkA>UGTma5Zv2o+nNMc}8}@N>sYdLk@l!Ai zFS5u=t7U7vucKJ0KAyI*g`=vKFcQO|?(;mlX#JQ6=obX%1yz(kR<|8#e`(Q#2=Y|a zgNh#wMM-xfJQ-pN_xEa`q=polXByCPHvP2Z?0b4?)P~ck1S+nwoj&b*MweEVz|_Gn zD3`hkeZ+pi#`+PQYafh;OFZcYmpQb4=Ml0@W~~1on+S3A2VdLWfF?HXp`}{}aPkU! z+|}OIdHe}`D2mB+un~8LYPn(__8Hl6_qPKb429}UADQGB)=&cV@ziB%<%AkJn>X_0^70mK7_+@mjBER z(vM!_{q#;^&)TQZb647Fh?_K=T{{ysV(yKx!K?pi0=_!({iA%r#cm(_UH${Sj{B2> zvH9J!vUQXbj)2QUiO8!LMSe_3;7Xa`=#OUn=8~8ECJ<(V$}O!6XC3_ zc)~^!z`xlE_p7t$!hm6_K9<@3f9Ethe+gf5L=%$Q8?n&$X}3$H!O4Hz_QOPnT~ECO@`-f}ZPeuP7D##1PKQ z34mqN1uCN4MitZ&rcrF=HafRcJb)?FQ zkMqp&Fg;nX3SooOAoqnR&e#2pS(05~{_QV}mkz?CF?aC(8AfU=G+?Sk2H~^zBN30k z)xK9LVg(1h$?_E2|JCGYF9q+C`EWwF4r1JV;f9wRVfM|?c&Y^wSI=g}rMIc(NGGTX zYQhGMh5xHbwf2Vq%WV+s-wU6;rjwL^s=wbPz^4E;#qhE>@^DlLk7@fNOTI=#+Kyz+vP*YAlJz$?er-s@piK#`xiR z$@Q#%`)U-~rV1uAdRU>+Al-aQmyKI78guj>ZIy4MSve&%P6g;%og1i;Dv7xvnGk7j z55qs};jE__8@9A1#i7yAQlk&Wb=~au(i%>=;8oh4luACW(*586BziTm=XTR@(nuq_ z>%SPxr3*NwGhT8M6Fw2irn~Hp>rIkctIlRFEN7pdUjF|Y!AjP(!wEV#&p2s^vRM1n z`<(Ur)miJ^)3@Ue+mqHu7VM|^ch(hLP9nPg|J-~|-)3#~JknhIm4#f;gZ*^@R3zsj zyKeahk2U>(DaH|8fz^BH)C42;@2fPlJ2zuwTN_-Rp9Vf|256V@9WI8?AyxLFEL`IX z6;60U5B<}njymt@>_|R#?X3X>&mP4h4>@>z_#jjy<>T)9QP3Tj&$Fr-fN|L|Hg8r4 zJ1B?eFXndAC%phM5kAlatc4SLS0rcNj>TZRptG# zSV9bDdzztW!WRg?7=VdswkS5o8E30>U~2zDNS9oXk~iy6Yx5|LnfrxJGhIe6?p5NX z&-Q0t`-;H6Bnu-v4RA*JJDfAe3$v!lL%ioRlyB!p#TB=xSLr_LC%TRX$7++AzJI~g zUJ3Sm2*G^oT)6NUpli-ih;?n@?vR_uxzYO!6@F#HncxEU&GiZGzO@-D`4ixdYcQNO z_>EfsnUR_L!%$Eb2^s6{xe{0HaN)T|%r;;oKjuC}83k}>=b7Vz$u&5&$`%#{+Jfpy z9*jD9(!SCMXmWlDs;^pu3v{pJy4E99?a?OaP#p)nejI|Uox!=v2&AV{SQ>Q}&ZvcR zm6UXGvG+Y(_$LxKIBDU0{>`Mfa}_Enyn@elw}`yCH?-PqWd%=F;Ea$sJli*)Yh?8i zo#qSU=I+CoP`wP^3`B809vR29>6_q;(tFN>@10ORe1rv0>w!d>V{kj>Cimo}Cunz} zA1g(ELi&c|C~uVn$KNL5C3}7<;wS|6TLz(dr5e+!4}hXoCm`xiIM>^03VQ8af%lzF z*w^*JxNbO%y}S~IJdY)G_M%=`BO?wq@7$UEdVn@hE%30v&2^h$ijHYL2=$M^C~hIz zy_w7Dc)b$ux~!#VaTg?7?Sy+bym_gd0B8<)3QJm=xKzy*-A_)(+h?{yW3d{l374~m z!B5DWr$!G+zs41l``F_+Y2KVk0Wg-6%3`N};Zm!M@VVqHb_sbx=MQDHzI}pP%bvlC z*}pl}<{glw`HZR$C-WMU`C#0zhS7ghxyG#lsMMQ?i7fzMR$fA3(G*(5YsX;oAx`g+ zUgWngrn9VGve0W5Xv81H-bTNtUk#qaW#4@`x3>#i&4Ot#F6K<{{f-BUlHt+W3=|oQ z1ns00_DaADBW_K+y^+JTKK4Jjl-q_o58r@K0`F+@lzVXeL>_8A)IvdP8JH6l4I-b% zSc|m|mVSN-z50~CvfToO@Asmmq~?=bXBi$iPen;@i>1l&GGvZco8jh+FbP*x0^ zUbwL_(FnBRdZT%GGSOYMgco6d6=`uAs((%$sy#vbU<5QqJK z&TQScBIr<92~raQYCw+Ssz29IN#+6!-1R4gwdN%M&L>{D@pl+Zn+p%lx3b))J=Fcg zZj3Y92m5xk!*(lq#Mvu(hfAa|-64t2`$6fBnz@{3Vj^s7#cfd9-cR_H1E_z|RE&Aw z3LQ%Op;g2mp9^#`F+L@X7`{rES9;M$DXP3l`pT@sTMW{V$&mm)KAK^ofS aH;5a zh?#DKyqT)Ct+q-Sw_Am7TV2T2%C{ipH>`M%H@c&O=?!v-Inb(~4<>r818xuA1P2AL z0j)UFhbP1QaO1cxbVur9p2kC(UWB;g z$^sx4%xRM@CFW;`>E`M;Xj+*{b|pE`yZc-)C8GeB@A`mhwnB4)_ZNy6iI56~Bre&OOf`B3$|h%4X?B&T16 zqhrZ|kt3&xY-SeC-ggwwSBc=dw<0(%%M+7Dr*RdmU!nP>O|WOBc7?zfW`a>n~$#p8OxEfC~oHbEs%$`~J6?4UWM=1a0xoEulA?g?FFv}7? zs_T6kea$;??y`84ysU-GCGWE?vuM;Rv!_irrg4`SzGANym7(3kZMf@kJA1h%fOMCh z$5kqpP$zg9T23v(9lgt7is~L1s_CTxEx9x-{R!OaLsUQX8dm%20lzkd)h!~ZMt6X= zXB)aG{)VJIU1d@bX~>T6%hb)`Q6tY}Uc9*~Fq;W)d3uJ9`cp<(J_Osl;fd=(lULhR^mgheDsDDT{RFfLjr0whUu_JC2XJ3fB}(? zBz@^YD4#crJ@~l;_-r($W%8 z{Dma+t&e7Fnx=qc34v?k3#siSF9_*wgLqmB_bu#bn@2w^aL7Zycl~sKe-AFXBZ&OX zvb-_dD?Io*4Ex^mXo%q;g#0`OF;*h*=a46TIn@!|tr7iAC?f-ca-W# zJ3`otudsf^3(996pt&!&>}~T=j4$-3HOG(Q+)ZY|m==9Aur=rx`7ItkL5)Cc4VfIK>KRT)PwZhrxsc1tlcDvN7R@;O7Gl?ZfZ#u)>}Bs%S{Sm5 z*JjX%rw_#upT=F#ekl`;8wOy@=U^7yFb{Ihcu)u3Mo3ud0XaiOkjO7go6oBnHqF;W zgLaSF)vEW=dc+1!)js9y^(lu>yb7GwB}x;%$v~`423)-tj{Mi1X=M6q7>aU0q26d# zc3uGfZZ@aerfjA%_hv(1K`CmSAEO87`$AlWBPv~A4PSFD!7Hl_*V)~Jd7(2Q$4Y=I z3VsFtbsDrTHx<5#mBIQjAsVoF9IS5Z!ke}zhzNKN!fQ{W`lfQY{rDehv?hc6StTg` zZ9?@$I^e0{YuMMUMw^lvVc|Y$$m)(@!J>?Fcy1Di4JxCl>Qme%X^YYkinOBkCN<8w z0po(XIP>f^`Y>M+77PITn;Vgz#n0K~zSEFn9LK8TOVGtFos6{b*q8eUCnXBPCe(c?yPF3X_(mHmF-W$Zi(BA_pGcM}bl|PH&3}kt!IXyVbTr$c+;$D0v-K z>3jzEf%SOpuL4u-C_v)_I`BaH1c(%MqiWDRFiUqOugV_Km+Em*yifV zUW)3YRJte zm6CBW?->M)wxM~88|Mc9Q=ICb3Rznd!D(L>B)P|shO#THd=bS5)>UN5iuv&I@c}e- zTnbZDFQLQr4r=DQ5UQ(g5&w#r+qmSb394dz zupoLPZ%NxqFg7zK*9!UA*ZGb_Azc_2x`?wZ|Id{B#G7g;3;(YsJx(4JJN7{O%mE_b zCdmHtu_KL#!^oY1J?y;T4G@xaBTEEB2=~H#dQe*#H3FUCS423vhQC00Q5%?6^@ZFq z-GWeJg|=6punegpclnVw%@SDrG}c!FT*n1VB(r=gqLQdG-xgv!1}WN^|veE-=1 zH8-`0mx9 zS9TUKr;CRe@{-V+KY%_}wSx^Nm#I`sA|ALO!n%}_A<$|IMC8YzEh=J2ETR9onn8!V z7z@_(;_1lk;2qb@VSB`Z68#)JFY5=BJEh^8Nhpe!6k@PjJJvWUaF^BZf}r{a=5q4_ z&8}16J;;jXrLL!R^L}HDJ!A%DN54VJ)~C2x@+Hm}w!_+#16-4sJrhh?#O&KQP`T5m z*oDY!&Qg0mx-M-Op7@sp<$EIG;t4KV=Colb%*9O081Am#S?tCOSHc-|q)UsVShDhY zPJ(0r-S}7l15X}7&Y9c}D(V50nX?n(LUpg6^Z-l67bC3UOe8V3G_;}tLYvh-3K!}ej{E9|*ZE+Zyb`?AZ zMlk2lW0aH{K|Q|?u7zqG>x=2J|7K1?RBHNtUb**whCD2+ao6Y#JP5MF3y7aJe0ub%N)WPu)z%*n~{w#h0AN-pwr!L z^k<4DIG%SW|LwA+SHJeb-?1yK;79;mNuPzfZp&c6zy|sa=V0ab!Blq_UH=nwO4T?klg{C(G%<|*Qw1*$XVOn%ee}b3 zN&2d|o~y+Mva z$>@UW{4)02p`YD)e3`rqH>Yz11t?$7d%!QBFwo}2gx562y=7Bi{MIv^Qgi?U%?lyk zTnYkrO4DHJF`5$|%vSL>l1LL*Xj)T;_QjU)W`i+W$Z;XP;3cGc`GT!x0lT~IDCkV? zG3?)!Po!Gn;ozcbHpF=gonBke!*>{7-m=1Vg1X4JTo4uhB;(53gD9!$40A8tq8Xz? z^xB8laK!o1edxSN5Vkz zdN`dG1h0|@Q7%UgHEm_!yy7U6nA8PBRjnl9U^-1X`HBYXX|OG;%b9Bu2l->e;6!}e zgkPNt*7c^KadL=UaZM(Xql=LLcN#7#e2zlxBlKF5ER@=9B3Ww}^U*S?#aYYAY=jx(FPc8kl z(Vml>&oKJYgpU}R@cUDoq2;tTRgd$8(v}H++_i`n#+QPumI`W3HX_D05_J9)O?K#@ z1p4(DqFI<0G=&&Jy60yqUwRrRxfesKnh;mwR1ECdFc;O=ZlM3=N|CHbN2zw#Px9<* z9Eon3&1`hHLPmfegdW|?`f_q$yG#<5o4DuS%V(k8njf@ms~4T*bdKPMHMM@#LNsW) zAW2K8G`zAtoar!S!JsNlF`lneNL# zB7ZYkb!5Y+XWj;4%5Ed)ZzOc_pS z#~3J=_GGRl%nG!g$yCs%W*+R`FUj$9MncUTS1K9~i9y5DHbR)D}4lflfN zLeJ_pj?pwV(iNhO+Aq(;`o}Nfsnaw1>xdv}lFopGPWo_5X*q`^in8Ck+~~S)Yt$*a z5AAXdymx7>n4|B2lP|`j3ttF#((D&(-NDoJUPTwAd_4`F$75M!k{8|Z#UJHT^I$;f zFhu`o!BA~coW8ULE#Lp5!7pagwGYDS$1o$twueDp=rA+$RH6E_@1m&5cT_)o2uf{S z&@yh$gd<#lj>4O$u#pap*7v8aHYbT*uP^GIQ)T|+SyaV#2xTKvQE5XUjMmLVF`EvS zZYY3D**fNJII+{ZuE?Dyz+pAAQpmXw%P!3BpiaIiD4v~$>mn_o*>5)*rMMVY+-|_> z-jXo6ibqeT=hA=Tl1$5N3|+?fSmF;aN(O4+8?iwzyCIY;oQmQn?mU}u}b($2p$xU!|A8IaO#~oWZ;7pPLh&gje%w)(9MDV z*!Y-J@$4Adx7IS_2@csIe;y~@4MlHBJDjYPjY{g{RBuZH{BUuF#nt}gk$nhP4(nlI zR2uFHI>>gWI#8VtJ-FcYM$~+A15Mn&!&qG;iAj#fnL5|#s;aYOW0xHDOMcGOu7Aee z4*bkxy#pC(jYmzjQe3C%i_`N@!jFAP?5*PisIuKs>r*R94-XB~M;8yk-fNrC{QNOy zzqyA_RqsN_nbTqP&pBLeUWmfo4?sV7KgcyapYufj0xhK(Gj2^9RChaefxAz{h#=tqpxfe=@mW z`nd3gI7WmEBWD*M@+m8DHLsOZCsAw8g>QXeGb{&wAz`fKk~FIj4~NoI2CS~S3&kJr z#f4NH?W7bTx?w+!S~`ac26hvRs2Z4NnE@FeV_Cw~c=mCYAq*)dFz&4rC{$8~+h*lr zRMS$rB4Rl$+A_h#`fW7wQj=lazaBD0CYB}ls}LL4B(xWGpz~)G!=qh}c-h$nL$dp7 z-LHHH;pP=2Q2kv^(aLlXkC;KXoc3nfrCvarrQlUBp#>rh@W#g!)4MKWV3QB|aLX#}>sp=;(I5{5T zT3xxblztlC3ofT6PxRq{hXLH#_>P^O=S<#9IHS<@$&f044wp6OQfxWKlW;l-PZq{f zP2*^|Kk@C|%A;^v%^BT2XEB|B*^v756w2lIFpm}$)PFBWZ1OgPXh#ci*ZN9wkA5cw zJ;}6P;4ehGmSROW!2JJw;8n|2X+ksLUB`xX23L;$F_E#8Z0huZ^> z(Z%Q!yc&`)Y`rdnOVzrFN$OOX@z5A%Sfoz)r6FiO=|p9%7QxE-eAv9y8@#4UBdIV) z<=xE?IS`Iv3ue-*9XCjmMm61=JWLNA)ny-!=g@RV3t06%3!9!AfW#*$s9T;6uSmwdSg$O3Qi{+^>#PTw*Ddh0xTx zP-2jf3!GyupmOLCNXdKyTw5SO zE*Hteu>o-=rQ{8ZSF0dAPA0h`iqQUvA9d#B)_(C{KhY2DS%}~T7)n!w$dB0&o_7R# z{9m$n@g1O(H;Q+CdRWG>eYi?uGj5)GpD^3a@LuFE&33i}V>Lb|#PuRyx#}R9Dga`` zHn7Y;7aMd9!FER*Y9G@>75?AkkA(*=h_0oM32_kjF&X9jo51wmXQns14KA*(f@Pr| z$gA83Q^POfN}6*$RFOn-C6-*$dWTl~@@dW{KiFXC2K$oo!D@Cl3$2f)+xFaq&Ae#5dFCYeJnlrr z*^5zS@=Q7~E{Dfeud^K|v<>eCMUtU&dzqMMJ=D7lvIF%S;ef<7y#C-Z)E}I1_CM0l zRo{|yD6c^(xQHf8#gIZR9#wS`qN#!Qkeo3evRlfb=#DPNr8a`^bz?Nl{EbF-cR)p1 z8Fx#^LzwJ3wz9H?JfFwM^cD}ovKebY%<=^^EuVs??M`vFWS+)Vmri1Y5eF>NhTx-| z2^qZnlJ2?knJNi$h~xcUI8olg;@5E|=7m`pv9|_heo)56sr`8P#5{;OUj`vyMOQiH zQJ<{obZTPvGMZw6D~ZKga1Y3su5gN^X+s2lvfdyW?nBE&ql{baE^TsXGoEPPfK zfs$1dyN|*jjI+@U23=Y)c%T{*TO3d$bi(!hivk7xKHyf5u^Z)AS#rw|s|gi0j63B4 zmz!2FpTRQt71N9nYO~cL0P6FBx0p3XKN+^^q-+p+U%YsWf4>SZSh zZQBHYOZzZnd_FXY72_7`dffg!3R0`P;KZa=P@L??>?{rvzZDyK%lrdDsPzq55o`#5 zel%cEO97ara#5o^7WZ6z$p*?^Ky2$#Hm)*{rT$TYfM^dQTkil#^80DnoY^qi(2d8N zH9$yd9L1g7abw_Q-cws?DpTl1H_a8Gj%xhuneHvv+o!}_-#sC36Ix*O>%=@Kkpj}6 z%TRa1fj5T7GmGawV7Shn?N9qi9$xzaUfHY3>q&kPnCrxOlwB!8! zia6~?C-bjPVV7^&va_CqV@=M3>E(k|zI`vzdsj}A9&?ay%^LK-Rm>{xUquz4F`Tok m65d<`h^+Tv7uVfn?U9ue&h8PkzX*pb-cju5#&(=M7WIEi@^S-+ov+}C@~b>8cF?#08yGtR>sSHxq)V}qGlOIYrgJ+R2v0pfRuzz(Be z*p+vfZ5|h-=F(+gu=OYB+Uj3Wed8tAyV!CS-Unl8tt|)(o(2DOTejKv9mM?x_OO!< zH4_S@#q)%@>>guC$ZmqntKpCkCGsEURO34^s8a{u{fG$t_{+b-!_nDu>y-55}qZ z`)6#;+a74ynf4#1;FKoYwV~9!3Qv%%u_Eq6@oONU`Uh_7x3XWa_j4nyev&VJ^=$YU zmn{10`XAQJcL`9%&$dL-ho6~hyzyF8H z2)e<_X}*Bjoa;odJ|EIkT&UH#aO&4LMk>2Jz&|6{;zer|`Q3MijWYcI_Y^+xW0NG6 z;B;skhqo&f4tbwvO)`qWTR|D6+PA^%zH_7$YKTH@82iMi>c4Y}!rR!Vqw^r|r6Buj zUn#tptqU0|`q_l#dLY&z2w_c)G`;LLC#$p#7HemE08X; zpz`+J;HkTn@XPn$!SGh(6uoCN{dBP)y_VR8GVr)jg&qpq%Lw&cW8}6gP_uW(sjsIz z`%2>L!Hr^ZqH^_5;)nnLfz<A%V0*qiyYS^z=sEZkrJ4>PFVAmwbnqHIpkG6^3$xfn^Gi^<=mxvC?1Cj3$ZzlL~5{Z=THWjaG!?QOWPFF-tMJL%e?3mC(kL47e#RC&jugz!ej zyS)~V%bf!^&C86Q)lw){^?^&pg|IDClB|8GMwd55Vq#V@Dk}`2fJPs#h!|(~2%f<7 z4HD3lSIQViMT39U1bppC0H0^)$r^JW@+s^u9`77Q!4HR^`%@{pB>OOC0_)IyTn?4H zG?+abO@Vjkb(FM^fZlyY#Np{BY8m_s^S=1Q)#5IwtiFKj;wtDrrTM7mwG2hrYm8g0 zKKFIv51f5f9;YlHCLH)h0^-6k?1DMmzx9yK8oY`ou7_#7z+<#t(ZD8r4WfAwM_caN zR-#y~INa`#AnHT)ps__5758d^QC>Irhb~8z<9Rgn9)sb(PO!4yp3r-IGdXS}{3vC( zgY$gxR?ef}eBd##4rNERST<1yV#?p)5@!LrWXu&kk^;E7BcZgWsh$)x4&j{dHKcjn zMNVT(4LebFjJ?A%3(AY8!NnqV=vccFO#U54-+@~8+m8!$x2+mGw%Q-(o)00p@^d&R z$E9K3>JT{auNyL4-5_i81ZoCHurFn9qgZ}91=+LA=9%H#_QYbekN*W;Y%dWy;7Vo( zOu>~W*F#d@eKg3DK@X=dR8@Em+TSZ+mfV@fG?}+Te~ce4?Hqya%jXb@;vcN;&N`g3 zUJG=dN}&Gp7dWf_8fn~d68;pYGD~kq_458i$YH8yNrGan9`vBIua-1UZE^#Nd4-(LL|Mz4B@sMy|ZhW{-KJ zS>R8!3{<2uFE*pdKn7!>oI+^aW1O?o0{xsa*`sE6301$uI(?pj>&>@u&d65drfMEs zR29dW&>4lUM>$Lk`9$i6G*ORx27QDgVD5V@!o=&b^R1ub(OGqz+QG-DEnSP&3Z~|K z$_4Nx%$JGW$Wk-i<*5H}J*M0eVnfBci1p7e+>0Z27@e!eF8fr7mdAgg>Ny@7xOfIC z$SE@_fSEK4lMGjWID)r_g|MRElO@0dX^E;)xhOExldm)5cmzb=Mo zTLDa{w1fGtFOeV>Ju14V3=3mT;rFA{kj+<*!NP6yc8M{x?Vrsk+8!gRLh@|hlWmx! zWz448c#;qtCyA@~;uf`kD4%r~XAAM5^*}0hFKLIq(r?UyMLA$S^({O6;4vmWXkhQn zUQGOb^tc@**Kl?1YB+L43B&o{qnWoAh2k0T4+)IHhkjh=)*^f;d5&44=B8@Ryr z2hQAB0!@_gc_Yap{y z6i5L@we|+K_;LU>AiAV6M*~jq&VWOAJ0LCcH4%|Mge}@PKt-zs^$!9J+Qq6^D zP0#6^qwZ|Z!){K%{wHYmG8wKvh-FVi3=xUe&3MuA76=RNfVRL96hG8Y%5L#MyKxdd zQ*ni~-RXk09^$ZL`%;qeHJ3cTEJUUm?7;l>4>qYUBEe z&a8`Lub!PxJJoC%-X0mw6{+`_xBo0M8-a z6)p~>PwxC-i_Y*HsPkhz!0`bnTX-FmecqvrI}c}cV*oc*?sYJ3b^9p4fa zy)c;Od>@nk1kz)C#!%G%4s(Coq5bwwSd$e=6ZjKAr#=9ZbE~M`!TChZHkFum>)}lI zGE`mBK;u3xf^q#bSTod%A#vyEb8#R;f`3g&0Uq$t7@_d>wXZM;1%Ha?lGoT$1*P3 z?dU!1hHbC9VQ#M?$_3t|r%oW;yl-xvUig_)EO~|7(rixX?|!f;OTi?;AI!$@T=bY7 zjOR_tU{!=BstN1Uu!wv}8QKlebIZtiYh9Lae+$tw2!MK(si^X(f|+$d2PFr?@Sv$L z z^!#*s$?hbKH}}HC88lu3v-&Eq+;RH2T;v#&)&ar0lnr+1M@YJa6Jpy#`G?V z3ZfuTngx=ZD#!~*aW-67hx4t@4wE@^*-P&Vs8GOG&+G=ef20An?B#}P*tk0TG@gw#57pO{fF~lF(Mq5V?SPYj$ z;|Yx<$a=92{#XP;(fwu+{V7Ij`Fpti@p9DVd?x4}x&yvaB`~Ga4Ymm7{-+o67gmGX zyEbr`|ATJIX(1u~{TzMyTkLe%Ppm-97p~2!0Jf&+4&{#u1^d+7|6xMi+EGE`290yE z#KfU;GzvXPQkQ8$tX(^>&yv_{K2ur8B3<~Q-cFOY9p(%~mSO(w8st%SCX0(VV4l)f zG&Fn-s`uwY+KMK4ux%z=dn1C=&}xOsulVVPBPB%YY7tiW$bnGkL-xV#k66~3f{QjM zu$2|*a611eZ2mz(-A(~=qpQ&U;^ zZ(hNd*^Q(|zm`1dSqxSE4s>r%15vxChp8#rY_;}Aw(Is8oNZ_ab$&5`5p&7>`Tig{ zzK4Bivw*r)EGU(AkTS0cxp#a+C+fva!Mwg>p5_6%O=3jD_DQ*EGS8`i@yovpAT zFatQ*yzr~)2Ce2DC8AnJXm_LpC3oM2#-%k_-}l4pk?D+P{bhKS`~e*$5tV*^ zg<1BB)a%MBBJ|G)l?Eel;p6Xc>hd^>dpDp_Vi7rT_dJvMIhS5KvI^u!8Toh^rvGtqbu1OFsn+S!s30BlW)_@Vcz=3PL4PcnJ`~%dU5>!Tz& zv&0G6?%m)X&cbiiOssX{u-#_=pfKS!J1za zw}Il*Pch?u7(1-A4Kgy0F}CeL3BTBK3M%_?&5>^Sr?`Pc^YG9a|I)GTXAE=~XF}xY zPOQ_I$t@KA1rz4-%o6@-Y~b!edeZSa?x`uBmQd_o@eLB17DH9EBI`50~%2-O|oUz9xnCj@? zf=`;)89wtZG&9AFnq=gomc>ToUu{Xk_wA=;nOE@YiX_xa)F#8y@9=K_A2OYufe(^J zbfn&g9$l|YGUxw6vtE11J|<0ejyuqTO|p2|TpA4@R$16fAHnhnUhvm7gOX3Cv_e^! z-q$+FUNvt-zV;~CUdT^EoYZJj@EA4+E2EBf8hNg>2+uFF0{@5+@FCA0B z-10PBFAM`yeFL&pznb3p7lq9cvM7H+m}pC##C+>UxOUG7g>Fovb>{aN^?mc8b*~M? z_`YZDvZs^Ho=x>m!1=qgwjFPt)oRhx}b70Kk(w_i0I!B&3JbTCn{eF%m zZ)0fb@geAQNy8_i*V%+c$AE9|9NOsa4+DxGAU+{!;g!+@!*wcTRf!FVb_ru)&L(>G zOfQVjYQzDlA>tR$1-0{iH0kj|XqBmDj~cFKPxVdmf|s$x$@w0vel>!p8g9~e|B~VR z*gbrFel3+4(1U=;AnMC^35M&t*b3uN_T!VCP`h;>ajcyOTcnO-;p^WF-;UELvw#=- zJtSz}&CBrEL4xM5N{6qSj%>`?RygAL8r&>8h|`il*fRJPORt$R>PL%lzTyCO{@F&W z@e7J*@1t4Y0-%de4NTPfVdv}n?A)Mk;=Df>=5GnclFuTH&VeEn3ADh6T|tbXT`;cd z%%v+7>p>+<4gQEZgPEl;`Jf(1EWegO;=TEJST%-GT$%{)Z@J((oeT8S@*LbQzlTbj z?SS-F4JiEE0<4)F^_cmc%rn=7eC^Mudm)P+uAd4%*Mu^>&kV!a6LLV*2Z(&c zIrhx6dW;wU#QqH`g{OIZc>Sp|3bcHHy&*00J zS$OmQq)!o1!p?MjO?@@>IS(qkxDGn%w9b_mIY)HS?yxQf^}XQi`)r3h9+jerhXOY0 z-A2(AJsPVZ!EoZ2aGy^fgyG0L^rl`E^grxH3l9g>yPn4>cQeLWZT1*#CWse41z_6a z1}L?TV-^Ofq3X8Flt*bVI9Mb@w(T7D(={D9#`lj?ekvC&Htj;|g?zZvUJTvWpN5X* z-vi(&;^d5AveD28~28gB$Ubl=j+5->fUe(>bxvatD_fP=efh1%Vmtuj^*$R zEZL#%ev;kw9qyQ~f}1D~&o_(_)3|PWOg;crhW}vrT^EcznT&eI&5Tc%4H`ZPrBh~Z zB8e}&Sy(E~eyswW+gn2%59-lOCqZ;wVU0d~9k@x@09QLSFtHcPP}Fo98(i5<{G&Y~ zY;OkVwSy@xoMu6`9KK2qTBhM{lTKW=qYXFjScvYu#moj%9+a|?WWB{p=vs&Uu(&jr zJbD_9%Z;K)i109tF-*rOX;pM)hj9IqQq1NpVq!|)!h@W6HsRn)HcoAbw1__AwE6r% zi=#s%I7gJ02aDmM7I)nLE)Zw*uET?QBg}5;BwTpq3(Pq2l;~cuAXO`l65+6aXgI5s zgda_(#nDqSr63GLH+$pEt2}s&Cyfb^3_%?OHwZ~vL{|<*P|-J)79}dFXqc%@_VCxx zWY=~)_OS(BoF3zhx$T&!^n-Dqb_h9w??A}1mnQGINMrUNWXqQh;@rkc5O4^^Eqn`(9%(TAsu!S}5P8f@+$djg|rl5rj8@%%us za4pnSlEM^|+sv$-Tex5DJ3S~~PO`GKnOQ1RVDyLtTE7k;p)cmqMcJ*GS-u)RvBRhp z_#KapoC$w5I0Kxq#Fd(vBto( zrQE-n-r?Crj}@!JnO(I|x9uNs&248N{`-T|0%w8%lZA=0f;i(XQaP^ytkQHs;m>pF z$jvP@Ux@{u2i1UgJ&A4KRoI#A4F~qxgT~HF7|>h|IcC8y`*;?{*?HieuPTh{9uK;A zjqxJ4LL#h9Q1_ zBC5Q}r>*Bkpxq<`bG8Jbn^g}k4&-O=swuNW?<=2R!-1{%SGPJLK4UO{L2jnTAzAkIS;z>fE#sGT3fxm$KJ#lPuvn<478bvm(6`pdTeXu?gY_RJwg4HWw;i?!F^p@xwmx@@%K zd{(}T4r=}!U)z^dP4YF#e#9Zm{%C^H!NZg9{(=#A9{^Ft5fhjAW9YX|G~sQe$E*rb zrSK(6*7VVDtsBT`wt+14tB3rMemHZygi4;Uqnh5@XzqCg52|j5ycuU`TJZ>gTOzC} zT>!#cwh+gtb|U;O8Z>U0L77cGJ1}5MmF^h9w{vlrawZ2CCYf+sjc4K%x%qHJ+t#B0 z!xnN$GJx~-suBo1%Ym1NyCFs`m~N@4Mc(Nn=w$7SoPtRWaK*CaY07r?Y6=gyc4d;M zt2YqwSA69Ck1kZWIs(U+OHpdn4G$b1;No|8(ev;CT$wHS9W?_Ox`xR@@Hlwl9PFGR1KMwn+)1s=AIY|5;a#5=8qDyXlZhoyXornxt5+cBvF z7QaP{OHZhYi4L$YKj9L+I;?oP9z;f~=(e?nL?oh>O&)D$_=mrf1-z2<{>>oN`H+TI zRUtG(sseR1%22ys0}EWeNUhE^+Ag)3``hmsNUckuPt&Ui4N9f=g0s=_?IAQ#7Nl{r zA7b3O0d)Ap#dV_3XvtMA+Hg^X<6~;gjtZMondzfs^#cbwq$H`4&+aDwxNc}`6^6<)now%|5uU$S!x%5P0;7jKX~*Yo+VwgYc?VUX zd|@a~ck(6PYARIW;&fcU9Z|8e68S{dV%z)>W}|fkTpzziwRk7z^(zg);Vw8k5rgW7 z+jIHU3o3O*bo?m?^Qob8Ly zXFMEDHQM39s1ue2xiA_hO<=C|d(QW1t7-PlZ1zWm3eL4OMd2y+#QjM>)jxY4qpD7$ z&BYR^_xyzg+&D&Ze;Zt1J)I_W#gP6^8KStN2W?)3p~T4{vTo!p<<}0zh`;iv=@0^A zKf|!B?m2J4w0n^$)Aped1(5w2Ltn-Z~%`b*AQ1K+V?`}gMk3LMcFy*B8 zbisn!R%YP~1z20Ojctnk4mW#3p@n}pS(9%=+{A6sS;c~^K3$AH6@^%H#1mF}q`;#~}^y>!Io5Rc7AlPI}5I13v2x(xM?n zi%T!%akg6$3>Til54mS?@yGXczZb&F(3Q~Aeh`g#7PIH>nbLWOZ$Yv|5BP}15W(0? zRK0Bg(Y{{z;mk1lDQMHwXTxAKItU+HPNGNi3)bLuF)eR72nQy8yaa(BA~>#!R-39? z_&+M*x#w5VWStGC@{Trp?GS)Z%{LT(?8_GX`p$^2>m@A`o5-D$L7WFm$I;<>He>zx zE=H-Tz>@a8q$4MQySDW*E4?%dl@@J>%L`xA!42Uwkym+=lU?Bq?rmbdO@GnPTkKJ` zdo33HtDDSB9>EI@U3gK!2ks~B;mxovw@PFV32iZ;i$bJ{XfhWLaogz1TTf8N1M%p$ z8aO+)AF6vRS@ErkC{3{_@VBGIgJ(F zNkZbhm|$^poEubwO4qxHO>#Z?bVmc7Zj7S(o=kYT=?^A82HkB8>g9p*4?1=nNiYWKQ&9 zlD-E_WWOiQ%T>&)wUjVs_z2+fJalv6#ls8qh<;f;;OzjaFqz%o3Hd?&mAGiq_5$vB zn~-HYt68bdztFjG78q3jMICz^T=R7VY`zDuYnK?&fB8&{e65Q`h`&Ed_bh|;f7Hp! zOOhb=sT}=kGRgU5e>4eI$Fz@w@Z$kOgu^UGxw{^$uVm26#q(e|zldGzeViae&NQ;{kJNB$Vvi!HC5! zfhV)4Px=B2aO)3gk{@12&VJd1848JXn0-lC1k}OP?Qvwf&j%P0^`uM9J}^?jpDFLx zpO~8Ig{wjeC~YZ*zgIi4B;zX0-*lh898bjsB2Ju=cdZ!aCeLcUYlbM^6EyivCHXe5 zgYNk^o1UFJ3R|oXqG9e2Sg}xqYDrf>tR7!WjjbMLs-Fg_V^?8N>lqkbdCDeL%CO3Y zx^QypU3UAMP~aYpr8wmtElYn2RFnSa`{%r+P{At%FG6e~t2hmk>Q{j8!9aG-N?9sk zF~p9)Tgf5U^;swT0P^Ij(0`bdK8lc9V+c9PLF~UJA~3DGf^+?38pk$3pZxr?icy#P=MW9=vv;#*K>e0A$oKLlY&rcJs`ke*Q?}oOOX20* z65f~aZN)IBmp1_Caw|}_uK_#lG(fp40^Uz#p>R$4hqS0ce926e*$9Wxc z$TzHy{GtMoOx##$&j#`^H;vl)U*`_IRfLj}KWwWqZFYalg9|?LqF8V-s_mUV*-`OE z;Rtb9tfB_Ru7FBAcu{cqZ#<^^2IucTMsMBS z4IIO+vc)0zEvSmYG^is?c7@I*{HkqY+yZjfwrh2;_Z!}$w@@FhdJ&JJv1%A?Z2?oiAAy27{}|!LSqxv@zm_+@ zUC~0y6NPpUkigb07EkY)GOqajaR*QCKsy^{-(N>Yr(x-xn_Xkm+?Q#I;- z{s14hvSf$5AUoyJBitS!jb;wtaLJh<^bBt!F`ELQ;I}0svgIEwJeh=ibafCx;; ztRVqYBDpVk)Y12L7p}VRin{F`=vb3a;#d5IozZ^G)O~K$+MVUh5OBm*s?yMQJezDc z{$f6z-x7mA&cl_Xhfw?HMYR6%owPkM1d%0^q!;=IS~%WLtt;D#5x^o$_>CuR}L zcV95r(g9t*PU=h{8C+F5ll*l)2?n>TY5DCkI$KPU?fQEYt*(v1pj{I2z2QLZ*POuA zt$WcdZV#$HeuaKsQPk$9IVhLhrAr><(#wC=L&VQwlssXK(yBVdE1-mwM}EP0t&2F* zz#46dI@|K z<}F!Gg-jmPt};tD-;F`11?x~I;t_Go(S)kVy-*(d8WU8evCj`*KyRKWq#{F?8u{fh z0zsSU8xv1>>M#Xk?iQle{m*12>p<7P%E09kkx0g*&?-3){RUOo0*ffn?;NMi!}8Sp zV;Ot?W&?_Un7nf)PQ=m|*vppBaf!n|q!(Y|KB1+!&oBg(^P`C2iFSs1meF<@6ZY%f zemvM4jY4lGh?QOudqeCEW=g(+tJQN+bb&JJ`|PGirYb=(p9n274W(TXnsDUbMqFU_ z1CE&9AT|=BoI4ltuv6(X6c?{U|FYfa%59}nh5TUjKql=~6=LKX#ZW+49$jTpP}UX6 z(qsTHc?XmTUk2w6`QyyS3K;FlA~lZ+*uN(I%&C9QjBj`}K%5_zI47d^g=(VbYmBSP z?aJJ7Rn#iXal`{A5L%nHCngE7<^YeCh( z)o|+PANJE~L8|870=X?6%pCbZ_Rs=zl)X@aigYp`_2p~c8WD~0PG2FUvkID4^`iKZ zRM@%fB-`}iEj-~Dr`)aXT!=A;=I}`9?r(vd{)=3p4L>m9voTv{M&aCsV3eEm#kZ|# z2A_}&sC+)ba0WJkWg0)Moy?Q!FKVzqULO8$pJokvL9G5f6zpFPZC-6~d!sLuJem&2 z{2QpONE>_i^=B}>aTju&)^H0Qa{j~Qnk0bRzS(eO(t|m*s=dYKau1uKIS$e;*T|FJ z30e{9MAxbHlP50|$XILQf0)8gFIYhXet15azo!cb5Yf5bI3;m2SWS$9JogQ~oU(+? zzSh{RJ!P_wOkTD$-><>;n^vT4@E!^teE}c1ZnTog!F6`o^z{Un&gKEeFph#}o;!7% zwvT?1@oH&4@ElWrd}Dw5X+oJ{F7SJExh_q4uv7mJm-8T)J70YXb(Ne20X>IcL$wJj zE5e##4=coTs~`oW*g4pipl#Pe(mQw=Q&YZVhq8o3im(OgCH< z=!5b78zJ7pgK*h?oZ*lK`z~z;n~7CKMPCv+C%X_0#h~;un*`*9FC7fi0?#8yn{HEwp&4p9-l3=74%*J(X zVoh^$p(u4B7-lEa?wj+uuj?YwMj;T@N+f7c@kDdOAYfp+1l#j_A@C+-kh=L(IK`3S zkeaz4dX_z>@5JANK&&)c4SYkt!1XkxkTf56q?qBqksBgo0ecUvBzlSh+~V7w(6A$b zYRC990+SuSes>>~c9@E;2kI=MG_ge@`#I)a3uFz07eHK3BTFusTu*Z?bQYDz#_{st@AA?$c=o3#f`+ z73t<{V`shWg_^%BNZraC<_6M$C(RmIGr>~ib17hZK1RWbRjDYZdm9Y)b;2y~N)S@F zVXM21;oI8Vti+yc&HClhn11OB)v8+t6$i_?D+4dW^Icw0=&*_;#{Z#53Rc3Y#SPpK SRhl5SW zgh6@1KlWAS6TdC&52)=)qCNStv{Z6JlgUSlyYL4)R27RNs(lzEWeq<(@?hGNOJF|H z9L}BcBA++xr!nLijp>%92Zvpn!c+Tj@y00jR`Us3)ODjcuLJE)1;g=(SzwkZO~-jl z(YDN1dh4(uO;pH)HA0V@QUw9SGIy|54HM8#>OZK@Isx}=^+8Lzh{?@<$&SnYAWGsD zv@^Vx8m3;MZh9x08lwQWEJJXac^;`k7V9bhMaA3GXz?3w_IgMR%I{x-7R=|%-k8eH zU-=9Zl>hK2{yv9+5i=n5wXK@iivLQ-T++eoU^*6ucd3$-C;vrkKhMWl>b-N-B!YMF}(G#gR*>QG&=Q&y^Q?` zs^J6dm*^bWZ+nP*-W@_NejFeuHG|lBy#bYX$(&8heg6GtnZ%*h6mDq_v67&fkbC9= z1R2Uf=gPm}Zjj4tmkB`lBVm^7-AXRUL=kc0k2Lbt2wmp>3Ps+JpvK=k4EAH})1S+5 zzBL`vqyNFTBUbPeLTZqlv;0g!H` zL?T*LY2KhF%+lP83w_e@)TCXQ^z9Z;X2N@vO+E{8!DmqR=_;0Ru7@}NL^tH^UPv~n zE~I%^I52y$3lI7q#*}lqc!Ybx6Pvdi{_cDX@2^qlDQE-dm^(b_L?M_j-bJ=METPvP z^};UO*LdLSMGTRt$J*q#yxDu4P`&#!3awlW=k;Im#}$Uto*jqTNW%iMqv1Hc6B`02 z7w*9=ZRarN+FNXSILw=;ZjMT6_GtUU3YN75@K21(p*LnOV{YK{hBH)24b`Ho^vl{-&?$l!)!{fP*U)c;cqdVEmcI7lO~K5uRm0|MdD&N6TygoWX{+ z$8tx`7Q>Fp6wuc{MlbG7BOG514&`sc!#Cf-ZC(Y9j(LR2o8N-p%L2Cfiv-AD*CTo= zg`m5<3En^r&wA)JJlIr^DI?VwFR~n#UHiu`@ruKi>>5H2067w*2m78|5PD4&l8mpw zQ_)qt*r64u^uY-`?yZ12$!L`AeZ`(+UdH@GOK7-F2J4%a0C&|3iOVKcXqZai(ykx8 z>?fIM?eYL`A6U!s(i73~ffVe#`w$a@nyB00S;($@1ozUSh+}&xT$}k7R{coi6$)x$ zkO0M6p91EiV~>kP*FwR?a18zVfjRD52Gy-;5O@9$q0cE4e_h1x%1H4tw}{~k_n&xX z+XFT@Cm3mm5IjFKj0=@+!H3{IAU7}o#cP_0u~IAiS9zZXH|*!RPE|FY^_?%|M%PxQB~F>)(p3H&F7B`Gl%gTd&rTp`BWC45WCKFD&5AY%i0lk z#Qq;YA%y+^OsaJtPWoN}@9H;Tyl@X^U~3FHtv|R`M*`^hF&qn^I@D);9?d#7mlofv zCpriGF!swW__}sIN|heO&0VM9TZIp7zGp}!uPq^!$F`%0q%W6t&VrWC)uH99nu&ql zG~B%AG8{hi4Bn5-L;LUobTlx4PfcH_mPZ;r`mY*ZuePG6(#$9kIY*m6-ynwOdZ?D^ z0XKG=!=(%Naq$TU3^p`{^L`C9^j9d2TjdX@6Mr$0f=r@X8B9+^Nf5QQJK^*MXL#+@ z4$GB&P`gwFHyhh=M{XL>l-*vmWbt;oXxbBY{m2H;Eg0K<&RdD{(0;fZ8jf7QKMLA< zqId&`b6nbCrpb1mqW2OyHSH%)!e9aT1hk>zjdRS@xt1tLbix7e5j4Fm4sDAMfp^;? z_%UrB*w5R+(-;n;rBj?)y2ANOSew#~=&cl}ArOHWuT9Y>y*eWgCaeDd5z z1ML^M;Zm;@viU(6WsXvqll>f%s3E)W(STtRIqdNGZ0oHT-f~lt%c)#Q9{EWUQCq1T zmu#3yLYt)Ng{f2Vuy-A9&&~y}U?23lRz$@v?g3p*2j;VD39VJrhjG>^(5xDQtA?Y< znvXiPN@)sinC*+%^^ZaQm^n@vGGLu~A7Sgx4K#;W&W{ZpA)Dtdf+j<0^ztqte%o8= zsozN$+hUBd4HMwf`cG(FV@G$3*hAC78>Cd?EZzKhCKy(9K|6O7Equq5Wk1d6$=pVa z9gswq^i9yP^eh@&@}ni149;4)P}h!)1VvsGjc^*|=X>Q;mewSxmxQjeH z{}QJ9s-r+-9US}XNSv2`r4xTx-~!ilSpIqwyg1m3@#_|$S>1eyO%3PyUkm1VyQNs# z@dgyKYXvn?1LAyPy{(5ET;c3>O% z)i|Hf^4rvG%MJ)JZEpII>c&cPCu4R<7c>Z^&- zEoYLEu!3p5issaYr0K*G8B7=)LhqD`@M-2ja2m>?B40vL`L`q_d!3?f+m(odtTQA% zYNK8c6sV}xI~v>9i$tszt(7X^T)r7;oIaNq2xB2 zb!AMq=@pTb35Jw9P2|=_T0-u!3^?QV4+JR(a-$)9nH}3P>xUvgd44=ZdTju~+W`7= zrc&+WZ)`_Zw8w|My((h5x{5)-B-A^k9N&0J^>$XsA49 z!%L1r@G}t@|2v4gydZ_eJ{e_hX#)R0le7OaY;KUl@QNx_jO>Hr!WfqDss~&~)8Llb zGbUT5$;wThGNGN5VD^^JT%q%6%oB-*t1<6!fB!zTys!vW)1JVk5jm*+cm%pmOy@3m zZXVMb^6bf!m!O^9$F96HEJ>E8v7XS z$Y1E(#711UaBb2tST_8I>z^70p(j7nhm{|pKxDS9NV*EYxWt-hcLvZcGb6aZ#m(gF zQV+6t;d8Dcq!DvL5GEZT!-A(uI6ip?e32F7FU0E41+tgM_rYQzP?ZYv;RzE zy8^iNonBaPSq~-ITF@jGf|}3n0N;KUxH;y-0g(yZVVyzp?bIT=^QHk$z#xvE&3ET^ zY_Y&n?K0>}b_b^Gh|1-LFk{37)?J?sDeK3)j$Lc`D{58Pl_%H8M&C|Yc783bn-MKm^?9<42flTP;y!eD~Sq1vB%o{NuJWAEkup8>4dsQDX|%>~Y3QcUt0j6xH}na6+R9g}w9Ps%4?Rd_m z6Cm-k26mZCQTg=SnCSb5#6_v0ev|{$T<<4`&i1pCaeYMha}1mhmj<25RlEuP((t%u zGk(n9MOtOO(6FQyl6wBY$nx<}Eqjgn`iKw`K9QJQ5P+0BrtsvC7Ek=HCJM{c;*fC$ zHT_eL`lcB)aEb-+2fMga=euZFSpazxe1Mql%tw(LBZ#@TpYrb%qFhQNo;ZCO+EPS0 z=lP>tZ2f0;XvHlyVq8a-JN+WR69tLU&uM5YoyRU(1kH&>&+xk9%<)m2K?7 z*ZDb{u_lHeJHw7>OQt~ToH8hxJH!(ToQM;8jB#s?8Dp}lI6dV!y)~o*f@inEi!@V` zYLrYoOWKI^tt{{`Tul}3?V;zzZ-LpA)95@yh+bG<3J+)!hUj&G>TNw(KX?f}ZdOv= z-~_HUD;zr4J*Ry=8uVdS6dY;3iB=Wks9#MrogA zjI${1Bny4-OQ5V|35`juqNA)jT$3~*o6%*O8D4mnPWv^@DU`7>7;SDOxFSkY_9EjUGuA}&IEOAch# z&8J~w-khQF3vQ@%HfRW$vAuT+=-qlsJsR?Gcj^udZrcaf9-gJK`WvAjv=U~%G^0-s zmqPFI8tz?rILt4TC5vyZ;EDM+(4yg;nD$^22Doj4Fr~|5`*$G>S~;-K2P)}7Syd=m zdXf9=b_J|{*|Ws$*LiL^(M-qsDkf~73!T?bvRAS1nPYJiS~e#_%qKZI`$s3}zH8wI zs~n;5_gxUZF~ZAxl4&jUs}PfnQX%`$PZY=NPc*;%|u-Fmk6uMWoY-QY^uK`4Dt3+d8Jpla?<6fAY**SIu*pV>Gf`7# z-f29qkd2H*Ov0GJFYx?XCA$q0ClhofniRP{*Q2M8v|7}qL3)n}=G(#Uar&k6(puk&u;mH_w zWZ~2Cl_c}md({8)3MMIzd0iH|(7maiSbY~D1NV)H@oF(xGQ1T2t&Qd_a!Q5Z>HvKE zcN!}RTZIb`{^RB-FGtg3bH;EcfV#WabFHPGgm(j2-_Hb8?^wrM9QzKICJkWEkIyLB z=!(-))2Yyw9Q5%&0Q0@(P4GiM*Zf#UEwLojl z^=x75Cb-{J27JY3^mdOcxsuaN-0YT+v(@b=t<+Arj1M$pLKfC66vExx&!fwo1zgE> z39!=(hPJmx^unFjL`Crhak0pt4yt?M$E4+KG-VFW*6GCq*Ya_#R{#cS&4t6eX_G_z zED&v8PI*4RnQ8nUvcR;9#y#zaPcp7!n)5NKQND!kZ_ePH1Fvw;(o&TDw2F<0&7?=p zNwH;*?=pyZPUh{lqet>q!rtSnpfC9yh=`e?WLPs48K1)R`4(s}6p0EpOL)csz0^BS z4c^YXLdXqAn(^9+<(ApOp9#Z|{p1vkZtvkAob?a)O0?nnz-dSVG5X$C3LA-_z{5Z^zrKb_x@?4h=f0tRoj>llkxK<~w$Q->j*52kh|#~VG+tDn z8`@z3Uk~g<`LN$8>D)=|ZBL@Ywr99hzY2F(j?%v9|L9X~4Swy$R$@}QhUQHD!>mij zJl8ROCQ#jgIC7N2doxqsbo z^6aZH;aoq&DCMYxNLs*dmzO!^I%(9HF0q3BK{{+QN>^jZM{@ZEDQJG;VTj7@x%mu z^zJji*$r^`upIm%%V|z;7#;U*KXEk3V1@@~qGY%%PrYV4>kQJyQ)}m;yT2tG%2W`+ zV+|<(RShLIR`XOOD6_cufsA1h`>`q&Wped+^Q%9=N?9pvD;>+6PFvy>yGT<0q7@f! zT>(W^S9lgjkFuUOqQrTLGsFK*| zkGM=P1(mwXDC^|F+v@len%n*G<(3XOk-Z(4%W8t<8)KA{mWLEMC;Hp*2$-BaLKcW- zfcYd23IX)@;M_il?oP$7Pls`m+);Ek_yFfD!cedJG$^bNp(7jg_)=Mk#9?Oy8vK0<&8OC+`3~rcL;-Y|q;QTg$Aj4K3_7 zIR$3w;pnL|2`=6*K_{0gD2nf-w;$XE$sloJv0DK4eH8=g=~BGJ^GCp7ml$>%@L|i2 z)9Ae{AMVvSpvNL%_DnH}u266WP4}6^w5=IZH)t~7o!59_BT}HfY$o#S7QnH~qi8gi z<0zaN^V!mZU{b*aIzLK<4Myb60aEJo%B#n!f}RoxhQysbRdBF`ZGM;fLox-3BWcAq*g)z_!Pst%5rQ zem_nPf?vbV*~f{FsvNwO9U%glD!l!!>!E#tFtXAfDk%3FgJO;0p>3^|L$`N%RBV#gW|4 zj6!G`bFeBN1knOr9_(~Vz@4vR=%dC7tophj9N*=NBJnp!Bb!Km?o@)ryOLaQPz?Ob zxOax z`+elCxa`2!d!2z`_#1rk+Cf1@3EHn4qH^B>C_B>$6W}|gZIpX3V-(tVJ)+vrJ9wJe z4ou-<02Xv>LeRz?D8OHXlT_p@0`$n!Zq32N_y zF-Hhdwz~`cL*8Lzt0Qz>UPSk4y{8Mqa+>}b%X7CTuRsU85dIZ`P%88(7Ut>q;kLap za4+{AT7@g3bHfmdx)Z7z>qq|(51zm92`*YP9CLm|pytXrvi|Z5)O$UEvC)Q5w>1yS z_=C{mCj*~O?4vPC;ye+hOd7{uZ}a(OAs!qjfg0I1^mv;c3RX(-~zJ(tDK8Y4}1=?P{=7a^WJ#pPza~kXS4Q*!_VENvDNPTsabVzTZc6(~! z?NJ>noB1Dky7@NMOn=Ae8x>;K!u7bl+m<%PYQyJe3YcK!4~Y++Qt4qHtqX31YX@X# zd{Ge1>J+34Y8P{x!nflNs)bRPrD*WSRk(I;9CjyPMrEx%V7=!A_sqfq-egatIl78` zC?){w%kZmNpGjN8y~~v1B=LC z#d}b-bDX9fAVYItK}%nX<{5!q+m}5y&pBLoR{)A@_CrVR zL*9x4PuO$A2xEr(P_tw+`Ej9`Y6(iij=P_1q#Bwb(PIleB?d&|Q8=gy+M`%-06nxo zhsmB1M_%DIcrNpi#;tilcYOSh3T#`=497R4(DEVX99BY9^n2KrgL`4q+2?ff)k*Ah z&o^B6GXjMRzK~aIO=);?I_RGl1j|Jc;CZu{%3M+>6RY+>iQXWr&UGWlM+(TPk!+OU zsX<}6DBY7Wp6X~^;@%zj1d6!|@Up77u~p4%wz=J$1TG=N!5G zx(JRh&A@SlKzYh@s`*Em^O`ahH@rUw?xLmeZ>1QVaS(tNH(#-*@(o1(MwLzRGzb2t z3#Y+jK{YH4&1czldfc*wl^E?H3HE5oa!@jKe!mKf z$MOSFRe5r#Y#rxobfUh8R?x%?BTXuhXQ^*8ax zuXs;29iq8)D@`zeWi`rX6^!|3KUu4OHFOHM!mQB%+C6fN3P$Y$iHW^LP1uwQov9-| zqaV1ao2i)DS_CLw1+51+vlB)u;r3T`?!|r=$|@D8*w9uGS`rNVUB@~s)w5~C$rf(= z%5Y4NiGr=VHX!^`J82JI$DJ5vqz)xj%;|(pjxTu?aj+7l`N_7mt_v;?Yusz6TA7Jli{3+(IPIBsa7Fp*N24npsIP$1z3&&ezq945)( z<^AHe8^sJzuf`W1na9JAp>pUs_X=#x>xkS#F``iN3iMF9Vw81U#F9+~X{y0a zvOAqerW9KM%$H$}hW)%n!2{?mVu1aUhk2SV9%!>+Jm;w&2=}!fQ;)!2l5s-_R>(*Y zmBu;XF~J+2NLcbFWJaU5bu&I*d79S#dd)toe<2gUUqU%SH3D-+V5yxA=pG3pn%510 zT$4wkN1N!Y-|Z;(@g+WKG@|QE7ePXRHa$CFfwP32=&_Y*>`nWTF;D9YnYC62rr3Oh zTMwtv^6MQa6EYcZI%$z-Yn8#(l%ti>DezS3Av+npn^_bdg(JO+#9&4<=++&Bm&Izd zvE@5D8BM_(I$hLWq!A)En9u?7Z!-ef@Og>~FYGUIJAK0gd0iq9E^T9ie(hZIAz_hz=s51m4+FY-|3CC!>XTF4=Q?#E5 z7&_9E568I4unwGC?FQmAtiV{ynh?!tT*0C!bluZM&MlXL+BLa&S8N{}GVvl|?aB0K z{|i8iFA$ivlXVEUL)OMlLU_$hLpL6wsjVe>yng8z*H^~2>HYk_pO%8S=VzYe&5PjG zI}x7BITQaE{~$9foY)T9@V}mzf`$f%=<5EvDBisqYq!R;imf-n?`9WIf989*KAph` z+sTF>*+H>yCNW6=!Enq=YwS0ttxDE7B`zF`RQEB%9oyLTq(!_r?vqihC zM94G{wRKLg`(uWaNzey4)#y2Ct~S8Ir+p9b`}I+3F_t4Zb6vs_6@ zD`u2@hG|iENn~p;d{++ws|ryn;n7TB>sCnc%wg|$%YkFjQ@Buei+=n2l-pdIfEPdA zf}iJ>Le<7-+%|t2O3$-k8SjM137AYoGebb^f*1A7yh1&L-jk(&yt%?3oyfm932>bk zoSMBHSA`6-m$qTHk7A}ZWyY04`EGIeX}PAcNu-Q#kqE@(gb~_Q25FOSoya zDQ?r>1^WfWVH0MPOFi$|%lUoe)Pi{ObP~XUm|jrzjUh5J0|-wqf{j=vdf0rxeeQE1 zPn3~L*kN;smugbGa`!%RqQ3k9#u^8;0`w~UzX;|Gh9~R{IqfNp>oIAIPibubL zMXR%^Osh7P{GA8m8@t$+;K_}W${(rTT^k~60+`>S3ez=1P+21c#q6WuO8Oc|8hJ#u zIyaG;EGOo$@*Ei4pUt-ID5UGvd%4dlYcNpk7~oE0)K@8oBJr0n+7ti|gKD%!X$OgA z57>g6dhp(^8k|Sx(boHs+y#k7IRE%An5~*ha$QG3<;g!(E6;(8`s2a4IG+}IIl)Zc zBPg8X2dR=lO@qqi+?(h+?#3cNT=2J_X2wne>8}+S_wFMK#e71KsgtO6%1emcy$2F| zD6GF6!EUXqAi7DVT=(uy3~cqMcXq7;*XuViM=2Ps0$XrriW`-vDP?u<9iVCF9ag!- zimJRIWR^`dmwCGzZD;`mTZvFZV&$;S7k)Q3b05Kk0_OvatBzM4YLs0aupa zCNi2UK+j~1!@k(gz0dy68&{Et2WPm#{l$Isgj)_YNgZZ_ryp`Rstr&-eFlhL^5EVo z8^P_IU^+woE{(Oa<7uu|fK^uY7;tMQJnnU(Im0I*B_kH~d(Oiv-D*zfbr+ZJJJzXe z44~)Q4^iJ!r|FOFH$dm~Hy9o33ag(#O?59^A@|n*LEFe^v@7?q(sSO)ZTT_@Q(++cVe)U58qH4!fG z$mR?Pe@ns1_SUH6^@*J&YD`ilgQ)!61#Mdts9LlcbI=*$evI`_-{AppOih#|OC>?M_I8~3LjVR& z>W~d$3M_G@7T;7M4n+%eEYtsM74(=HH2lD1n7IBz55AJ~q6=5`%-i>Cw3cj52 zJT~h_I_n6(34Is0@W%zna|3(tLg`qC+P~issvcF^dTM-ufnXW5t@sBmM`uD{z*6?! zcL!VKFAj_P!+`h5k7&;Hfx;z$(2^zqd7-f^>1`F-eL0MgZqwlVg*~ADgfOuugqVDo zN-E{^S@Fj#V*kQ`&lfMm*u}$C^`8P{{W*&zO@+AVQ!pBv{iFtwIW%Ik4snU>r1HrY zpdlecR{pn-lqwEkcGVu5`8gTYTm-SjW&n*OcB8adDIIogpa*dZe{ES1Rev@D3Kk_K zL}wq#uu;b}tp<8{#Z8=kvl_2Tj-o_PFT8*FhBqVeFm;@5!QXf`i|l>A0_5NLl8{#s z{QnNMV03X9J@m^1WgmCpt!@WYPM!sAx@J7}1S=|eL7zB2KEv(|ZD#$Q%_QL4G5)oa zu^9VMjP7gnKozmE{Pg<|7)dUII}P4EakmsI^QMgPx8)KALoN2q{}AyHwqr)O(=kqP z8Z9*wMcG3uuwS?X?il}q{(Hjozlb(EapPImIMJU9JJ+)h%jHPmaRD-UtZxw4l1Z=h zC83yM7k+*a4L1gh;f41N`fQ;Gx%Toif9sz&l-zUVT&p36|( z?<>BIo`RC+cf;w%a+;(1n@O#^W9w~MMEULi*b(DGvQ|u(U-?o3=Q)ee{`!vlWk`AA-g>9E4NdV82eOqn}FFGFa7g{dY#W84Q4D-( z2Z`HIiBjSbG`8NDr`DYhm6NvqsNcn!`L-h^lW&cX=WFcyDw07UPm zqj~BA^2F7gC)9ilWs4pWhrB>AwKM}!gA$&FvnATSbiqR^h8TF64=NJ}plaK1bW1u# zWoD|=lwapjpwE+-|2F}WZ#prLf17wV&wfC|mS#NI5rLbeWT<@Y2b`pT57)VmHjXC7 zkr`vTz#HQwMB8K*j5fE^g$cjuzkfPZw7eU)+}n%uO$MN2jUzLE_z>gFO3At^4Tyk)=xlo_zJBk)}#^C zkXu@FA8Xgoqg{LEphCDZeQ+~@%o%x%%8sIJbpA)w|Gti&Xe|s!$^xicE3vtec-+=^ zQ6K89lZ9tC_L%!8obdtz;E?TI^hr7m#p2~q_=D2APfuZu)BuF`7%-z@8LpvI3ny19 z!I1b2%nG{)qQ+tnfB6dT8&QS=>jpTx_dZWSs2BWO4g+Tt!OX%0xW=$iq z7*S{plhxYjmyu6k75fn4Zv7;ZUiOeus7=$CJcC1rj$y==hw$zq4+Y|eINJ2H3PP@BlwB*SggU20*6h=dzWtH7u&4*F-wnruOHWg!cgv~%lS=x%UI)cpZ$R|6 z2x78zALw^UvmxE%tX^n6&O4ril6ObZ+*}M3IxdlSb;qdIy(RS0^r5jFU4m?yBS&n% zJW1W*ec;^XcSqRy5^)O(4BDEa8&WW|~s3NX*V>fYMk$ zJwfI#jWD;wsR?=LeR32N7CYh8_(AHG772&kI>)lgPmrd2jh0$GBbHO9u_>o3K_}6M zo-{MU8H4*V+vG29`7VLdM_idqWk1vwsZ;l`ZzTF$KV56>OlEC}1S1D02wilYr)Y2= zB`XUt;awx{^!W!7dnLi>*)Ft_`bv~yS3*YdU2?_xCYhyB2TY=lyFD?C)`*@$xp8N( z;=vhAj17gH{2q9>;VxRu%kLU z)P(V-i=G0Vt`(#O?75Qzb?7hkgMBAbv|!3ZwEgLVLJvlGf%-o5*P%3!`IL)+mZ3b8 z#j_yvT_HQB5Y2fno{j-=YEX8xflgn6xJoJlS9;&zafKgg`9)7iu2z8VcP4bzY&kSP zl?^$~e>vmG@8~!G7CZ{I=NB#X!}*WWaLMGYG^gSN{U!DS-W~q{E$6NHlPz`7zWo4E z@Q~nUJlleX@p;f%kP7N0+9;kq1ucv2(bSvGw7et~1%Fh+mG6o)Y};-2>s|_7uiwSZ znR61SG^#_;LO~E1HvoUl`%&vj3#?qdgT@Y?hnyRIaOgCF6M1K$%qRxvxDw97>KDrL z*TIzqLtv0*49{9cQ9RuY=5%hMAGFRxu)G3$Hn)wGEIve6$idxlJily(%H2;zzjkz9w*6@Hrezh=3}8 zA^5Bl0Jr!%;lCTd$i_S3R3Oh4noZw8)#iNi#8#Ki@wvqL9;8sEt-;x##R(Y? z;Ff(3RTpW2GckaE*LC2Fe=K>JKg79f*u&NF-HfkQ1&=rPvK-m@6T45!bALBqV+ zD7H`?l$S_R@foLKwqz7JDgOWK9DO+~aP2DtE?JV)-}GjCL^5D@SqAGB-N?*4^Qeqd z9&O=)N;@i%xe4Td>!b%NgGf{?G#iD$p|=94o>UIF`z(0~7JhpP3Ud#0!vj~yP6#N}Yup-@6H@S&Ndd>m!3sMZ8P>ND4ZsJ`b>|WpG?kv zN}~Jhp3ufdB`P&)I@jX17~0-S!C%u6c;wW4cqayME&2+tU7pF0y0e3vFnY!e>h)-a zgbg*4Ed#N265N~rowYHp`KhVGYDVA2kpz`M>y)TG;41VueiiEtEt-m zcrOk|ox->eyMB^qGA__$jp)GV!;39`RIIj+w~}-a*w0@J7u20WWM2}y5#vL>e&xfN zX+6Z{tQswFt;NH(a=7!#c=RYcj=BLweAM$YNW2pQg30DE?}-xQ8^ei~RUOWJ7e#_~ zBI)VcO_&-~g_%0j(dykJ4Eb5ipME(PZjID|57x(FMxY$i5AkQK4IZQI?i>@|=D;n^<<`yeYJulF?6$3tXC8+*u4v7>Ip?k~s;2Fb4j69Q$ z_W8EBta>V+*75?*YUjeR_5qfzYRY-oq{6N@7tnCiZ4x0BL9+_NF@3!o#`xWb&l7gx zwiaprtaSkx-+6|j#f!Oa%m1j(ICZG9zk;$Rg=9xs65Tu59+R$K#q^p$9C1t>7ft%X z2TJv_lc{=W+*Qw6v}~X<+S)j3(^ee)pq+$^8ql=cZ!xLP2a}79VaRw&9*VrpeBxKtegr%b625BUN;GL3!<|;w`1(DcHCNMi~4VW;f%0V{EEJbP*WWU zF`hM~M}7zK5^uv1duO6WO$!Mz(WGip1P^=(#toN}QN!gL2JN}W^E3CL$h|2*K6KO5 zHOS6?oq^LQil9uoCkb+ipxft3VX~45I^3^DrQ+$BqTtLsd^mq&m91^o{5wR$cqu%nNijq7Pzqvdfq-kk=OrmtVtiA?b%LeUQB?# zI!k!rY)CyMc2=d293sc}gh0!$7%tTNE*1GXAh>nzr@dOhHK+WbN0O21FPGS0cs%>=@kh8X=|w^QygZ&9>EWa^YbpJG_9z zRVYE&PD7}ZxKB?m@WMGaE4a7H5vaa(01hsELznmOz$K=w7&3;3q=~Pf??gDg5W9}} zev^W#*1b{90ycMSqn&vR(D2+IJm+{D>T*7^gC~dV4-D*}<7T9@ zevct|;Is$sY)|KUTn?l9XgO%F8AE-~-Gdn2ZJ1xeq2fLYWbIs#ys?=4sd6BXpG3g> zVi9QmFrWMSY!}@5A_>29H#3Wc@-Wg{9^HyVG5Y&MRvh_*`&$t#=!=nH2i`7$gCQNT zpBqiY_h^Hy?H^S7TgKj|f2G$akHYYq0a&zYB;$jhlfD@o8@II;mcGyf%aGNe^Qe)G z42~Bh6s>`t{tsZ(bCdMDs2~;mhY@{A@JJ<@&hWOT9qEnp;Lhf{g*Zqu`=N zJ-AHJg5B!BAg)pcXQ_UIxkUr?@;n<_zkU*_m^pzxSCWFe~cE~NB*|Kle9ecT<#cTi7(+Yy4z6y(n45XZ3nn6xveN+{sZN;4swM) z1~e&kCP?#65^(kn_tRwrG5K9j6HK(wyRwN~2+Sr~K`Sw`{~yjbK8A5q3g~DPTfrmaOyr8j z(8STwq#@RqO#9wSE$674EuKRA(9^B*Bw} znr(qchR^s>WHgJa&cym%H&Al96KWm)2}gH-hHY~9(JV}d&KLG?P5}v(jus5A6b0>p zK7P8(N!Y#gDHeQ~fu=n-angpT;NFqSZkRqnolJXjBO1wp`CrJi8@|x}_aqtU|4i%u zScBI3E9j&kfm{BILA6T-XnA2SucV<2tA^ePk`6tfeV!6T_n96B4KQl7N|n8su19wL z_`=qvm!O5J71(cXCkF<0(k~0YQCemO;YkzeV)Hv>MD=z|Zd9b&oByyH`ir?oltb#e z5>!@HqRq?V1^ZHqiP0WYnz%O`uIKsFb2^8)*3+JN&ajqhE?CWec|EZk_oa%}{CtY? z*EHxXauDXYO(udXn$%5Jlo&jSq3Tf;X*SnNU-67E~eEXO-7v0z($?vROx#&gb%BuXn!^v-g+HXOJ>mfa|_w`av##1 zxu2K^j6v}?Eu`V_H!{*)1RogavpL49(BaYwHMZm6%%wCqeaW3h8qNW!K}%k?)=KdF z`C52+W*5CS?+X#tP{Tt9Q>a3P3gk@x1XtI7gNL=dP&Ob!VD;`ZyuG8rYlly#<@1A} z!&{$SGz20leg#&aeZyK}cjEZaEhsK!2-V{@+eDf({Kp7 zUPY#E@Fd6QpGW=i6Tx3=FK(zP#Ibc#*^}`Jcn&{uu{p1&VZYU>NL$#N6;pVGF^zfx7+WBiT?Fv;yo2}(2HfJyKo9IlQ^lV1! z@BXN(9fmn{CeALb<0azMFtEFW$_(Yv$tn|R-;VJ(W%5TfHl0e=*Z}pslz{UUTTuCq z8lDsP$9aQ}yw&q6G*flt*ePXa|=hse_NpQSQH67I+sQnHKI?tJjzu2VX37l zhOD2$uYI%+XU9x|Dz3m zJ=84l`16Xs9VGDhhbBGyD~9;~3L$qJ6>#(<6O;}-h8-%6$UkV}`Q^JX;6p5QZ=XuV zeGk&BuN#=v#AnndPJ?(QyeBPYUm>G&E8Kpv24AK3phl)69h4|Uzj6uq@n;#`I`1Ga z7rm7QhCJfBxYxun(4VA_bOeo!96U^YiIuzCVW>@(+MZm3M`R|VgrFWKD){ggS!ysU zw}xFeN+G6?+hDZd2_1Rf8X`ryF;TFVU2D{4?b!}EVNN0%jJe7zFS_v>zfwr>=DA>; z`j#j?nhLRIJv2D91fp9nqeieA7k1N1@ItN@z3=GZypAO(nze#^LGvM4+6E5a%i{LO z4k7nVhekeK%l&)*lS=A*A<>5|somHiw*RUn3>^(2lVZXI?V2Z1^!y|?Ej!I_0!Oj5 z>MU)16$b||4L$QBIxrE%2XoGmxcORu$B7^nMm$t(7)J2q#r5cmy#kHptT5Rv@1b# zQ2|tY>p|Sgc#?TWokl3HAfoqgz=7xzcA@4vbF-aC#%%qFzXT$j)}x2$?lTWX9UI}$ zwmXnJd4N1V1^~P-Yu+@>w+Exlh zH~Q$M<;NlUS0;42Rnie@^U3)8miVRj0gb;CjU(nn;OJZvi0k!5rImf;i2o#5Hq9QW z{;;jU?=Q(y9;VT~p2Xt&HT)aDkRIDO4<0vpLRtDTDmG3DrSh}|!*{;Gy^H%%e61mI zPR^rges3wfuOb#-=Hj<_Ppa`I2hFwqqV->C5dS<5MY#h&J!ZgzQ>RdAgg#ThbOcTc zc2Oo3Nz4xks6abABz%+KB)5Q92b2m8g|x(vih%kAa2JuNVvH}@a@7($gyY=Xzz9> zipjay_j-`3KKKlwm#cBf)zegb-Aq`d+sJ*FT1NG(V>x{zO6k2tu(CUu=-Fp*-&RCo z_pw}7RQwtedW$h4@C}WcCC=_1LUu^Mj-D@ag3!5M^lx`RI48X)g&R7!jyWOt(E1WY zs5!ud!95sjna93;ZimV82Uz#~r~G8oPPi%zSwq($WV+%mkJswsFo|6me=b=OXP2&4uZTk-lI)5HK zf}Yac1KZa6z18rImty-`DWl#M~YF_b>}mMpv< zab&;hXgW{d2Ta!2LgbDTR(e5)$XOM0_d5HLk6!}Mf`yD^-7$1K_ki5hmqwet$HDM{ z7M;^jPJX|b1+QcdqiFYCvUq^f<&X0*>8Ctu4>ZGvsKr?PSCys*24ILEBc_0t`)TRkHU(;7+!9f7OuXRM$HtCQNis`WSWdU z$cv_-f&5#t<&O?Mj9)QJ;s-kP|AJL9?pRk#X#b6Dbl)0A)2xosfh+M$ETxkDXl+I^ z`4rhY!=4t@-@-G8X5bFvee45MLsno$J5HvfvEnv*Z)Oa2;8a<3{}5XrwhfK0#gLG< z3G|LkJSNCU;BnW7Tz9t@77YJKTI2KK$MWg)GYld7Yy*%if~Gt{o)U%z(Dn^kLv&C*I!Q%br#w z;^JQxf?k*R@M)hVKOrp-T(7mlt0yw_?zB?)HKC6Lgo)Gd$%(j2;DmRsUt)!k_UJW# zAL~r)ftEwb^!E`nc1!0oJUW_1AB2|TRNn@&eq}T-R^o<%k9x7_v>QzB+>a&>1zZEP zqFD12-hA&|suJ1>MKfw>gXcxmTYQuFH(#KwIoas=cOz!`6o5cs8P4OsQ=7JW^cW7} z4O92h%oIB)a^SgZiw5C@>q_EV)<-{G*oeD)%CX}3D*>u3z*YXDDE8+n^pzav&8vDz ze?bIm-yBIjZYQE+a5GtAB1caoW#NUzp}6JSDX>_bf*Y1bklxw9(0j*3I^@OCib;LY z)TK_M)BA8X7e;($N|J}e#&|ZuAJdl=z@-u++~X+)a;|%DwOlqo@3}u6o}>ZN=bFil z!M*4|!HE2KeF^(jhG?2|8Rsk>&x(u|p+qgB$28 z5=_+AIMCHI<8a0EPz?Js67n&3A{%of4Q<~VToI?6+x;keR@eq}NN)q{f{t#H~g3<0H zF>as_x7pmsb$#>U#tJ2zJGPw~m!z=)&3&}*w>8b4~WF@EBNwR8P?j2LVX7c zXJ^iZ!r=gNrYatesLY3bI?rfiOgJC1LIK1>cjxxT0vn_n6vwsk2QyPHWcA2U}`>vp~nrQsLeB-L(78T3-B41Uc1a zNeyP}v*EP?a5nrKS=*IZRktk!Jp(c!@8WCpLsN9yHy!>OL{Ld13+fv3fQ~oFhaSxV zl=|;4IBA4Yvpt8ZZtqe=|Ns0U>fC4CYCjhJ8gk+7AroR)K9S4CWMR&s2kue>Ol3qQ zk#&1YSC(C>dhBS4I}R*_)4|rb_?A0z$xd)DCzhVKFrdpFB&t*vJO}^%GEg<5ANCx7 zL^f<$Eg0R_fgy*U!vX1~ICs>4Xd`_Y4JLF7YM)E8IQ20C7m3S)YB4#MdNUN9QZCYU zLFWXTQtL6~b{X@l)x(*w+cDsNAucZUVA~B&(M2&Cv_QdwvMuA_e9bnNk^GsQx^b}T zDSrhw4`ssa>IJB}^ARo_SA>Bj(;zKpB^g+Bk+vJYq#5Twz`5`q)G4!p(?*}FHuiR) zLtHi3l;&d`*Ndx99L4Ehhhf?2aKYjaKS{4>1zjxGDTv8Ka8&LFNiFLtZ7~rvXqXI8 z)~}=hM66?=QtXS_e{VQhlX(M>r=4P z%$DX-Wwva@XfUyI7Q8(^f)~A91v~2-z}mHs$j_(b<)q8->pzOAtKUQX&*h|Pff0=q z&bh}jPqDO=ZBY0+onF`?3ny=Ffx=)tGIk54D@O8YJ>3uOcek-j=l$?TK99W}#qGg=q1kOEb=u&ER<{o!wQ7ORtK<36qATcv zOSf>;8WAMP4m4xVXQKZkfjqw(i924~f#CgHde|%vmy}!LOhXIUv~UD3GUNts?zt#= z(GnNx57O7$rV*&z#1a7!j85V4L3y}7hds}>->c$?#9X4}8cgZVQqoN2;kC(uS!hcYC;tt?0N3T(nb#GDj=x!LddIha(D<>ms z+t{}^U8vzWibf`-;)olHcrMoo0!rUN^9gHS{pg?qC@dAI;pN$$TR?#!4TATIm>H~6@HJk zewY-ej9M?tz~WjjJwH!??%NwUi#l_Xv`GhU-`+uFp6Eefem1K7dd81uo1mpI5RY%X zgY%>EU|L=l?YMjZqekAQb|;@wzemDz|BF92u;)Fz|87OgPg>F7oaIpHUxZV}YQqot zv+VwYD6;c(8Or3!3G?S!bawF&%~<-1bC21N|GgEX`L|rz8TVFdWInITsNEDwTUFua z>`-`|a|W*Z9t6t;Vw~cv$JDpwd1Y@U;DPc~Qep81rmBr5-t-b(Q>ewe(>P{BB`><~G12^_ zfyVr0lr`NBN$S?bYh?!U89f@)_RNHjraS1B>JYmo{Q-J7%Nw#wUeUYB=ZWM*HE?-< zligbT9#a03U^ieUbiU%?(u@1(u&0++mFtj9i4(j5@W50ap{}AU5jl8~h|HP>VT&fh zfjmWwGImAfg3%yLO7Zm3)%0fe6XqQ>i=VvT9F0tUpvX6sa5fiMhG+sjK5hd468rJU z*CRM~*J7r>Gy&JoUIJ6Q+u4QH&Aihs5xDW^2jmWIBTIr;bC@?04aWXO&Tk?5>oPocT|0ep=Hs(!K62B;HRTZt_JWP+lIcCLBcVYql8TJzmI%1Gx7epJUXE zemK^&8SH*n^D)hP*s0s=VeRITWKNqi=P0KI?@R=L%N;TP*12hm}We z;B$(e!HXGBSY76N!uy%BF{Qe2SN{mqjvj?1GaQBujoGPvDtN|sE<`;@W6+LnkxO64UG7)(J6(b;g*^&U#CZ^yk0av}J>Cvi*o%1556K<|B` z%)a9ku`yf0rh0^cxz!?29@>VX9j>r=%yJZ)FNvW`Dq-4-PnPnXDA#UNJ`uCSmnYHQt_cuFrc#y+AQoybYlZiE=j@8JL!TE zK^**^V1Sczok>>Ybs(cMAUeI9@r{TQk*jb4z3hWH`M(?V z)6^6;;Eq)_9sQ(Fzn9(o=tW)H0>Guk7+zg7B+4H5@W-pW;Lz=cVsF0Tnqw=dd8ZS6 z`f!#+Dnt|i*h07yW=)SD%_PZ7whI!>J`jm2A>-mCSXRYY_D(7at=i>j%J3nmA16yB zZ#f8B-OFJ@74Rb(*Rb%Dl1$VVxR)COvGvLfwk>u#UFQ~pdM`R?dSfE&UcMCcV^YcG zHh;*SP)^sUsj)Y1+MM}-E|)v93w!MMLA=~b^1w_P!$k-kyG;)seESH;o!-zR8_Zba zigpSmfY?C+bT`g0W#@slR| zMjF!9)oqaM+iD-@ybPai&wwc=K(wlyapL6HbQf))*$XAv^D%R1<{~#i$s-FYVIa(% zed3|iZXB2Y0Py&>C{%EDh799uT-H+o`z^K+tGN|GgAejk99qd9#V}Y}`xNfaH-!Ig zd?ISggf3g8E!F2CnO&*qQtvGoDF+W7=bBhx_sk|Xq~E`(y=eMG4_1fGpM zj&}P_zz4G>sHy%8dTLByq2dgIQ}ub$JMdF5v}giI|8+)_30KG)ekl>NG=L*n(YUkg z6#6{642Pe5hR*8$z{gYEeq5d`{di9WOcY(=a-b-#Yo15%h4c~;hsO}!bPt`kW#RIh z(yZpFKir?V6fVE9hoR5G{P_2ppg8R$Xu34xw&sKMMEPazi&HUIwDJ}de4dMrih5L1 zPZREJie!FGN8!uaO}wVQ1)#=pYF>T_-s>j|*o;ZU?7BaFc;5-vSu5bChlAj>{0T1q z`4}ce`e2CIL|#Vg1S~&#nZ3K%N>~0!1`WwV;&{4>-s}{fF}Dt3W?zO#5<8-6<~_CCeI*hu{3&xhtLN) z7vXq8r5#&q%ZnR7WH~__312>wzF1&`q95<#;mT)VzO?{#?-`<4Afn@se){Ow9H{sg zMMRFwqBl355u{5TBz%$%1=Zc~J@Yn()_#Fa^6sc=?*+d}2*xfJ-Y@6QVW}p*f*&te z(z=DcptbBKu{X+~wcuB@@T6OS0s`c6%jNE3@>o23>$OVq@ z+nR-aRu}DpIV6&@B_>h;ZRi>Q%>5UXj26qK0S_}ITJ5vTX(L?Lpl*6Osq+Ks{)yQ#G5WW7LS^R6CidJ zW4+5gaMk3U=r0q68x6AQY}*%b+IuXG5jsIb`j_lie{m#^=X}Wq_kVE3QUykoeuBF< zy3lmxJPeGuk6V)$u_WbFtmMpM&NtH>O{Er7M`?A!`IydXQnN#`I|y-mmx84h{UayCj7)z9zq_pAL>-+vft7Ra7yk- z>eX#V{5>i-A525Qpm)k!T@rJMqaBmTVY=WW7YVzbliz3Dp<+5+-c0=o36y{~T_Y zza;{Z1;p@5BKEuK(nBX2aaqC|2x(1bMWZ;@Gw_0Z*xg62ycCDgClbgH&2uz*iWxQP zk0OTaD)FbC3U&Sg7;f_w`JGDeSX>vLSdOFOv)w@|@&y$M+ePC)Oko*CTiI#vTSV(e zC4MdVLB0LIpqW_^G+EpcWFK{dQUx7y!DA2-cRLXItx}--;~BhnzD+kZoFVcg7N1@H zL=9GzqSDv9&~@Luiv6pECoqfoWeIup72%xP6;7udFCa#9Mv>269bD&80a8IWymlxcuH6l*;&vD%<;^dg?0- zn6wjD3PsYByOQYAZR_c|S!&cgypW|Gt>#BR$+L$CpV59^5LB0ovf}}f(6`P9#~oM= zt6mSV(*Zqni}qEzM{PSR5at5O-j*~X@-`_zSmu2}VnG#LtvEza8U7JwET&))-vC)FN@>%kCS0^L8*^%uaMXYfEHz8u zy`S#|nYbJpFDlF)A0HvJevKz`InSU{iHC>PXQ=u7*-$MsfWy{~hlm|(*dE>Y{HW@! z;Q7&(<>-V!)D2nct^JdXcI`kp=SeuO>pR=;Sp|I)d!fhpI4H?D@*~6Q_zAre=$2L8 zkl-v2-*d9)9B&UImK2Y^iKm1d*OvtJ3z^`=3{sP{ABImi(m0hGUZQpf(Upln&AMYK zCZ^1KzqWDhCrvS+QV(A0r!%>NRJeC88%3nlxX69>y!|q1DyvooQ-_+^(vZt!|3Edh zsZrx9J{`vBe{WH7p%pA^5Jz1Np_?$bo|iPA$2$u%U8#}^P#Bd6u|9rP^3zS|j(z!D zX^}o2O#6<8wu9hub}gzzd&9e@cCi zkSgpu&+GilqWQM|obQ3V5S4Tda^IT6y6(MPxw$Lai=RdLuKRHIp%Z%kr-Z&0W5}*% z7n=WUBauQgRBajs^|r!n_50&0$AH^hne_skzUdbfmPvC_7w^E&`C_Qi>q*c2C(4Vh zP^1pEmvBi&86*vNWAJZt2)22}o!y{~Dh(9OPFT>!`Wf(bN+xbyxrVlgC(yGG{iuIp z44jh5r}BB5;Id02Ot+uS-Pg|tF~{p@b7K}poBbTE_YepPG5rr5m<6P*BJ||Xj%$#0J83zp|zd)uh9UQnzP%2wQbj-9t zJAX6UTxWD^+IGmcnv6Fs7m|$r_^J!Fk7&>6nJE432z&IW6n2fC05V4_iS|@a(3sXD zY#w@;BC>>GX{xOWC*CP7>TA6hKTf;I^S-Zs4r z{;r-6$ID;BrO9U@J$DP4X0$-yw(T$4?=Z5zCgKB?_Al|W(^K|?d9sesm%OCzOMn0e zxcABzBBnfn^wqD)6yrqpNX!k#C`Jh6uUH9v042QewqDSjaSw8hO?a08O;pq(aNFe$ zj4@4wYZFfsOO13k;97+;f-n*?HUtJ2Sm4$3{|O4FKZC|O=KSh?mMD4Q1)Q6`3W~OG z1+y_Lh^4YNs~nhvBEQwCOMNg-ey@WUj?~eKScvNW5xmp%DUguIqwc%etVZbG?!FgG zOp1meZq;kp@jQ$sRMnxUZZ_ujD>MJtZZ`Qt0$DQiDwX}EhEvYFgHGCemXn@93{U35 zdsl(zs(T${wl{b=P82ntrx(oYHC%1`DH5kL<7}ba=`w%DU8;(B0A36tk&=< ztf?xc*Tq`UOYR>YwrC)2WxdedU`{g}N3!-7U3l^O64)No<~;2>iRe%`gx~s7W#+V& z9)ErxsxOR2m-TOHe5)IZ9NUCrg|!=3N`sWKCrT{3M3*;paDs)E5Fv0SxgNJ^_V#8d zN;`z>?t1VdeK*j`22oFTD=hAR0o!ylQQ~1cIWerj)up(?fu=Z?5Sc;$T;2wa{TjGQ z-k-kQeH&#yY(|TFCt#Yo09uU7p#9zeY2UYj1Fz5Eprpth(XyuB9hSlS?Ufj0wVD3D z;e}Jw<*9Vdj89NuHwxVD1I@L`UftezeqhiRNNqB@t41WkUjyZ_D#o@m8#&3ZEM&Buslc#h!pmfl6ziGDcZ%SeJADQI@22Sp?%qRO=^ zRMu9NsP+YMIcMi^O|N88XWCDC>*OweqN)r$uh|O!WE0p5wJPX%6#@gPYtSU9+3tE; z6B{{pG!56t;i~->V{C~QwVd9-D{OK>g}pyOlAHvG`FB8e`bfxjHiP74ZPat<4LqIn zn=T7$;jRkbRmvqvlApJLSCFcL{--;^YN0zUd|ZX18=irjVHYKnwhC4*Hv)PqgkF19 z!(F!ciP1(%RKMXAZ!$>>-tDZ1;`vQ5`%@B_dx=0tr4KWjpg?yQe}OIO2K3&EaIReC z3c8&%r@7N7^I;ksFttW#>p2c5PhNz38tZW8k20=KCWwlcZH4_qSEy;oa_%`N1KsVL z>HYd8yhmOOst*LA?`3gtQY^vw_7)&$iGw>+`k2`5on&Z>HET30B;q67jf(<+G;)HN5xVOTKy5H`DnZuPt<*y=SxUGN@Cx7u6l*BY|sk62Bjlz(0Nx<|d4z3W24#l`Mo&M^2&6ja;bp zZ6U_%V!{7`C=p-r3f?!5CwKpT<9Bv^g~A9zIk>xh2A$LK3FDS&Gpom{C~|{Gu`8oUb~J;R zuO@RJ+uq~Ibw{X{St}nA8v>i;%+S$pke=wX#JKauEYGGA#TPF{sq1qDBm8Nouqc~P?aYE^$3~oZAe;WJKa7`@TdDJ&Xf(L!j^q3is}A_O!kzw2T+gJh zLf6usI?p5gk!gG3icc{bE^MTi6op=_k(ymzX9T*X&PCno%cL%PF{JF!xlPtB^!jgoxqV4nnPm(=hT_pzsd1%Pu;0Ec_UB;66EDK^-9n-WBnj zKalhSqBT2_C|;w7+vG6u!5V6n;EGGn?!l>F$I?lsC~C}I#Qo@tM77)ERMaYuKVGZ| zDd&EpkNGv4SKB7^i<1R2x9&wFIVYTG)hW0&S`&KhR&js#i{Y3VigeYPX?)zy9;gg< zL66Tt^y8!`yzBxn>9RNUZhemCb^2h?G!jzFvxt=R9uyz9mWqFE<>Rlcg3PgnAyUYyk3B@CDoyVCX$~Hw)e`0UGw}2B7-Dp6AHVOXCS)3@V2Sx6nkqqY z*MeSfyeM2l_&?g{Q+nj($EPUsPlsqM2n2zw0!#`j3LO*j^16c zN#-3o3;SqUr2<(l+_y(_vWecp1(4X`1=p9(;J1C3t9m8fi0x7$RavuoQ2I#*JSo41 zo?~i2eMOSs&WNwzo)$sIJvIdo2Q%m_Oy+&lN08{BTky5yDE7C_5$;O<1NM3r@~Iwx z$?s_B^p)WHK$aL>e+U}$HlVm}3h%zNgwD>niI3gFq3E_dd|RdrY+EQ=Kl=g&+YNX-bTf(?QhF9Mu|*^2-*lvVZV*7zGyxQPv{^{$4o(dnJ0%!t)mN9HexYS_%=F zHHxct0A7T8< zE6`jb&yPGOCn&wQ6r-L>V&HxQoFnlUye~Y1+~$c;7U%=BYyIejIC)~$FjMf=paAOb zMA6FfLaI=|1;ZW=2s2STT&l4Tu6D#gTD&K;#)%1<_U)&qdy9#MiId>RnCo!qV>ius z9ZJOvkKpX0BN(u=3w_QP!ZA-%sH$=V-_gO4L-x=n#p}fEupQ)!N5SMCL;Cuo4=gm* zMvc20G00W~7w1%fs8}NmzPJXK%N0;&^F`WfB1I<5djm=Gj|BFqD|q#7svuCaMXd!s zXgwnwSI?NsY8$>ond}7E@S_lA{a@0WrO%1s)Ym93`~wE(mJlV+Y?6CtEB6u#}aNFV=xgwt1@Ao9

WsgG{qpB9QbgE?!0}MNW|vjeYuICB+Q|`9|fa%5ux<^Qyf?Hnvf^E?N1jD z6G@pnq;_gBcu#smlV9`_`5Z-j)~EoY%Xh<#vL=j8Gbcs-SvdW@j~r`iraMmgaJgzP zt3-~Uf*c)52CWa$W<;TuoEdUy=X(aYrO zn)Yy6vvi5rkr6lm3qgGAIp6|xab3z+dgI_T_VrjV80H_P3aX*7xA+iyo1G{SOJ-ER zw~2d~@e_Y(J1}Cc4GUitpyz5v=Y@E}x;<0amT6tozoky-2WzssV_&k}S|bD<9W2nk?Z-30=cJ4viJgy>~go(r)Z(QpFKt ze*txW0yXjL*d)JX5J{G0cPIMLJz?4%oK_#$(3{8y5UBgL$sC z!_~(Gpq!%)iO(kxnfFJSL8Bcj%^X7tX6&FdF7IH4Yc6v~1J2-w)3;f{zcO%Ao`n{x zGHB@BT`*v*R#EZ%JNeYdpi*uxTl+Wz&OSbB9%0py$=c{g%BPjk)kLWq8_D5zLiR%LDQ>} zq^L)R`tG%qQ0mb@X30>IRLGRP=k@*p_qDI{!&&F-dwuTPqy|dzg$$%=KX>QkOg6=I z5yX_ABNx-2649&=5Uscam%X|LN9<$iQOEND5s}Pz^l0d5Tt$rTKjOX?c+n|3r=TZx zv2}uRJ-O*U9Y9eUZ$o&VmQ0p+8M0xyYoX!F6jbfYhE@Kjxcg4kFu|`BTryA7@V~YTenBJ} z=p~}!c2$rz>xXOm+o8)d3;LI7qg<#v8?!i!yZEvT^c7Em*VaNB;;cyTpUXy-5-S}0 z`aQFg_CP7(4L?tALdmjN=sWWRCQyNkS5*Mb*ewth`I2fHxAXEI9GZR&4LYZ=1Mkv2%gLuJd-(`lnv854@1oLc+xOUhS!(AfS#H6a9Di~Yz^0i`@*xS zzWD(gA|!FBd@zhv;JMqkqQNS59po5?(ABT!^9H@6aPQe+s4Q_8s_t0>$hxDq5XfZgUeKTP6Y8d9{Rm$z}PDLbks8FJ98!7UgX| z;>{-%l0Nmp?){H=*{4zvW|GaW3VH3Js?Dru$z?*~EnwZ@INZ5(El{u*Z zT9y5jtF!0ITHa#Et3_1deksiDOhM7{opkr}TU>?FBbdDVJ!`hn;$F=CMBS%Vf?Lun zYG*iwOHy>jPK^Q@Tzi>~5Ey}-^MyOT9}n(@QYbN_k1KU1U?^fB+Oi$i*Sw`+Z`N|r zLN4HW#Wd2dWDM626yos%&79rcX3!vl*S7otaamx^JQY>gHzg~fN5!1FEDYi*&G%wy zMFrSCD*_XPU0C$W2!8M#@L)_g?6SQ~D^;$szA_2opZ5Y%`^$y?01?+@)PuL{6S=s* zB3Rq~p;++rD(I+=1ksEEsJx{O@4N=coiZ_Vc=H0mRt#V3c2AAi2e0J>T6j7X(iK1ONS%pmiHRvGdv;3S&}w8nOI$8wdnEA z545|(sqwlBdhu8e+!^A}9(&5uwOxi(Gj9`jEV7uCr%!|Wv~{Fb5}jnORX!^nL)B&(B6)Zvj2rxdwjKy}_fRiC8+*4F+~D z?DDykhJvv#-A0I5yrlQW8SX_tb*XLnqB#SydW*W;u*p$lTU zJ>-1V0Zmk(p6yzoT2@W?Z9#MrnS|W>gAlzpoxOi&hl{*pFx6o=`aQnHuTL$35Ccnc z#kihIuO1Lzd1gzj*9Ft`Q5|SH{|659n+t`K2T{TV(8RJ0k4;dZfs1nlKrWreFH+?C ztm9ya@?|nxeig0I9)b#&^U-2NDV$fg0MXrx@L=pqjJ}l45_KiOA|#F3=-JWCigG%& z|0S6!a5md4c<5RG04F$BvDB;K@MY{4D6*Z1bF_A|cFV;mo!!RrI%VlUUI{R~7m4!a z4l)cM(CHmb zZ7UHw@2TJnS{u>Vc?)zDmgBK?hTt72O9gg}Y%uZXZaqi?%aPi!ab+r;R&S-r6ArK> zO=G&M>LWUt79jo7g+a5!V3xu;vBU9ldTjO{6Ky$Q+lWUJ5}R9<>0sd8;9CcoWc>YE;^xhM9G=Q2$+$xOn<@ zG@avvae41S??xo^f0iK3#1O-6^SBt0ZgFF35dM ziIr$1Jv3S$8k#>K7N10O*<~#Ic1*j6d}O+M^PPokR=`b(jsm z+oob&;(DC1&lifj>v+d_6QQ@m2OiXHBRDAsRgRgEvX3L+nUfuv=X#n>8_0!=CU#ic z&oSf0HFmGZNpKj8@P z6jlhCWnu8q%#z%9UIf28P05p0@i?vM4B>xN)9icxsM>H4S%5Q|UGD|6D?$9y0yP%V zb{yV2jHL5glpssPl0CB;Kt0K`#71EzeQeQ#hC6bwIa~!^w62Gz8HW5gOJ6Ygo(1>y ze!=utk|buGKSa1T;0$+rV($EaN{BzBWRn>G$Mj@PUqkAZ+xhX0!v4YA40Nj&lHo4r z;k@Ea*s5fQPA#5fj^Sgft~L`IPv5}{Q#v8|;sywv)kc5l8sgNBEiCPWJ%j7r?D?5E zPv~ipF8XfFukSs6g;KDcTn&1NXg;!HKQTEN|CCE~_LF%ECY6 zI!zJL_%edJI#i>neIe!@H)W!9X;vbUPMhKdHkt2cC)R|J+^=%1cHbaG3(V2&Km{`O zH_(#`%Q0Rx5-(p`2gx2QVZO&Y+V`slH5UE^qexlyWoQb!mLbd;wj0f~#}VCSyTEdB z4^C_-|2ayi&3{7Z=(+}4S7wd!A6hZ9i6h!H6QU2##Z{+{ z;N=BDka_JhiH}rg5#LV>_sCmR$2UqmrhXpi7eqkxV@K3K5x}J$Y=u~fCUg>*>+;)I zAtNP>RDZ7~lE$WRFQ}3(@$DfoZ$%KFI|7wbTQPe7AeT^-f-YP?-21iy_hy8^(0#!) zGX5?N+Sb69oqj+=eoUeKf-|gUAPg1aMq|L6oz}IJi}8@IESiQ)!2KDAV55E_P3m;# zWi~Bl1sOl-*TRGJo$-8e>L($KkU0$cH|AE%`&-xnK0J$KN`9e7O9mv5c*Ysamx9b% zVV*SV&@;B5=#YiS>BjNjK>6xy95SK7`lUTUTXHQL1RJ6M=rS0r97{9IF5--QAGC;+ z;QgXhpv~tNtQfRsCrK>abeV7cLh1-Q?BSs+Vh8fy*MsG!1S`qtW+?Zv0mr8Sbmb#8 z8jPBBrr_;~y>(D-=NRkyR}y%tyB^xvFnHVkjNK0Eg{KZBaCF-%h++H0Zx43R(sT=I z(!B>2o1Eao>4ZPbcFxV)aPQYXxHD4)CO>R}j;MS%B{`oYkBQ;#pYx%~juWY$tu2}R zb|YID=<-LCJ;xL-TpkIHZ+uy4-D`;1tpgQT6X^~cUff>^G%aEjjn(o5&A(!(a!J-7 zO-jpB2)NNKct8KL+geXy`b!HqmFY!?zYb%m@5eEP9)Ixod>g#(d}EWO_&=J|OJjuS zO(kr+@;BFNIhv&pG{6ERM}mC4T1C)`LcC$gkmn|IZ*kAt zKyHrpcDh+_4GxukhH@5n%kQ1iq*ehwBzle-9PeQuXRwGXPP_&)lJB8oLKlWklqE%1 zMv+SQ5Y&39kK4D~(fYwbNYVJgPfwnQv#J6aU(n5UxedTYLx$6Z{)25L7eI(nkgO%+ zp~J@q_aDsSS3aGH=A}w}@V5!*w&piU)my^#Mp&W2(Fins_XC>5OW4oQxgO&h*17)DmxrrJzUMERcZbMIy1*Bvzq|O%%Nz*+)m}=q$ z?SB`;tz)6wO#S`vs2~uoykCb(oCTdb$(GBowuXD=u42cq0XlG_j;;V`x7Yd^-mhlt{z9*<8iK-&*K4 z-j^;mo`&|js>OqY%BW`ULeI8!LgjfRwN>NT(F|=;y0k#dtK1=xCO+j+F9G8V%V=?; zFCIuzVxL`eargKj8m;O9AAe2}U+NBkWY>LA9nuBwMyJ5dmE9HcvaWc*G@jUcr|An<_~$bhaoEW z7ul`LvtOU)L)A4EmMgQ66^(fUp0PZO6PV_Hhs;0kT%7d*_P4Pgh%}Q~`L`HW7n@F1 z>w2xbEYp~!*>5uZVV}_Lmk$rR>{&tRls}r|D9L=!tbh=GH!i{C8r8{(rvEO?WV5?X zsYGc7E&4KrEDAU;)@}Czmti%3G}#^^2ss%FdiHxct+~qFmV{+g?EpfD=aTX-JA_yt z_lCXLHjCUVQm29cIRDY)JkkT5WeiFV8Niu61gvZnKqKThEZJg4y>iBqbABrHu+&|$ z!%c=7ru;vXaw@V)I@L!NILm5IU0Kx-$Si7DVH8UCW z=bW^_GFa>)2fc+8*kk{p;4Jx#b?klw2h2x{55IZ=`gwlzfV&Ny9PGhNdX@iZa(`_C z`4u1Fr7p)g1iYs!*EA66?ndzfQznab4OW!!|1Qzgei6*s{}CQ- zN`>SZMzA720zySEpnm2vHbZ6@7`=6-PQP<#>Vm!Gz0CDL=bT<~i(TC=V!t+hqOQ@A k>~wfC9WTuLAyxYcm#xQ=_H}djZCbfv;~U^@{HGW6zirMh($ literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/train/tr1.mfc b/samples/HTKDemo/data/train/tr1.mfc new file mode 100755 index 0000000000000000000000000000000000000000..ba17bc7324407ff53bb488ddd08293a90397989a GIT binary patch literal 15768 zcmXAvhdY|aW+QKM?9f5r-?EB&EyMFNZCR1;ZL(?_2Cw*z=>ngp}TY=Gm-8o^Fh;sm5J=idKnF6GOE@S-kAx$eq@n)%_4^mWjlQw8Gc zc69OmX12?~o}^9PO1>KBa$5S%{(sHV6yCXC|JaYH0+9RX3kyTOkxok_Cbw%jHh*r@ zfIa~lo_K~VpCifcWUl&OO;&&sNN5PdPSKfUSA0K_zdcCpGo6Y3c2#!K=M%ULJR-~V zt-&q&FX6BA|Nq}fIRbv&;-C@T#rXYwnbCYPx+N-#&G4_{d2PH%7JeD$J=Gclqx3dT zY@PN0YT|CVvEsS_7Gxq%BU>&|%jP_)zQTi2zhs#6*9a1CMKir#prXlL?8)Dl|J6k9 z$)L-v8c0t2Y^0i~TiYD+VycN;VFR@PsPzU{WYlN&#*jU zsz`5}jni9aC?vE#t2zE3r4EN1IOQWPSneT&WY2Pf4g9$6Yc={kih}h&!og3@keUt| zkbR-mr0hiq?R;2Iulmj6y!|>2AJ(41c}8EkVlnd|sjnSA4VN1u$-;mxrItN}n8HdT;(_ndUAMd%^6bQIAO3!>k2orE2H(x7LqsxbgvCVY+dh|Dx zd0n8=WxlAp(-!J`H^H3t0h%3olB4P~k6D`(!Q}iYki35-ZT+4~RI7erq4Y+0E-*r) zo!%jLvlPUs`E%m>r!oP}h2Ur!!CHz#Xxz0lQ2i%B7wzffjLkAbXZYIREB+U0E8S7nAC{Esksw<}E7Y^NtvZ_+!w0(i64 zmShiJU=?yx33*~boCc#&@qi%;uDL?}Hp!rnv=00#GolZ8Lfq{nn({yxzJD=={BS22 zdLGHUVP#45KRiISsO#{zP?{Dx_`%n)y6|We2Z8DUN^c-O z0@Y-9qSnj{aJ_$sDw-v6XTI!!P{9%ydhr|HE=l4UU-?M3?gHLF4KC)^sDX$!pq+>= zp3Ul`YVxu*L-z0J%cM&7x3(Jj2GXFpXB4uJKOy^HX%ok(+wi*C88EC{kE=bbu^`Ew zF!w5+nCvkw|Gx`_Y>Gtj0t>iUmI#^C^vS`FlcePb7mo|616yT|&QH29`{8-^A!8fQ zV23(acJwvFgC?NpA`Iu!Z$d#|HQ86cns}-JhC0Wbq@n)y4j9*sR1)&J5r$<#dP^+v0p^vZ9OU)&0cELun z^y*1y6Lz3#$;;?sgKebX*c&*Tc8gBG|B#%%+yeoDbx?nD3<_0?V71dV&cX{@IZt<$ zppRBG?LKTrK3+aaXDN=7__I^Nf9+GSyng^PO};_&T6c(@ql%JKK0?KBwCsrijGQ}< zQpH@ReaqY8e2F%R5Eq9ND(&!Dzz}{ZTxNHjo7j(zkFen7Q?~okj2g%Tyu3Jy9e;cb zyz>oN%ZzPgtfGKfw>dLqF##&tZcnB}Xpqj=Nj$AHGKBx*79M}M3TA{iprd&$R8?5x zk@q4H5xg4$%NL_e*j5k_-Um0=y<2ob?F5DnZh~_!8$p*d z2(gC)=#uDC;3aKg>wA`h;_nX7z0pTRmuh0$?H^FD5l!r#H=vTxb`)G;2GX__z@M;y z<;ZyhU&b%GSVIr^wvH0tlnX>ia1WmMmVn#}QCh#i2jz_{Q6!Xu)7tjJhbhv~oyvpF zV;yW)mNjSm%RRFDmpJFyGXXR^lmad;#a!!$qbTp%h|?Yf!{?y{_Tjt?JAJ7d#iAYP zrTMW;w`(u&N{|rePP`fFUKt{J{>ofF?s1%aO&BgjY{WVHtKh3@B~b$hu#yXbINL!Y z&H2XG1lDk#r{2M7avY26{?+ugwjK24$|GOdc9h!Rit>{CLAZ1^R35kuU;hNaF}1Vg z)#^OXBUNFP&DE#azlaX8+jL!F9{koi3~6t=U{in%@3GHQm^1eUBz0LsqLV3a>3b25 z{&ELYb_}B*Z8lJc^Fg$*$P6@pj6#BzKJd!@aZ1->P_p05+VcV^b@d=QbTjM_y{*eSloi5dr#?_CR# z`or*g@EBVnl1C>Sd$UU4&*1-P5m;^l@V)q)a4){2CdTJ5g%<`>wqHV#t26PcoCL^U zV8|(xq>p5vO~sGwjZ>o5HIA6QS`hjgym039P&{uq!s2$PqI9hyd zO3fGOHNO&PWv?a&UKr4{zp6{ zog_6}x+#Q&^6}Bwo>;v6^&Sr`>0PcJ8VvUC9s6>{z+CBuRAQTRBLY09|A zF`ew6pG$l9K@tBW4%Eo*{Gto3k+AqSkbSa{ovLUj3>l?P{o7G4wJR94Ycy_6^s|D#<-87 zP%Wa4GS1IQf_wnnI~+n2h7ZBUbX&I8Bp32CSKv~q^TapUlBSo&;K`T--1OivPRad+ zA~1u_WG<*GVZjx&-T`L|M0mG$Uw}db3p9S0N7lru(1h!!FuZvIdP_Hllr?u(^1QyDW zujU$@Pd}z%!l&iXdFujdPV2|qiK6Bi0y*{iumQ;&0nn*uON?K9Q-`T?Aur$O~B7g!k*%}&hJV{fJeavn+< zW5nTiSkDA7CVw*ba_ux)-r0n^7fNw0&fa5UoCdbg`3uzQ_LGYnq~O+F6V6@xX!Mqp z!k7&X7`}|d6;(e=w(XgXQh^(3;`9^r&A01J((@K%XnrT<>2|!*+=ZOGlis3HSOx~y zgh91!EF^XC;M~Xy44*uUKKU>LOpj778_C?<_vC2!o2B*kUc&GkGwMB_W76a zZeJ!woxMuMybi2ePiQJD~Wnnn=8@#@eb|kh-z}^4dax&)b{#pNR$@ z-m6Y79HsEF*#P3}6rqoV!*Z8Qy85vYQM1&+x~>0!eDa2D`Fsehu>l*CyBIY?o3wQM zlENM>8u?!cWV)>&Sz`ZauZKF(KHq}1acVH@y8=qT3WYMe6ySUM4LPodSn`i<*fLhh zT))1d`xD;Lvros!r&2AVajgOynIH?dzKhZWmmz6KKlPF=!wAz=)VW=hjCWgsbG8_} zp_)z#-drY+epL|NiF@)%r4Bn2+JdsdPoPFBl5NYbk4$LmB`|bu5WZU|l81M6QK4RuF7T^kW2@pw!F@#*wCgzRlj~+- z2It7)ie`K(_xDa_!F#AK)_}UUIHL7P78gD-A-DZ1A+moxtDoWwF$!zgbG31r87@y2 zmk(nPJYg};UGOw;5~RutQCUfS6fh5_d(&^QX#XS%pHu0Hn1v9LcAez^v?q(Y8nDAq z6-ZhR{Cm$2uSLq(&6mFLTFsIw{Oe%2n2)HRZDud#IRc#_Kpu%aC5C?rv9qCuZIBs( zKM5MBl&;P!`S-%K?=Pr`&IqJ+w6Y@6L|CS_hJ~t?krzitiQzV9e3!Y1Jkx20-42dW zQyRlb*y@Qhj7C|k#Uqg4$D`rnq9h>ZBGcRI!F+Qx$iiD5_-eO5^Hh*S$;O%RV`mkF zu9SzSzUNf;W)K@}9Ab?wA2}JpuSwt3G2R~$X<{svi0@xSfbo(+Xc_m$DR(=e&M_5A z!;u_Ixk9||^m7Il__DFBo;6vUu2Pq}4a6vE5_WHz0+XueK)dD_oXoml+r#51`27Xv zRm?2l*Hxm^+soM7>0Gw__{9nD%bpl;Gx4kaMG!Z2g|@LTXuH3P4V?P~r=6Y1`?YK7 zhGlsqU#S*4S_vvu8}L>MZYH|EWB7G;9PFNT0~N-cQL3Sx;%|cA)xRK^lS&P4Qg98M2@UH^ zLF&IWi?M2PGJ7Nyy9~F$aJ;hSieCWyMU1x_y93`?3na8{-t;I!_O z!nFdOC@e9Zn0fyOzlUD9akd4F->BsA0t0E@gx1qGItcU2OKH64c@{bvz`0Ut3?^Te zun+M9v?D|S&K$A9eJh$!F=qkl^R1(eNeAJvV+O2NSGg2`tQ1x5SA`Q7-VqzmW=@Q*GcLaSn&z76 zz&6u8m_Ocw&O{W?vv|7j9)b0)A+XcclAf*g1zRU2;xhRq2!6LmRZT;Bmh%;It`y_R z_5U!yCjw)C>#=JaU738cAs7$LA&J{BvYBtvh)Z}SM^*3wss#W&sx$>GUUKkqqBu@d zGsU8cJR;@24pumu5>jtYCnp6#(EXRhnNvi9bbg`AMndo1Gl$#rGcn}I07?i)VpG;M z-u^9Wux0;kx=3J@rj0I#TF3Lm`DG8sZhJY3-cO|(x6Z?jd>8Z(XYehw3mcYngUp)* znErhaHN2TdqncO3->V0SbFDYQ5kr*KSi$*jH5=Zf>!MGeDcJk%#Rn_5gUdTbIOG{X z=jIGiwX#-J{j`<1oRHiLfR%onNT2 zOfD3@i-4^!_D}52+o*gfib{*eVZGK>RLeO6KXW|jqtCafjQt#3XmF5NT?aa6Ni0;H zO@dQ<-a=wb1kQE2K}Pdpuz2t_x~y=AQ);`Yn*u+LN}Y$?;xb}p??A;m<)Pc|772XWkk0~oZNY93w$I1fppu)zXCT!bVI=Wf~J!1;dBwHL+ zlefY3nd&gk3(~DPsnSwV*ZYjB4?D7tyLDjSXJHiW_y?XVCiJ|P9!?($N5|V; z(3O;oCXLr|($9IEJ=X_O;Mhx$n`8iShAYv;BoO6%jzCm?2*`UOMjOA!7;`>|^)tpD z>n&0E#WBvI>JD7~Q;^L4l0&`3_EL6kK6JXgg*fU6IRpD}z4b!qSl5qAe&u*T(GE&? z1#v8M&Z1BKGbZn_m$|%aVqx<}LAI=s_RL<)X&&aG$q@!~ik8BU8e2Ra`~r0wWh`Si zZAHHuvNewCXPN1SOs1vLg!AIxl0dm*@bvo;H2N$7R+`!n_Qf8jiB!Pn6Vc|!=JDZ% zpfUFSc^rep{~)&QE{66lf%O^d;1=I&3@dCTNEbHVIIM`Gj3Iri3XT#Sp@XnGvItb z#|GzyslN`=wXB2+doQD<*IoXXGo^6dK-0q?L@tI}>OUKT zo8|hTdr$&)JPRj-&s15Su0+kn5lP_YtI|6PlK-no^RoxV1+wtu{zur{^d2&{T_g5ee_(&`CtOljt92_hT~zomHVV zypy!t<|G+47Ni|V7Vrd)4PdhTJs9yYgLATVY`?WIObPx&i`zG`?Jo+bjBpqE)Ukks z{`d{|UAEBZEjBg%+7vxE9)(@CPr<;#8QKF|;it@eV*hEvo4Tn_ZGT)~QEDEbWfTC0 z63c096646a7orf)2}Xa+B4^Fh(dVZos)r|VCYvM?qX2)dU8OtB}5 zb%2w-xDf5q1mLILb^6$J6`D-5L(U={lnNiBcKge?3oBHipnKwOm^YQJ%G(Z=?wK6? zqlji%&mezpG*=}|2=)7}qk_W9n$0pYJmJn|^v}vsjPx!5i`{?OkhuZW{Qk7)Kp3iKHMXBkF0{G*4n%>Kjnb?zVaCv$Me4ydTR0r6-%6nZl4mV`(h4U zJS2uz-E6as>36fA5<*x4d-^yc}QC*LgfU)sM*`S^tN&-?vFV{)n}Ek)L{wS zpLzyv{do)$|GeO#<3DO0aFuiOdm$9rxYMIL-{^_C7syGAYdHUcN6qmbA!>U|5#17R zqGG%@Bl;U~|Z>8yGRtrt__@^~NDU3wp+rud=a<=e1x z%2}qk?>?E4VuuPl<&d|8A9jcJqsGP#h`qTS%?0$)XQMXP$43mXK?>EIEm`#^A39Gs zlql;SMB7-rNhkYJI{7eq+CM>m-vN5h{R};8@B+q&oC|tbfD*5D>-HPcDUhk2!^+h z!S|{vqJ%{l<|>Fw4@SYC+?RCl_a$2Ub3*GS-@^sV*U-E3TsUdwAJE7p4p)kIlV~*+ z+E+Rs=I(Zc>&wgF@#CpeC#yx;E5GTsss^3aU-(9autUA1#zu6i@+R-bUg1dfU@4t zFp6tRkJYY2+3En4UGrnvXq8t!_dmC&Q0h{qG3pwasExaUJ2 z1*2lzkXiw^Q)}oYngQZ5!NfNFJS!XI;Et8gxxtI~!0)Utn2yCb^Pw|(Jljl@I_KhH z%|#P=i3S~R^ntBEt%%*qYS2+tz>RYkaYJ99z)7)BF{d;G^>))db@GHWwRwuE5%iZ?hVTmco5eW>L7V;Cme1+z8H>5&3C*l;qC*hSQV zd+25GbMxf#e>?+e1M~6t?*_D6U=8lMiohSd3T?g!1K$T3dhygF_HCIJF<-Y2H#|B| z)lHnK_1Yl#cyuOs-Pwg)oi#8!?QzXo#~I}6>q4p%bC@f(_7ux;e?XMu`Y`ia8mmr` zVF8>sIK8(4{2K>wUh`czy6O?H*~WmZxY9wFUTdJy>)wK|wiubQbrZI1&Vs9_A3=iD z5L&m4O+pvx?VC{$&(aJ_Y6Lk_Jbt3r_gfnG@68aLCuHy39sxiT@`2y zS8^zvm%fIRH&0j`xeBCS?-5a-a}XP?Z$s6}snA{|j8-3PVdoAn_`6G*OqL13$;P=5 z?evgW^+SmzzLuZh0Nlu|wc1!(DGh>0A47!fNtB;a3DHv4DDXWTOr%n9#j7|l$(E<# zm;Ql?qzbrN7IVgY!ZGq@3*1w3q6cnOL)WfJXnKDMZn)A#x9=3jNurCuXRAD27_oqr zoYbQ60be+m|0%+^aSdkf=0?X~PXU!ViMaV(COH3D$KlWL#kqp9Xf5SMy-nAE^3hU| zNc_$D`BjDtf7^`m;@haq=T9VfL>|NE-bYm-CzQ@=hEry7@OI-hR`{t7dVT_n@7qk| z1PpjZffwP)Z!fBr@6GzPZlP?;gkN!G4_Zy+2Pz@DsQTkBx$9F1r}qYeqIm94TGu_2A{siEZ1^+<(d(d)eVBQ$PS`(c%rXf-=WuJ93a;* z86&Jp&>$v(dd=lRtmt3pDgr#dpd3;*tC7z)eR$6r50hCVMr2f8hyISpfW(ig6Z2vp z8l{Yp1xtTGRO&MbGcZT;>j{(&Ie^n0F*xJCk;tS-PzldO`u0vSxbEDAap9`C#_J#F zS^g8qUiGuaV$lb*9=QVqD_in6aIxaUYyp07xz9VVU?MX_120F zn0cdkQ7UBGN5CCzYd9n1Pv&lZOON)Pr8kNInv?foq=YV(D(#{|e}~zth^Y{@=Ll-9 z@`o|~c%Xj@NoIy4G32hM+yALkpW%r+W6wN{l=i^7+es6?eiMthF&EPQF2zOX-@(0; z$H_*;x2*K@ATiU$N%B5ey!Z&>uMc!2Xax)ugfRS43NK`o;rO>-?8!SX z#=o+dn60*>`SrGRr|5jNF1>+wl;>jZ=TWZN(FSO_mBxBi41g`Eha_$?X+JfKBNUfS z9R3@orMuKw{7hHWT(%4!yxontu|K%#E=F+d#R<|D;|g~jTUfPK5Dm<$B{L!ykyWbI zG?%-9{qo<1OS(+4t*r=e3_Rdw%G5*Ewxb|4auK%XC$i7R+o)UlDBG>4LDtx9qo;qz z0#7{*E&P)4YOOyueJJMUk4}N-=|W)lpB-eB^|8JiHuR0}b2t^FP1fJHqlxQ9;8~zK z8YG;<>a&hmvM`uiaKQyWeHnzU3!@?Xf;E-Qd`Rhh+0hF`9Zm04I0aqRs(6 z%ntv=MryH;g*UIG~KnQnKOq7wR&w6eX;kkRHmy#3wlzlXH=K z#l;I9Wj4afUd9ZRV`!q(Cd$zlMKX4hY}&J$+VpWz`fnDl;(vgN;~UUs%2#f(lm4((>?A zR3cz0e7qQqdakm>$E<)Z$q+>q+J=kX@KF2yTinQUXya4|baSdA-);|cCr$8Xf8UM6 zs93;6M*M}WN*1Pj=4?QzNK-V3oefXz4q@CuDQdLF8nvhYpnXt9zRU{YHK8V2O4q}- zJrlb=#DLC{55QhXcvTTe^^X@5m7C6( zdSwbOzAZ`XBAr-yoh0hi`Oz7j<}^{=57vFrr{{wKMqQn8s{3k-l6hHV{^uUNtG@^R zwdYdVUHvF8(ufBxnXojISg!Vp!>~^E2l+nUNN!1eWUp2~SsXTot-WTrG=DGU zJ-7=r`U?tJSvsPPCFWo7K*Vcy=89lVW8HRC zPk0E0Bl7h8Z^asodxCKK<5YV05z-x=K`<`UNUY7iVA$F}=o)hzPFcT$Oko~0A3Fkv zhaYhUhGIcN&l(!mG||)}1K>W{14dp|k%j$FaJ_>D%74&D;r|}Mcg{_ib$mStbZr42 z;|`K9{gI{rtKk)H?gq_kZ&}GyDq4jq@+zMS5m9~H(_j&U^!IBmN>Q`J#rPv;H8<;EW@PTh;%JQqTE z-{WBNqq(p}MVHermxYE=?Rc`f4TH;Xqe3_XElq7E_&a!l$C(A{Vmru>oe4BSq6b1Q zIgo?L3pjU$#o?Dz8{A!~j(c~XftQ~NocS8ez@Zpr58Z&{rE=h%Hjne5#E8A@swP<( zJ2?>x_}D4Kzx1!~7{INoDDPa1Y6<;dF7lRF`mLFvhc*1T7)wHz>9F3D>P+T$E)m~k zM5{JAP$SDm6uU2h=MUY-n2SCfcjYM{y8jPc*!Kd(+_>b_(j6?AR#SVIVPa_hi{3Et zV;lEWCIAqKUQODw;ZorSHb zy<9n$?W}I>FnT4wBQAL=uvotsl8oCh{9Po= zk|h$h)ZTw33@-nIn(OPq^43Z`k(>aO0-k5 z*|6A06h8Kwjb9Ap{k>ugU&l&OrYRWi`M;*8*R7|^bHpKX!Ej9@<>S;?>J!n%F(U6{ zg@V4qkm8m>8p9Uh0{3$Co}Lc(Rvn^zA&)s#JCxX2*FdnN>XeNxAd>GF(j5VkC}zk( z{TstHe%fh_zcdpq<8Psi-b?zpQ;YX2PnDi%F8~zDq+tWnMDyQ9n*MP+v|J9xkjxL{ ziSl{etuc&>^##c9I*s7YuXKT3#e`;5fDu!7lKA@+F)E_;HunR3T(=NczeoX#iJo(@ zEkm(zJ9yd>%uDZGPPv{YG*LMnzP)Im^9`1fMX%lHzvri?+nYkPQuP$l3dy{uk#%ELO_X{!7zP*Z|L;m6t z(a&^7>n(ck!zfF^Gsw?zr8!py2{9a?pL!m^Z|iU@N|5C}cJxKrlWSqLC>fn9eW@(U z($6ZtA@}!O@EF=lqicH!dFw%6iq3{sI|GDSz}_sI0WEhT;gd@fu5Eotwf*?$pNsRM zIq?W9NX?^0+;7C{)@&irT0l}wu0@xJd_ z%CZk6^7kuZo#ag)C-lO-dIw~$c7pyfQ55eoft=zBob3CDJ&)VM70B8OudD;8yxudC zGr^SGwDQrD6VF$8n=58dGk}FDzi^qP3FMgtfKSdk;FD_NPVE#zo74BHwO%3JztDwP zPh^TCsk6Ia z#XSCl>okze1v>#r^m&XPOwvV(DPgiURV=?>TMoe{n7%K z9&e2*dT!*so*g~zHyJ9^KEqzG6k__ineL2jf?5j=l(w6N2i=<{JUq%(e#&LnzssVv z`g(e7w2v$J)DR{4UV(+|H)8mHBVE#72CW-E4bj<|OVHjFo{nk)o_LJr`^=Ez@*fRR5JP1#NAUgDN#mt{a_8eu z3`$jnjW>=H4Vgq@^sWfXYgfQcl?-UxVG1Ly{qQ(J3TK|-kc-`~=!(2juE@4)7#dz; zsWWK?QCn|jDeThX4 zltLbW$gKyEDcVb4t$c+u4ymAroEhrNsG-5O8T5gpH(VFaBo%)ZV1G##aVzm5N<*2j zBIq$3pO?>_FnuRHz*ao@>oaPH^uxapVd`Jrk2AO3=EX&FYWBQKGl{^NDgpB2M6VP_w3j z-lQMNjd=`;vW74ke4sAO5$656yl)oe7%dupxN#`)6 z%__mDBYuz@q>3w_+e7NE9<&??VjnVp!-n6vOmCkNnf*`&ZAmwcD|6uL2^GMNQWvxv zCpbUT8(vQ>#!by*Fyyz2v+hqmRGA&3c8ki0(wjqQCOMZrSQ^Q-_-Y0HduC#AWjxOE zGJ!CQZVVs&4~2~diNN1UaPM*s%^&S2v(xP1fn_tDmuADYdGHoSyKi9fAAk1rV;1iB z{R5{P)o{y*0r?Zbfl#IWyv=#xL~XeaWF;*mSHdH>_UDCh=FFX#wum26Gop~p_JdH* zI$Wi5mAD+|hvS}i$-PGrWWKWwJbUR)UbS~~J?uPCOOYSTxvSv%w2!E-Xf?rV%*Nee zf5`n-ci8ifLl;Oykp-%C5WMC9FD88vcZu`b35L%Rb9rZB@bU>%_2$3=J`LPrSW5$Q zBiOJlhrCT#L=3wXA%#S8D!;pNXD_*lD@_h#n6nVNE*k+R6AcTG$|HBR6z90JJ@uR) zOvDn-5W^NR7yAVe>g#u`oRbE_3tR%?br4<|tLJr{}ek#Ur0T1LaA?~|97hbYH?h%743 zB|ba%0nhvl`Fr>@d=y@TS>Y2|z_eb-D1JtDt|~#Dp$aw2_&~~U>e3T#{={N9lf39! z0wZA~RO{C;D!6aNYfD_vx@&?FY#pc8&B82dhZP|YzmP2T0#Y)?hHxilioA3k%KmF0 zNnuLxZb1kZPuz2h5B-JXW+yHD9iVncKYK@seRY zT;q)k5=-Elxi5FxOiMC)`Vp)C9tHE>e`D&SO~lfvfkyp2jD~v@pyAYCxEP{?-tiJ> zq<9|r7P)X|EQ%ym+5kENx7bUgEo@u26R}t&PqP-qq5ePwPLVT(R|n!z{hT{0*la`9 zE+ekcNIX4uRfL^UD2BpY{49Th?X!5(LUZ9YF7a1DDfJByrn?C@@fqW^18X45Tc5sv zKSotXbzxE0L*}NO0^21dh($~#O*?f5HQcwL=A#lQ6m-D=v2W1LJm5o%7gw5Z5w%-z zhV?Am1iPoDf%IcjVv<%z18T0LVEZ++2~%QGCOQ}}Y>9&GJ+$j3bIn$7VVZ7LthQJR zY7DmUQuo;sL$wF={F?nZ^_mrOzLl~C<%@7_{uWei0H$j;&eb~7ELg5@`o~?CR#Cn78zgN3gtf+L&BOYNRRCz zN+OR)dK$24y@66TSGm)A6W1L@47o)(yVOKa& zqm0W6^U)@99<@$31hs{qsrS5Ux?*DwS4A&_#(waHvzin=yh?cb6W-W!HUI<1>d~jy z0vFrO=0%D`L6>7M6V7|XTKGS3RbOr8F4W)4*c}c!ocu?P3$-~VrOhbzC>xJStwWE- z`Hez)1&W0lVwg&G00}g{?;g!>BX*9?dP1npbq~9q~hYpk0=?njwMvQ zg*88}^0MnBAR*+ArG%v(S$rXqt?qY&hi*OW`In`fH8VD$!SEe){-K1PIKkn>tc6?H z%+|{F!ruw@G4DSw8agTh(j|5%`ZAB1?TzG6&s#Y8;wKoNWsB=}0=)X}$NC5BN%k%a z(B=@Z)b^(ep9ARR(*@vnz?x{;S#dN}tZ}+nI*Lt=!qqEEAZh|WpiktWiXM{_^Z zs!0>y+e!krm6a`TatF{%I|%%qD`K?812o?88id;{=%aBSn7`W&y6!Pl#FCF1|9n9X zw)C>W>q(YLbLCL>izXXyyn?g8NWxQo87gv1mmb|4NFEN3!{NAA7#JIdGk5x-bLcVq zIkniLvQq`k-_L}ohn6_^j3mx-u4b7DwUo;}2`6i(L(*(Tkc|Jp{u56{DM&0(n!bL*tg!mYAY<>vQr^aj8{*wO# D)kH#D literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/train/tr2.mfc b/samples/HTKDemo/data/train/tr2.mfc new file mode 100755 index 0000000000000000000000000000000000000000..3cbdd37ca77829d1f609a9749b318174bf0dcd4a GIT binary patch literal 19824 zcmW)ni9Z%^7sd&ZEwYncB}I`fG50-X%dSP%5>iAek&?12yKE(Ei4<*08_%3WMM*`A zly;?lskCVmuh07joOxzG&zXD9`Ciw>$HyPX$DdlsXUu1d1s_5|e&jF=XncdIlldT0 zZw{CI;~QrcAxd86KjfH>2UNR|@+`CVaHZ<+dCEhZvB(%8Xonb1Hca3aEJx5>bet!< zz>xd*J_Mw8{{*x10Pi*JP|)My5U(hkg0Kp?&xhe0x>PsjVC&NsF3E|7151 z*u92ac=w(&wk_dCnS=kYDU5l*nKbN#lkN&ox;q4hyuWbuU9H@c%^sZX-}?|YW(us= zO!BsRKRFV!lNvN1x4z9irL4>azBKe!Nv!!U~T{PI|Nj1lH;dEp!@&{+4 zwd{7P;(wdYjpe6CC(?-j)?akZSzp-iAVqQuf~+QK>JB3Ja-jV_Wf2j3hORM~EYx|x$mdBkkc zbkw4J^}VqBt`pH&qy|l&bb!yghe$gqw&cgfz%z7cs5DD^P zN+ix`aE41M?I6@*L45zSpqKwBf%E8A?3?@q>(&JT7q^m)`SlG3k8yO{I}H&0H-MgN z<;kb@^)Rb{Hi;5Qr)OeUpn!f0_Lm&NRgc8s?@v)SXU0|(ye-02r1Wz)`n%yj&XGXGu&*I8B~*7+1dEhs_yq!hfLbLY9;r^=Wcs%w7a8r{}b$nsc!O3x~}a2YJ55gdM8Anj(>oxv8#bo+bl54%a_(abH*vR9Pvd}0;`_5 z9tBTnu}Xtq;CWaG`8LBDMCTSlufi?j_KL!zur26r=*Nnu9Y%ki2i~erpmjI@aW9lQ zsfzk66zbYeA85~pl`m@Gn+1@?y?;N~tX6~f9q702CeEAh^t0)6syC!M{r3icIT zL8FS3tfl@1P}T{Cf71rZyg8xJl%S7lUe8$n1Q|>f{EOH9*0Lghr*RE&tz1(h4;Pm5 zvqq-pK{Fx%=barPnyJljVx9&3KF-go=?dYJ=3u-q)I>Q`XU;5{g^Y}sC^>MDHL6pG zQ?8$JAsb7k-qr%&Wr5J2c9Fcf5($yXnON+nO6KjGXZ37J14=Br1?S7US<975IB#Ji zT>cute0{cz8*sb=yLwl1r3(9?SmZ1EZWZOCuK7Ya-KnvqBtl z)6dgg`6E0zi+!j`T`_AkhwdmYf%a`p@H}`1b@^&ZuK)EzTgg*&d7}W+x#|TJKYT(z zWtGBNUl(|FMIQZXYDuO6KimniVvg!A0FU7qD*3A!m6gP3@|0etF{uWcZB%J-SQSM6 zuHe-LPDh)Ut03iBA(-fdkTcTTnQS-&@j549`PyWf9I=ndp8p^EZjXfpzV$GpVjVlx zuK~)U_HtE%A`s^D3&2Z+)=GMEJ0(hR%BQ>F8fM7I-Y>wpcPvr*&KSn68-)`V>fFPg zaps``5A24YVyc3EuEb`7Pe5OvmXm0rcI6CMZyk zh3o%>QEv4m8fqOx3an@Gnmy{l=+74B$3YGBRQv$5pULC>@m}11Xn>w}(!fcNl;E}M zEVTT1oeKGGrNtHNVDp`L=vZ}?`Ll!%_1?R~hRkbN{7W4LuHT@GZa;u8E8?JLT`|tc zZzRv>bkV!xhQz3M094(BnLDYO@MXs}uKu+)#w(e?ku~C==dgmiDr5v>ucH9uTT!C( z0i9I1l>2^bD;ITEneiPthm+4n&`yq5PHps=r|pr7D2B_eD*C2lfR5d!d~IVQ`s~pLJgXuAK;|BlOad;HSM-TYI0c@ zLUA`)EEh`th1G-e+?|-_o`i*^Ss2xFm$rT!h4)q$P%!8P*eCkapOI_@u8iZ%wqtW_kS3v%)928=wI zh85o_A&W3S!YW_9oip>?SdV&Q$n^JErs%VB&}i zIxc6?wk?`CB=*fy@_OYCEGrH~F`*wAwz>nAf7GxVQ(j_-Q$Fj^DF>@PwYc0rVz}XO zDynSDB5@|i$=kP9SfC?}(_}<3Y|2TL*0G>nnv-$qtaYq)zy(mNFb4JLHcTCpKoPm; zWan^+)!exYu%YlBV3;pDuO7!`;T5dpT!OQ67O*M@TDX_GLJ)au3{x*i!l;lui7MDk zocfoef6yNo(SC{>rcFovwD+`jk19^7`i~V37iG+wFEAA~b1->M8{Amv1Cm-P|EtOg8ZVtkNesO5if{FfFT#I-=Sy9&ndDq^;HJ%Y# z{F?+FS3bbOFQw$no+!%gkEJb%r@4p9FX7E(el!bLBMN~zL|1G&+K&!`3^t%tO&;?1 zJ%k&Vl%aUFI1L_1Wp-+;C#g?O;mzD$IA3%S7C3ehes6Q!FVg{3x*KP9I>D!%fsk{& z8W-jYfUf6$m~52ICB)4{B^y;#uTo@^cR4eE&RgO!y^magj3Lha+Bq>tnL_o4wK!Yj z8<#!z3iOX2ftvPQZbxkb6xlgaMd3R{u;UN5=>FrBtn^UqSRm@Xegc7VOW;1ENm9cr zA!Th9xau1+i#w{DrA=Z;>fv)ln6t&3B$ilt*fiFpj^LIPLyDTjz!JEQXyz0^t6i&VfT`8Bq)x;FWQH$Q&dX6N5rp5#B|pYa${V{B-k_cdHpW?L%!ZwA4GEs*Ow&I}AY0KV=Z=QE<{biEaX?`RO# zk3Iuk#U#kTR}T*(oR%O6)fRA9o{dX6HY z`*Hs*Db!hW7It}mq6fyR;qq}{m#esXybGN2tTArRAgvQMrp<|A zq~0~1xNqJJ8zW=U^11}O^Ymr-FKRFT3HS(QVX3%Ri6tR1$8gWq+q5lm3+;XRn98Ti zkrnsvg7KSW=rDAa4HTQ03!i<&HPGW!VBUkO{hl$Hh^KNHPT=PII?k%%G z(GBgGz&vCn1(wmHG7WUDmyOlPHyu>h9U*Q$ExerKe#{6~!uE@D_EgH=?+faUsc6yfv$E3*7k5fScl!Kj?~+{Jecu6jNjgXV1|wR9IAUHl(i zI&Mcl-KVVH;?+3Cb~5z6Y$xsw`OHc4SakU43Pm{&(DSt=`VUT`p4JDjYIYMzh)<@j z-K*F*D=jq2oe9=_^N8!L%bdXP9F+Z14d?jnao+-K_@7F>bwV z{`^I#+PWAtefWu^MHw^2MhzZWjzNRrZY4Q|u!JQfbMlyN8dWWgu=26!y>;Sv;26M0@a-mtZ$vMw%Y^eqC_xAicu zUn-zb38nA4JKzi>1^(<`NO@2Qsmv~7q*+R)S8v6~%flIkgF3jrXc|h#z2hX`|HbLL zf^^T_^YE&TM><}1wroB37OVvxam5eEh@$2>yjpERo?P98R)wEYC-e+&p->f^9ggAY z=gdRRy(}~^!d#k~C48DK2X1QX$+T&Dc&+FqZ>K;gF4gcx&47AH-I0v*U$&5RrBhIj z(|AuuC-G)K76JbY*SYviDI&Ix4?AkkaXW1#a2^#yzq%->er<}<%KX&-VhK!>c+aUt zI>X*>V@S^G0>67sWOCU?yewS_`}QBe*kUbo%&7t4WpAJ&W)aD}dLE!#i8j9ornA<^ zQHhcfR!CTo86J|y%Fl=39bB{ZcR%WTuZ)>q-PKF@Xk)= zw<`@He)9AoCSkw0ojzJz*@Y_#FU zp=-*2+?C54Y0Ks^s5`J7$VXY~MSsHc4LpqPw#63r%}mVa@5q|ZN0r=kRQiOt`qm+? zwe2c><1qt~5D!#LV`RBoxZ?VK44nK6U1n*ZU$i07Ddbq; z&g+<-V?re4H?rc^qBJ1N7PUmr;4GO8M!cR6L!#zl!ZCUDIkpMQCH^r5XU?#y)^509 zcM|6x;Z66A2GeXU3mB4{i}rTw8Dqf#^!rndxuzKy-Cuw?KQ~g+bcPjlNrI>UNwKC> zg+7+f&ILkgIxb&;!RF<|wZzQbt~Z(8D_#7f%8QkxH9 zIJco6D#VX5eclgYXx3reeb5z+Z=Azet8^mwO@e;an**mOd(pb>k4W$LL70DR7=ySx z@D502`b8Im@UKC5`6m@sQ!Aj|q?W9?NNCISP0%LNM;m2l^7^)R69cW=I5i*--VS6F zAwfQ}6fdBB*MfXlD$?p- z^s(*)Tf8AeKcyto(A!7Ia1Fua*kh>nnImp)4qTu9I`oV|P`yae zc<~}M6-RR9`Zjnk8BXnEf3qSxr0M2?g_!D$CqKF#c?>`^9^k_Heqy%F|<1iz<6mJGj~rFjV~{T8LjiF z`1zfL&!UNL`LTeAcMoG-jvM56y+%>LdQ3VJ46h3d;ZK4Ib=l%Vdt)-VM<+EHZBXR~ zzQ|L_>PJLs>n+S#lnN{DydikGA$*V4L_XK=@ICYcxhK7Vg6E!z&( zUC?GmvokR~LmdV0SwZWPI<$x^fZpOskS!uWyGSYXlK0)x?%+{wJkKArO3u8L{NkN9_gmxaY&Vu%UVx-2CUnDD3ZL^%h2OCvxRr_ShgTx_FGf4OzihAB({_FJr2v zxtxkEQy^d6t`U!ni*&l$2y;R{gZIphr4nyuv?zZe9M7hmUf!tF(i4`8!RKGoEe2oc zt`!PopY0^Z@<+&`XHF?R+v^KB%lAX@t^XCQ`{u`;$`If^-0-J`yGGG6sGH{fNo}#@ z_-Tb&t_#JivKWyf`J=h1n9kfN`jz4;B*MP?dykTlYH_U(5 z1RtL+gY8Aelsi{ME2bnv(T`QA{a^sDO_QbJ-Cw$G#8kL zS_0Kna)Q-5DdwQiss!A!(jWTjfX-<3C1P9OLG$s45VztUYkgmo_pWaW?tl0fJ&!8E z_y6Q!>&jddG#*E*Vj-6Q&nFOTv?B5^Zo`V`Xq@x=A6u5u1PyLI6Z*^)xWu;|CA%$Q zme?I!Q=|kPXEN!7ZgD7e+D>Lk7eUdK!zlM|6MJP;3I&gUz!JF~ICX+&8bwuFhR@iA zMMt&3=cqmH&bH+0CuZI`0n?#yj|a+yX0wf6NhsmPhgHcxP!x?(@bx2boIV{Bb`^m9 z=wEX4P(9Tg?I*K-4MBF7E4=Pq&K6JK3FrRp#v^Xy@aNe+_-fNkr2pFBDQVDHv?<&T{<~KI@6NcDw^cMPzz7s09ne}OBw4TFk@xt_M`%puF`7%l4yPi}Ik zkmd-n7F_Lu00Pyg9m&# zPp1JsY>9)e;xn+ptC&uSt%0ul+hDDhGI$HhHm9X*W(stNai?Z51Wf30mMZ2jOsY{G z&cR-V6P)=6LEvdVg>Qn5B-YDZ{!<{y;s7-6)#cvO99Mk6yb*A zT$$^0koR=U9(XMp1@ol>Kxbk`S>n;gB=6jh1#kDlkXkoxu zBAs>d4v{|dkjuUQiSsEdWr*tv3~1c~-HwORwfil69J~Vi>s=t2YvWxCzYIQcmmxpC zo_PV|-1jZHAoTbLV^kA_3$!iaZLKp}eKp0|6RhW&$aM1Ayp9ohT@TCOSX!xAzoTIX z_&_W14}82+&saJZKt|AA-lyYVpx4x3*I}k(oTQ4`njc$G<*l1 zr&W?wU*A%fX*01%-VcqwOJXKHhf^;|vN4)I=(=(U&P@-c&oyS!Amxev8a#swU!5WT zhg0d4BPTI6)efcmmtcxSH=OaF&}kj`a9h`2SYz!)A8&mMmUG^N@6ZZ(d_IzRU(X`R zcRevd{W{KQOvm^aqj02P9lIaN#BV=^_>^IK!$bKTa%SoG^6T1lRY;l0PwzXhw@tFAKzNM2=H)B@hKeWC- zfLZgZA?#NGTRUEhh2I_Fe8yr{!R#w)zmx(2hZSHuc!aEzvLX$`lDJ)?3D^F9jA?UU zL9*#Ed#W%TYinOY2rAH_ohqm}_K4$h8z8rbBf&!d$fJjf7}+6%0r3@>|JV@p$}HKc zFTq&mLLo@@94%5E#mUzUIMXkcAe3>G1oOp{9;-xLze*e3kM!AhPI?!5+?B*-3ZDL2r={ zaPl%ZO=~X+y^%$ntt+v_A{D0@grd5#6MT6xg_ZhjiRCUUsrG*@ba;;i$L}kNn*KXb zIBEm&;WaShJ5w>y${8o05I|9xXE-_T7L8h9iz)v&TGAX$TfWqh$hP;m@`nd>$VrnG zSyon;3)Wy_+78HD841nm7HDIV!OK{>2_x@*rzf{`(qA7bSLU?`qZ16kQg|M*pCZBg zP<93*=I}9}Z=VDc-(k%Dd7CH(L$c| zpd01_rDx{dgkR6M;3{EtxHLg#^TX0{vcm^@V)ds9J-7(0rF&6kk06B`_jm!H#4vKU z3;CAnfpgCWK%eO?F6C?|YJ544Qn8x!g85G7lY|8vN?MJk@z2Q-FLTshEP@%wx?!`k z4Vov;B=;3_sc5DquJoG4xk$)y^ZZQ7+<`DINkJR8S2PDqWM$=|7 z+9COZF0vO!@!$fhXSLqE*kT#N7OIlbAK7?NxtxAaJA!6H!FW(F8e)=L&?Wx|JLOF+ zmF+VG-l}X)yl`5J>!c21b1|GQWb3i;(gYmu5spW?&c;n!q!>Q=?{Z3F*lvcopXYw*z1@*ryiz$8o}btzv#flUb>N!gN%z6 zT%gZP2$1g}#_i(d&+jNyi7A0tzN?)0hl{8dZv=S*{J1OJgg5*vfokGiSZJR>vj1&{ z9BM$M#Tz-#q_Yz{QzmCNvyYCgkwEXy!4SD)4P2^^L#>CJ@aOkYPNO~q3^&)o^Aios zgLhlGL!3Tzzbvq77_DZtz3w8J@H3S!>w=1~l^FlM7T(9tC7UW0VA&fdc==k9dGJVs zYwApd=B7vzMYge;sijCj@T&H5X0Rl`mCE8!UQloSGY&78UOm2$}HLeje~UQ}%c zE3MdylNP3PUp9`xT=SKfyjc!+oIFTrS~Vzj$iv~V0EX9J3ahU_Y`JXum#MFepuP9A zxP&ijVDkod=y@QCaaCy;a(~ksBB*dgDY9k zZ1*I!IcK`eh&3F@N%YL>BfcMide znRAKL@=)q~FceB{c411B7Oqp?hAX^E>E*_aI7O`*vbBTZvV;IDI&}f-^3NYNy6zFj zAXA#;sR54^4KVCj9r`_VMDsRd`gJ)6zg7Dn?el!pj(f#2*H6>yNqgbL&a1>_D$o?m zP?XOW3E$JLlp~jI~2y__r9XI&%(9?`*-zve%)hT?`Tg#6TutC;Yy9 zjOGvWk;4k7s809{NUO{ws_(-vWwZvgqWExTV>{5FXJDw#j_2_CJ|x*&LD`}*Uf@|F za6AZ`9MfldfE#$Hmyn zfu+M)PPF7Svw!p!9yUAyXLm)wm_NduA49+?d&0%BW6)b$!bR`8MiNv~xzEx&;GlgD z=)9y%_Qd{IHq!_W|FD4jlXT$l&u1`qq=%>#%5n+A_h4#*6Fd%I!hQauNlsmuOi#;6 zG3iz{Shv>_PV|T2l>N`3uPh5z2n}#2?mhy6ExnvjPby8Z*iIc^J)#~1%{00|gh_}6 ztUVY8A7}nSzAHcB2;U}{8h8oB_uT-c1xulEeGhkgz8pDmcoDN}UlSNhOfbmNc&rEt zhBk?Rs4RXK-rmlKz}fjw_V6tnDq92Hd($YNFjDg+L(Jc|m0;lYmWk^P!z>SdxZtIY zvzP6IKr7iRB`cTnLevXMXIL|%cc_CK*d+u<)R#=m>Ovfs!q3DPF2jPXZ&0?0LB(l} z@Wwy{_WV|YO|r&Zt=5DN2dU6!6#=T*UJ&)~CHb&#I+LRukGp$=q0vPJHSf5h)Z;m@ zLNJ{O6&J$RZ57;=&F?_FwhnGY-{#SaV3k<)kU6$Z9OH7O;SFy)>gG;=p_HPW-t#Q2cS$vBbu2upq>@|{4#S1uxN zSBSB$a_X=+=?Ao^MKc|IH<(A(xoElT4+eI8K##xzjE@D5FRPM<^Zg{xrG=roX#sVK zHG!U*UerEi4(S7N%)`+M9=pa2-7a`y_~nNv`C$=gOAAu|T{lRj`T#Ze+e`PG4#Us0U~Y{Yp4p+#wG?h%&s9>^7Yzq=GhknN6umTO7A|}G95x@!=lrznnSWP@ zk(`u5W*?wOO*n2H1Cso}kS1q8gQ7%B_-xKn^?^qy*yGQ%Dqq8?3zm|}yF77)ttW2$ z>4RzOHevdJGAS_Sm>GIf(D0@n<~>ZLtMqkXwr>E4Os<3%H{TN>(QUY7-Be6#u*Jd= zC1fnl(c=26wD`zpRM-^7J@-0Be|f*^3rXRDXE-!mPe#!t4J6=u7B%nD!}=E&FzK8F2Cn{%QdgF;`^1LPSl@f% z{+pS>b0wT`p)dUR?ne}iW0Or@ zIBKKRiTSAT*^C6HJf+SrvM|ACH|FL=n{l@ zZlc-yw_&1S2i96S!heCAaF)a?)~m=7x|13>fddrEYjep1buq~LUV|1V21w}1qzT=@ z3^R64#Up*DaQ~7qYM6(!t|IH{!M6T4JDbu6y$j(^IkS>GB34O{# z-<^$l{}B$|=jUGSUj$NiKWSEH2&#^jBmbfnvRxyIW;ZusW9J2o9g_gr)|0qFg z$pIQPwOih%AV@tFrtxiQD8J-1YA|0(jGYJFBB_E`g+(!v@!+ZoTQN(qkJa-wgww1P z7j4xGlb_6_TF=eU&$u5YKY5VNOOI2Mu?%nP7NDt~Fxa(y#*EB7R;~FjYKsi8!jq;! z$;UlpA>VQIf1!oquD8h6X*Val%(>VddmKi#n8E^mMJ)BNrEOwy&~axE{Tmj*No?!^ zH-9Jey;lScWeZ4{o)yV{*o>F50^x9%0o49|h&8D!mq!PooOl$V(EU|=odrO zOPB!-4`fJij|1--Glu0?LqK==O}OHxi!Bb$6X&KQ2sQ3zO+vnM?@s;T{@mt=_jTj& ziQyybra$C~?Yf3p+pI{g#wHY>|7OCoodv~>8@PChVRpeu9#p=Z!E--m2lZvGP{>D# z?^Fq{uY43|MxE#=9TqdWVZhMq)Lwf6fOb#y$`??+3fu_bTSAIbf;4 zN>rM63iMT*fY=W|-D*foBd#!Z*V+ z(0Xf}8~I_5e4qI#&sc!Fy4oMoIzAH9BHg>0W*d%kXOilu zwPF@r_wy%@=iXyp52Zta*Bm-mB!%WbHAdSVU08Fqk4yfdN~>aybBCox;YHkmiHu1# zC|RsJ&Yqws@W7pn8%!|${1-Uq#v0r>*B);5iV@{w56IzG7OG5|AlR)FwSGE7Zd51Z zzg-;H>lyL{^Eev+NDil0JVAqbUzw@xs?<%giRR}l!_`JlP~zuG2zB=4&PP7CEM4M{ znYWU;a~qXfWW94ISV|Dw;g_XH;SsGIOJQgFJEKVbP1xY{70%AchG$Ptv{e0_kNK{* zA>}_gn9`Vs@w#78`oN&oNaIvG>m47vJ&g~}=hblkoSmUK>ILfI`<4US;&H#`aui)} z2KFr;c%c6(hD6-t(nZBvFmxWPvFR-r|0$Z6oEgaFT@-<+;v>yGM~d0ZO%$3eM4fa! zakF4DdLHrxeai*#I9`Mm?F+!EkNSXn>PU?)&H-(~XU$oae7Iv%GIX};b3Z?ZV8rts zxHzJ4LUT-jsK{bged5j8$0rB3^T!#7jn5`HpXrrsPd-fAB8GhDwV7iL6MD))ceK2q zPxd>i(RdSkHahwX&ckAJBns2l}{$r4Arv z>_M9v7h44;#QT=6$_p(kNOug=5G zcLV?*&*%Bxm4vN1ip)^ld>CJt!8Pwpr1y1>qhjbX=)Rl?8J6kXoi*>-)szoi3hu&@ zC{tLwMx2HU6fxr(*HJ+DJgBKe)5E3ZxMp84%Ikju1J_Z?|4N_T{MQQ&)$>t$QZI^c z*$Sd+Pl?P@S=4vAWf>p*o!*sPjk_x5qx6$C$PYd(^NdaDhdno;>i!s9ojA{OOp762 zMuliLO@~7Z+Tr|(aC&>mI2z?uqvFqEbV!}Z(d9j3&Dv5SvpxictFlq7-Gwaeoko;j z=fjbC{wT1qoSnKye}cnyW4d=J^Mh`HWhM(Lmgs?sTP^TZlyFYOQrdI#CJ}yq0%EHs zJTse)vr`L2%m82&a4%!i5$b6#BcvaXxYS*|wUgjkt;I<1!F5bfFFc&a8r! zB&2S=&t=z47;^&OP0TTlaL76k!Wm;ARXh?+)ZzS(JTA;Vmg(5~98Rmu{lztWp%!5cv!^FEgwu5Md&BuG& zdcc0eC@v9HMDvLZU*+d2C{d|`88ZXuw7$D!mxc)-Q^fd7^U;`+$wZB>20ONSb3wk5 zsC#lIS_WQ(%@s?DRPY|Ey429>{TVr)K&1p+RlEohk#9jmaW|3oam4n_UvT)U;zWK= z9IEua0AHpql<}wuH=QQF9@Qz zdo*`{jxOgETE=4N|+cC!l<=0_S>s;_9257E3A4)1Mi1QL9dvg%75opr|tn`Smb%JF+B_Qe+c7VFUscUe@_Uqu&g5oINvD`E5ON4Qps z4+V8+69*?ZYWhYJE3Zy;mgv6Xr z;IR4zGfhaG%G3?v^r&#O+&YmY3!~r+LgHg~M?9TqSrdu7rVbOEfzl z0#9d^K=D>zQ2Db56nB?`@d$xS=OwLBM}V*cku-1JMDFgxB245T#g$)=LiVzktmC_%XxtwF zg-jXU@^%=^Z!dw~k3XS0*Pb}c_NI|r1~AP#4XtCnaMl_I#-oJUrTaV4H}yCuY3or= z%mrl1#L&Rx7pgY66IUrcYO^#N%Zs<8an)L=kNb`KzXNEWL@}yfa-znLEwr`$GTae( zirSqE(bV%JStYxf+I81qvrPb;;b}sb^LA8@NFbM`SHa~&ujn!Fqck;iA`>q)kwg9G zjp9PuWZ9uMa&=4;k9?a7H3#0n&VMzyhC9ruyjujGg=gr|xl3uzl~wRo%?q7gPKEt` zV#Fc*HJ$RT56^XtaUa`nK=nRPOpm%t+P{jz(ddV)+-_gq;RWkqy#F)&&9R4*JFAJU zOCS;UevBtdGkD*2WWcQhf|$nbVg?0MA@OQ4tJYS@IRv($(DF6#J7g>TuY_~|%PIZd zcqJVa(@{qqlqi)5QQG&t8KoQ|$C4q1NM)iZQaTec;*lgpHJJ*D8u2{$TBSiKa!66B zrbteWkPiCnZ{I)Q`eDEJ>$Ub;*M47@teYlrl67RMU%c>q!D1@2yaDwSEub}%vUPxh(X zhhMzJ6%x*lh0cn(g72&bW6dK7>3a?4LYC4wZ46s?@)c@Yq~MH@*RV{yg|7e9#P8^s z1`}Naa9-;W>b;0(b(sZZ>Yyi_e;SS+6aIpcCWdUmmNW3jD-Cu*;VZr8P|ll8-a@q` zyFjwg4!#={f=sqD(QLW~1AVpVEm{kY&#fh%l1OSZ#hYz6ze&riU1-Wqe>!e(De4DN z=(i{%cDiEj`!az}s7=NrdWvW`FAkilHqjb+OZseY03Wuzg*S~_PWvn;psMe9!Bg48 z((FXs$IQ8CFAl;B!7;dz4}pM^4%&EH_%_vP(}T$cG_dt2AGpOI3iIaz;CRT@+sqA) z%0*SbCQLFMgK?g7!PT;p?t11=4YOa9$YYb(=`+vx4UV$7@O2CNtnpm{8yN_G51CA9{!9Ni|*zRaMgQ# zNqOT_+FhJWTN^*J=UeB1=fe-QzhpXEZwrL_NK0@@BV5nLcXUg|7PQ#85yJw0pq85k z`8#X}RjOo=tzi!`t{&9PM2WSXKZ8c6{NS2Y2(c~SK(li?FnU`j?$)aj@_-Xy@|6uF z4PTs?X4dI!-zdq~e@Da7{cDL> z)WqwYtb)38w{c>K3{F#MPsI0;O9zC`W6$^@>*?TPfE80zFR|diB{jxOPa}vF7 zE6lbdEjVL$4XO?r5$A?Bs+`h>(MCJbq@+W*eWt^UJ9>hLS_j`p%kajZ3#qwqbNwFk z5ToTYQM1yAIH`;2#7}==82F;L!x)s7`cud?YcR7lr7-BA%3GiIzjf?n4`^SSfWKbc z549_oli7D|NT8*_x)zJz+OEU!(&ic}k`!iTG#B3W-Qb#S0C=V(Px8u@8TgY{xur{cZ52%O$cjHHJ_t+`O)fD*3z${|pF%zb>`6D0s zmCdlqL+QZZaC7iKFktUWL=H#!V0{f}tZ9c6p6y^+Hx`sPzb4}Yl)+6o24``U+VJUU z_4xp9Ul)oRzShM1-bJ1Z@7w-HsA8NIwlHc2@G{11~T*wi#1PJm9w7%B{+AJn}6Mk7uhuoTymfg0s-s^c6-rm2<0>gpqo^WPa4hNAQRDWzv2t zfehL^finDhE2Wj9X!UybriyWWKfHzRl*Oo?GYA)io{S?WrgJf)<)E-o7D7|~z@X}1 z$<`^>!yPJ_yEn7LP6B7TAPkE8x*#_}4sutHN7s3yp#HKH?2TH=&Q6PgsGTZAxyR=J zH6}jbC}g!U$wFfC+=Z;qKMW&8@etYK4YA`M!kE(;FnX~yYfrVL)2-8nHQCx(5D3)} zqKMup-ln{vO-QCZA6j)})zevg*@rFi&L zv2h(moRVe|kIl{OqHyDAd!DY;{-(JE0H@76LDq{ckUfjC(Mw$;;|z|1@Pn#n&3~g>4tak@G~*o#jm03y(mo zZ#wze+6pNaPr&zF1Mv=1nO8bf3WcB7SJSJyb0H!M$=GeNaPpuHa~Nj{_N(@=OtVuY zt^Ph&B6yBf4y$QwNeQ$?cS6hi9CFIM30&TcA&$a(6B#Y1F(vyT{$2p==6`^d5ei)s z?pUk#mdbRdqptWJRMdM=JF(Ee(I`XS=DmQLY!T^8KgN2KmrGP1U7=>PmvV!O`q=ie zLbA1A2U>mxKviijyBc~9M|&-z3+3$La#8_3SY!l=eql7>mtL|Uv4ki#+G6LS6D;P3 zA-tUaA1W*Nz{V*RX#DmgEzNF%dp_rThqvxn`zkUHlI6qs1xq} zu>xvZW4R_%9-1S%>HQr!IO6saNp|ynNU=XB{`}x7lO7#N)TgLpeT^B+j5C9u_NA!x zt0`D%%}1$ycKpOL;TEbY0J9-6?E7m7#!u)ZJsHVlOn5pzNXmwl*5}bcq>DzfTHsJW z9d*6t&~x>_K!V>$x^|X=&;#|Higd=&&70;B`I$5EZnzygBk)we)59qLNr998;0b!B`TVGr zzk>pIl6^~#hKrp_Xi!zloPF!Kb{8Wot;mI_p%d`PB?n>yy4br4ZM1iNK&{*LsD?#4 zyAV_dH@YXmz@1(ebJ&Z!E~SfwkDQ?+za1J@*`r#%6Wp2+iWB!O2J^Ecz*yUboILU+6dAOmMtlYrsigwnj~mmS7HTm6rKhBO z!6$O#dID!Rc?0f1Q$S65Bn@gPzsnUiJlzKOlnUWjrC=zXZA}vTKLVeZ54QR<$h28M z9j&x%ke?q4VRuI1q@_0nu6hx>9HIsL79tp*EC!!sVLy(%2&(Txpv6^0&OELcyEhu4 z<>$vBEqR63FI?e-!0Ebv*$+?BmD#iH|Ij$wo8av03V-DHzzS)1uKWH0@vN*3XyrM; z_^HCbkcez}IoTDt75&2EUM^|YFs4^G8?zaSKqqYzIA;|>lJc$LxfA_xs^q}VD1hhv5M18_MRwEK zsU9(0;rbm&PjUIuJFLKVg;r@?p)HW&JR(@hs%8+sz=_8jgR=hsnJ%l9UmvNsI0UnCKr)6?M|c zTc0b`rSI9WCL^eZwcb*I?@@Ii`7NF$&ry}6E0ux#7;WBQqYJO1>_Dx4hEu24Wh8S% I`~PYF2c}SPWdHyG literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/train/tr3.mfc b/samples/HTKDemo/data/train/tr3.mfc new file mode 100755 index 0000000000000000000000000000000000000000..29a2158c0dff47b308c719e8dca6c36cf810b4db GIT binary patch literal 13844 zcmX9_c{o?!*CkU#NX8^Gi&Uaa_nezC4Kygqkd#V_G^a^QGDbp$LWB&Zs0^R8cQi?o zlu9L$LXqY)z25Kd@B6IhKIc5=tiASH`v?gMO9=@_o)MZZ3 z;L7b2qefWL@)oIUQ*+(VWv)ERyNAO&r_C5sn33OpcQxT5dF&Ba!e23Ww zWr?(dB{^^=fDS4zp_dbs1;;MkB;O4RsI)@=f0$ijznT7aFZhsH3#*&fL2i#e*CA0( zJ(ow&vjyQaU-=!#j}QmrP4P8nybk_{*-L7mx3sEit5Mw`mOGL$2!hm=Xx;y^0)F^hZbyqgKm6#R!t zP;eKVEldMVh=Q}qqfpsI66#R^wM!dq(D(uSsB?_@iTQIK%EGK$I{Sa?*;@c%Du-bC z&j8p>{ow63VjF?m=)rY?v`l^qyPdd@9u&V+)9xe3B*wb^?>|M4ASpu`O15~xl1u4u zYt}}P^Ad;B3ClpP{2P0DEgurb)WcpSH|keh`X44v>Mu;H?SZnR5$vq|B*-`^0`B4$ z$dP;f5VEd@q&*u;mgpUVr9BZe)Uo(KOj?gC_;Ka%O>qD&dfG#O>tYCQkB8QEr(yB! zM+~?B;Fg^Ki(=!-AnnSsng`}hcuF~g?z(dW$F@GK*_AB?Wd;7Ea$^n5pRg8Hle{6r zK_BY2RII2M zeMl|0oAX_<7^C+}(yXuI@Q$4&p++m<_mnA+^h=Hz$*!fQyY@l)ZdKCvq#eW#NR#_x zr*SSDr(;kGz`0{Kq;o=+;QEg5I9sR?e(x)$D#yR^iWUvfaC{^kx%wq*59S07sz+=~ z*MCGSt(UAxJe0O0vmTp97L5~S3DCyPs%gOG#SWaj zF{Ak>IXZep7i-;l0)6_%^U}+tY4h^$=&(|mu6nf?G$-r_i|-Ab&gZ!p?d;3e9|#hp zPF_tXt5vbY?uRJqhUt%40hde4r?=Lp<52^{_pI}xwjP6x9h_Ga7Fs1wUSIM zD8Zl)4sdqoD)zZnp4@0vpeLft;Lao?dVNPTH&6s<*L)D80*m17Bwxt&3}Z_>#y!Y>S7J@O;v}es=Y)X7LTK{hhWncBRE?z#8Mh>;f{;iG}G@7efY2y zrHehOb>wCEWZ+D%TXhrRcgZLnorALS?vV1+8BVUB1?7Tjbl8{4if5S9u7TTdN7WUs z#I>VHas~bKG=hvJm!Ns&edLSop!CO4;OOd!;?);WN#qzw?scObSr_1?%2Rl&`4LC0 z52TaC>WH$}bGWnOF)rD%9j9%+!rfoD0ZzK_LDSS;l+cr+zaxEdp_MiYpN>Uw!9sA` z^M#DIGlQ6zGCa^V7USglCEL4zNQze~__h z4Y2-F4(@&wil;7G@zT$ZlCq!CQf`n-v3`k`VFSBt_qU-ihZH zxne|qDjS+$gDb`z2aUHkP%=23SNZ#a@b^DM^P1yihg=Ha`4c3-(S_z|*I`zuF7AB4 zfC-5P;iAL0S@#J)_#^h6*W0p}NjAs9W~H6n`%77HJ7@vf&}cymhtGB~NTHu+1)CG$ zjPVIiS@_crs2e|y*FSuMOuZfkVYVL3V*VF+IlGsHnl{l3KTcrjPaRzF>c6-Pnd%VeM&TqJw`!BH`^8} zhSDP!@nddj&=Yrx;C`JJoh>Sj3NNFG|1xnw(Ibk!fmbl-bvV7PBZ+q>e}Ub0PvNdY zB5yk92vw-9fd?zqXydKP@CKuZ$CC;gdo}=*W*mW$gO2RMfiHOF+Y{)WhA95?J1=^- znHW_+1HBLTXo2k48hQ0CWNw3_t>K?6oLIID4(w^B1y619c}O*6IBmsAuGX|Pu?5z8 zc>w>nk$QgJLcT~060$^ub#q&B#AFdj3%){UUy;X)-2*6PSPl2`W|5S)8z4vG7M<)O zN%dx2qrVrn5ZTe`ND{0`vepmsqPmyLUMqvXuf5>CWeb%s&H*yPo7Gy+g1hej zKswRXRzY$KW@g@mX);eq=ek+Yb}j(m9S0>vYi)7>`OD6zd9EH-W9Mc4+E3fc*ijk~GD>YrSo^>t=C(wWttw*h z0Tb62=55MG(?o?pvSIucuF~Z;mHHb*FAq2n8TX0kJ8d+|O`Aa-1Fy5>-jz5)o`ZoQ zCn_AH3HB~htljlEm3uIc&XAFyQA>=tk28OxX53^P)h$K}H3k{ikEr+JDvIx&MrWT{ zMe~1^p@Qxm2(m1On9yN)_<;@JLz2e`idEv?uQ z09#WPp+?#p`Wlx(ef(9Tmnlaijyd4LOHX0s@Y8?I^-XiB_tjdz}`{jDZ%_1h_l;7X+@E zM$7~9h>wLGEEK>LUBeDcIiJd&S-nU9nQy6HWE=O;$Q3q;oP_4r`LI%N9WnTq!lIQ+ z(4+nYGF`>1!;U(Co$u3J0jXwxM8uhy_Tmn2r)2nw;r}g+v86!$b>JoHpY# zJ?r<8CY9{LAmdvoHT*?)mjyL%zfEL{QsBIuIy(2xphv}ljFjEWg4A3vz~U@;cNy|R z4}aiFMO(P*k2$ zy$NtLCX2+H&ZIgL1Pm1(;>7%uxT@2IdIkLA-XDy`v1e2uG25AV9ZUy{nGHB*<{$7C z>m@?Qd30vTIjVfV1C3t&f`5Z6se{s3?)tRr7_ww93JH&bg0quRdVW4E?hz97|B|9= zKVO2~!owud_#24*DPcpxb7{0r4OjFu8V^Pf*F8-obeiLX<79TirQ$>Ir05oF%6J1q zEiF)(6U;I$chZSHzgX_P5H3fq3HK~eg>^$iFrdfaPh=t#)}Ca89!E&!jbF^MsvFwE z+*oJWd+?d-34s&uaH)$|Vxn~kwE0@%B)vWG#6NMkKU0U6Y4?cyR0bKnMyM?C1<8B~ zIN^gNh-ql8`E+Q-dn_du%%6S$eL z4)tfI!?*hfaK~It)WLA#cF%(Ts7rwZXP&T=%f?ZwkaDouagj6sbQM+m?ttHcdDqP*9;RETIS z#p|YTK|)L(e!Vbfw;nx44<|7)`K2%fSuciog+VemI}#2yZpO8_ANkFl=_n~S3ws(X zpj0XYCyk8*hxh+5V#PtKI6;$mA58&^9m&L7Ne}LeN+7Lw=lAbiiW1kourE>yVzNrn zX2U2rQSuLWIyuo)i>Gu%^aQB6=}lHyeSqq(zG$BDn2#8pgwn?^+>1+8`}vdyQ&7Lk4&N2MV3Jc^aQUwZP&Xis z-oG{Jl1mH7)EQ|wVp;)Np0fxdSBIj>?(uv=_CYlGHXdL9=pr_OR=Ce-5%`|=#eE91 zXnLwFxX)e&>5U7Cd(SR7nx}|j0l|D&W+0mVEytG7kzBcv3R>yRh4}Ow43;!u-5R;< zp1~m~PHH92{4PL!P8FY`J?Fk~SDXfA;N~UNL#%@?I9I z|Lr7`_W#CdjaD@J`ZZb}Vj(a!SP6$uUnLnk`dLJ-0SieUQ(bN~o#f{0v%3mQU=k{E zdLO%R*XzS%w{r}ggGXrLN-bt{aI0;$_Yv6a9}I6^N<&+>FL9r@6W?@fTtGp zp^Akq2+qsk5%o1VV#O(z+i(J?@pASj znwx13e=TOfkySBNGF_Y+1?(nE{k*|s{9W{(^psz=)E{L8SMhv82o$Yt!E1d-sL_ir zkn*V(20KcK`rc5w_j)LCmoo!{e?{n@wvG2&HW9~mOvhtqWgsI{faRl4F!kBD*(>Fx zsCR7*TPXj7E|*zAX6N36%j?31@9{@E6l9IE2ikC{m^xgGk-+$~?U0dZ%&r}fMFU$` z+rW`qsMj)QGNa56wbn=pv|Y|o>-aTj@j(ZED{e>kl#{q5BLPIUnLx>ED!jd@3Z}P_ z_#87K22M)IKYL2odfXt*_WRJm?h!OQYT}&oAXM~_C*j6#ZGTlwgMayNfUcBb_2Z(5 zszoxUe7B^T4%f-|?ZLRjE`{~06+-r=3U)H+Wz7Ra8#sMP5fY2Gk|RppL?(D75s99Q z&sIlqflJKU>4}5z{n`@BJ=`ELSYJkK+-2EbK>|d+{>51}EoQ+5LvX(B9g+X!hOhs= zV3h&4;7D=}+Dc!7qg)iKkf_z{#qO`_g14%3 z;n2Edl=XB1v8lEwHQt@<*`f$4u@+2M`vHk>wioo8b-?&Jo5}cqSnSkT1tTu4fnWP| zkT1LfR8j_|T}IJEaa zf1lu;)Gl6Z{aQF-Sj-J=PK5`i9gtwrT@|$Q5s^{W!Prb$y67Iju9=_ExwVJci;u-) z0dq)M{5Lr28%T>gQ&Cp#6=ZFBME4kWkg$v_dHeNIWBdy|_H|fG z-1vbbPNvgJd2<|@^aJt&9?}Vq8;J5-b!biYM-9)VY*Cg!E?@HF7F*4a z^opV>VN$GRehx8NpG5zfFCq$kI!M;qqs71oQWd!qqYu~Nn)~{o_;mprW4n+)sPY(` z^P;Hwjb6}A4y7-gZ*kT6kr;Be0e9|~f_*v?m?hSZf#2d-^`d&ve5u1vZYzSrXP4Eq zjYx*hQO$Ib@?|bzY#@e5Kf#d9`|P9Gb4U1gH5`COI z95apd4IJn4tiEBu_hwvDVL(^(D4}NxVz`?eT(Z_-5wZt(v-us+A`wgFrlo@Z7ZGYS zxR@(E>xN!#e_&Kj621J%9m>at;IxKH44fItTbVtk{F?Dx+ty0>*cC6x%^!ljEBd(J zG3xOC*I06+csc!gu>)=P_hMX{1^oNAjV_$O8cmFU((v*Nwp9xV7%U9rWG!sSEQ;?@>NoYr@PLFHpq znem9`a-k?%_7e+x7lWYdH57Yaq`H$AI{Y_5LE`|_RA;e`LaXU@{pUDy{A3)_ z*a=TBT0+}lMR+QcOqJ`U;Qqo8NbM`;evhbzj3?A%XzIAlR5mFePS&k~k1kqdv9%HPxbPZx z{87fGLL%@;JqY)$tK-*b$o7;${5*khsj9DCSj#;>+B~%JV7YO@SLmx=+K2 zK0k15S|NH}@8NAt7Gij85cw1Eh}YaOo$O2%K`p&=C@1Yo0>diE9NQ6is6hr*Mzy2n zEJ<81d6SGO)}xA{ zxf}UubzK;*bAeYgQlQ(OS=jD3+<;`wYaB5ygM{eTvYM0*JmD+`ZL>!V*Tx$7sr`VL zQs0RyLj8E%^~2vn`V*|R@jDX_M4&vW_lYM{x7^PNRq$`kKypXH2>tnqYP1N}QPFhzJ zO0Oh!!}`r`X!+<3JyzyGlzfKs1rZszcf1AVxBB9OZV9qyI174k^aT6+CY$E=B~_1q zK_JF=7s~gJWt~e^iK@*^JpW`D#CwXtk0LwVHX&NDJC35rRTJ3$S(qwSt*72eA)uZ1 z2g?0*!0Y5nqSv?|(P}MZd(VKT%SUli{bY8=qy*JPZV|Vc_gVUu<#gLUW2my71ocU0 zn8YT3V*0!mA4=Lm;-!xeM(^Ub23>OQWgT=xiITK)6?D_X)zoB;C8U=&LtmB|$hIFM zrkQfs{c~tICo+K3V*+r$!4o=qw+w6+%D~YkwRF_>k922$5h$C;gUJj{IOfnu^i$HY zU1TDP73tLM{#gy5GtH=lhZe-KRq)XL4llD~E%SHoL5HB*>_*ZwLF-CWGJeSpe87vL zRboF?J@vBY**6L1kTnafyYq*AB1c|k?iCvRMHCiqn!eWma*WiIiLA$a6GT@xle1GNQID1W zL}s!fjn{fe&)E2J@{XzWu$m-QRrV%51Izv&0~zOH;fZKC(pClsw%1Y5{l}OF83{ug zN&K{d6})7;6rH`(hIyvzz%ij^MC6MR(2w)*g5VZz8NO$SgmWR(dq1uFCyYs9HdKDo zB3kroBTWieO!k#VqDtlqqM9fNc}yQqnF--~O;b#a*v8KGj3d)Oe8R-R72IDH8Tz-T zmmk{^&x?vGK&pKNQTmtBG@*>-f#qz07Wic<(wu!6?E*C;Y@50joinD)r}gH-^AC%?sqyq-w~PEkz-P5oFbq&D7;fJSGa9(KM<93?7`u zqkEho%*+z*ER5x6yV%x@4V}YPCfLIxm7nnT!*jCgP9>e3wGQJiPeo_2$0Jul zVYS&+xbQ=QpE3C!*S+8cXw52t%;mAXo2h zhblt9`9;Car0(Ja$dPn{lQw$*XBUt_**zp-ZwiJh0klkz7}hNI7+bf3D#s3@{HtBO z|J&W{PVEXv=<0(?*T=BGUWlyKDJI8+*Wv!p>)=DqE>yc3izj-f(e-au;7EAG&;R{^ ziQO!KbM=wX5pDx#yRMUf0U1*0rGT4X+Cl5)yEy(|8J@9frJc{kakRfNKetp*kS_>; zbvfZ6xKadn<@S<57j4pUvK-fZPKCjJ*+@K!G3v4%t=$xbMuus;$Lqf}AKl|%-Rt-8 z=Yb-e%zjALc@>gHZ88{=I|Q9MooJWQ9CqS;TDW2Vbye3^z0ghP9^GjVNY?lu?f?ex9XkD$0sB+HF(e3ZGwAsMKFH5BowAep^#@B@wjD2y$%~- zEXJU^?Ffi2v&6!VC@A-;W)ZJ)c(aSK^x)-iQZkT$icR*=wDc;OlQ7J8n+>ttu?x6h z3$*N&#&oS%@>gvdbg7up+Io3nes(#G>~%rq=d(~gOF)*$JZ8Ex*I>zC8_1H`ieU|- zFfZp98?cxT$F2JL@uem7&+;DF4sIwRa|w0aK9Sj0Lnt(NJ}z>%C*^iL8opVMVRJV@ zo@ESZbbsX!%x>jHl+Hk*w<|oG^%q`@d{5+@7sBzDOw=gTqG1_d(O_yKMjsl4%MSZ+ z@^)t$9x;kVJ6S+}%vv1jF&=_-!?|Jmif9}YLSOADV%YK=m7-1X!o%wjsn&;MTtnD{ zvqrr1yyYld+JQ9XBVj!%+)!5tz+Pu~wBr|>FL4_Be^%m~ue)%Dn>jjNATVoP7%%5? z808&C;fC|i>47FMu0P%wz2{GXiriEJ(gEzq%%A9cdLz_CdP4I%3L2h@RCOo{j`$ja zPi{BezvQ!(^GqR(6xYKA--THB)J*XGu?u~VAGZD0rZ&uFDZEHQ6n$6U2G@lmQ9_*1 zYyO!wOhgkSoqcfc?-lGz#yj}@Yau3vFCda)ohT8P&(Hi)%*(4;fU(kVX!4h$n-59a zmP&-+N}q6y^G%16zqYvdt|A`vjV7-RDp1=pjF;H`oBrH$0K&b7^EOjyde1wKoA6B( zx2kW#V}f#6GvPgQDsnjgNdYfDy z`R#HRVbTC!LO-EWZ7Ok>zX>l7>hddtN{EM8B#!gegCClAnOSE5M>!8vKeZ4irw9wm z0!PAC(KxM zI*HMlJO^j?EQT%ip%56VNJJa^n9QF5RPFde3c6iU+@%T4+g5_gYhPTOv5+5s@;1E^ z-UyM?8sYh10W8=|$(S<-S^TnVXzlZy`u1(WG2X9mcAg0=8X1T?-n`=%T1V4_gY6LV zbr!{*aAPc`|@2>wtr7>n70%c zO+n|)D&RUVpRRFE#gXUYA>F6|I@a&Okr`bel$j0k-q|P;n8!uFSx+)o1afUU0hs(_ z7AmxiA?CZ!;^@|~q*~2_<{cM?_-t2NdO8to9|WVb_yU2*ug&b(*2~<9*;9$B=*MN2L`HksF=q?2K0$-6nRKC2P%q8(~6VdM_5-ltyw(0)_Cv4Mzx?_YW<4 z-os${CVuS0UfxH=6!MzaLhb!l*t5Nqrk;v}MCCaUq|a(9Ej97jj|51|C8%)z9jgh= zrHAM1Qt|J@9%t5GNLzTFdC#tfh0*44bi)Job)KAH`)yeyP;lyD550ZRW!}i3ic*@SY{-v%Jc7%w!G;O zxcnLGG9SYRb1hh7fIIsUDNdArMqt|Mz0h@b3XWUfg>%0Lv1cg}kaGV#uVUsxFW!62 zYdV+En`@12Zzn5)Nst`Tkba1J)YihO$$6hYs$dKm8^N%5MB28gECz_Lnoz z7u?1LqU(n5nJ6yU@fDiW_0ekcRj6p{;74ZEkl2Q7T6KQdM;;}NhMnW+ z^=_Vw-!&aAD^$_;`(^aGnux-Ri*aT`KU`2r#3IY6iGDD}s}4AN723iI>{*f&2B(71BS+pzg~uk{5Q5D6dMh z-7DvWj;}YsTcy=-yLK5)U3~;L5e3lCE#QUx^x0Sa%Ow7h1v*zZFt;{Fe8oSI!Ujvs zc#{KfJ0nrLs~=Ctl+jolFF4sTmsfBt6HGhB3r?T6MAzu)Fde^=Z5QK+*ugw3b+`}D zijSe8mOh?zE2cLlJc4qeD1Q8>r)1guYA~H&iSGOL;NHG5WWSIQ3E43kFCXxP)*E7| zk(+>-5Jg|y35TX*`TT?zxuhjAjahsfgvhSKURU9!BFSb7z)))R0~GUMWg`*Loq z8*eDNmh&@GV}_Pe$er{W*5ud72Dw@~e(pzfH;+N5!V=WErj3g-XR@_NbfB<*5AWIg z$o59g5%AvXhDsTJC~N+N1X>MI6)S6W7G8oHb;{^?&JP0yKay*6gyEk>3%~aHHmW}( z3_>5R#%X6hz>e%pvNnuT(ZN2ny?h_KzogJsaHb)u?p*`I$w9cSb~>Id&|x8q?P18%nhHi_^P`rm170r->T;CWg|l+R zN5h3wI}O6GjKk!3oj-bByMfo2_Okpd`%!9ZHTkgh5pTTH5ArUJg*^sC?5OfAvgpt~ zawKUGdVEjOLtb-niT)mJdp?0QZqY?Ml8B@H2k7gy?}6Pv3W3FC)O*JaVv+d@9u0|8 z%l9+r`1Cxge{Bq$9g}tQR1laZ6_#;d|R3q1tplCbWf&2x z3{Q5}!ouY<*{OYTpt8yh{1gH~a+43q-=V=+;$IqIY-@WWHyBb z`mdzQZg_t8%zIe>rTafjiswU!E1m*&176fR@E0>H$R-lBi8v|7k_CIWle{0D^wJqw zi16M8;>qv-!yH=W0j0(vD3Op2cONIP&h)t?tZfph)%2sf<6qGWmI>4){sddCcOIrV zM{w|72rX<6qHIDnu3c7-BbyC~!VLpzZhD>AhFzidPE&d1d*zgW8Vb$_#z5$u8m{U5 zE}Xi>7^N@&MQY4L)rbX5aM6-n$o&~#2dqhiNW;8x*~dB#26yKZ{QA{UrcL8pN5ROw@}tgxZBzQLi!Pcq0|}Za8DM6 zjc!7Lvo}BKK`$M1Vz|*A^%IDX1f5X3lf})u04C7`L{?Xmu4p*U&5@me`%hTl{sWIu z_PR5@v++3_cUTMN6=^`mFuiwtKa=|@%f4&a5l@LGT7G5+l*cW?Anjz#@qLS1A5Y>XJ{5uL_PG#A z=D;_d7FzY{yzSMegRK7fIN~{6n-h0O!EEJ`7!}`vMRP;Y!+e03)+z=G$wbH%wt?qC z)%5gg2eRRcKG!YXNtWFFKzGlP0|&P?xU<3puL>9x|s>(`Pw zV~nV)gDsb-6@V^|{@C-v2=#O-_$doA;NrI|nBe{i(&{$TjpMGufe#KeNHl~vuH8(x zmM-PKrtHAQqUKoND}wGXHF=e!O17FygA%R9EU|SW=Q6Ghv~4K0pE8cj-t0)TZ#9s0 zgX3_`)--%rH51pYUd-!^_yp^Yh4u1SV6njyeCF1R#3RsnVc#zMcI_U2!YZN67`B+{V{s@?Z{SMbJSF( zQ*i}lS7o3=t10#MbSElrQ`kFsXS!`>7rg0c#0wdYAVrSz!b{~KD&!Hr?pF&*E&YY# z?;pW&AB~CMxzR+}Wido&meQcV6X97K2OqxPr{gA25+!W~+l=1OI|_;9zOW_OK9a&I z<9%qJSUh(oWLPVVbz~h%!+i1ZHuN=k&lS*n#+O#gH|<0vYnyjM zcxZz?>n@i?b+LAq?n9}?>7BQ1e$KYc5`-81wr(IXM3#MrY_*$Z{H}CkM6#G9{C7R3kMUyh=WU V^sP8@Zh`~l!^YB6NA3O}^M6j`XFdP` literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/train/tr4.mfc b/samples/HTKDemo/data/train/tr4.mfc new file mode 100755 index 0000000000000000000000000000000000000000..eb50395a95d76e8dfb7f9bdd5c686cd6390c6c8a GIT binary patch literal 12544 zcmXAv_dnO~_s5B3kA{e3g;FxI^SZ955bZ*QBBdcki%J6_GgL+rLZuK%lJUCEDWi}S z6-ra35~*nGk-J9ojXXZkSx za5r2s%OIV}8)4$PyKH-|JzvTs9M)GZ_>ajvuL&;hVozOS*cGsTwD49+D3jr(aZ)|lKKhO-`PxQf-=== zv*rX2m~)e0Gdc0q`akA$PY$cCdk?we9>886g&w-7)H5_pAbG z#BXsbH{kIflj`Bd@A+v6hTRu|$E$Z!ao42sS=Pt~=wwEL?jihmf99^uufscXD z{$nmVKZ4W-TPXST2K-7AKx3;ob(FeEwfc|I=FBAmhf5-j~n#%El0Hj#d*cC8E#GCG=&~AZNCH6^{9dq@Q@rC+}iu6vmFDJS!488p#kh9(gW=gLy_hcJt zOf(=ec3Elc|jAkYfhrF^p8;{9rRa8 z!OcR-_}lcz)P_b>_Ipc*>X2Ji=!MS1=WvgpBVBsi9TyC&!0Bfw9(gq@Mv{CRP0*|t8V@SZifTW zP1Q%KngGgo5#~ZdZsL-OQdsPN#47n%DK1Kgg|&O{VCb!-aLm{pcI?z6S#Q1)i)UAH z!f-cj9=nq}^t2PVs99jyoE5xu-81MN$w61RF?!n{hvUL;S=i7o@VsV0?BCR&=;GVd ze{v*u!Vu7X@dhkNZG?z(Q*gn~xA1Fq5bl0b4(YwVR3^z7_MS2$D^A(LtqC^lh`@a= zZYUC^_x{Fq#V|NH^9(x8orv-ltI@MKn(P?b0-;x*!%T<0WQF%Gh;E35lf!$sqhb*d z_c`y4>-{aF6ob=ItIV=e0Eros6J zM=Dk6#ClhiLekP|zJ6*ei5^TS+Z3Dd1Zf!*Seq-UFJ;%C+9@yP_+h)`X>;Y7eeJ5FL6`04$;dx zCcN8fYhc{a5PNIt!laik;GOsLL!WaqV8*ULu+8@tESdD0J-rgc3KktEmjY$zJ;On& zR<{hY91g-Oa}fxTALga1tU~9#`ViH36}r4FzPvB39|C|5(R#SJXJW8WOkdVEmt2ywGcP>4HIVap?A?ONL!-BO>9wx`)8Yh+&6*LoCK>M zx)o$`L_HjD)W(H3=kvspN8t51`>~w z6lm`7!BB1uz3iliwyTBkWaJlkXt@JQdZMW6o@^@GY=pw^GeIS{mrmN=Mb_D_g0PBB zn0EIoH%@RIDlTrt3%!f!g*F?sUXjR|7R(~K;{u@5IfsR8Rioi1Rm3s#E8N;VgzG(T z(4NF0$d8J}*qrTjtDz(AZ;>Ol(koE0K82NeguuUl-kd~$EYS+lg@+r?;QGDmX`a?H z@K?WqQR}9VwtIuPC#agN5gr6o9j(<*!YJ_4otwNPgiHhpXl~ezHqse1X0|m*<7lJL51jeq43grF5b&2r^gdsO)mI`gYwScgG}j(&Q;N~-{1&okmM~6yGQ{Z) zhjA+fe9`6eEA-#?1B^n_$V`rh#`i4H|Bxe!PHKkdm*r|K(wFk5lvF_Z6^>rCdQV&O zW8m7>2YB}5Agqvj#QU@F4+bD`S&@apGm5~x>mVmHMiM@LIft7a z9-vm`U1Bfs2o!ERz(}1qrcbbkwBrK6w;0Qb{53@z@|86kpX2nCWpLV<4>b|{>GeDVSU#r|XUc3tQHy@EZ?PlI?Vp0-XSDFtbW?b8 zEf+G3N;pd&S)6)x97I>w(cHme5PZ4-ZVMj3W%lkQSTUD|hdjpkKd&)zRx?g%djrQh zH*#cR3ECK~1R3d{RMFF%SK1RhI;SR~)$nE#A|OB$_npDh_sj6mViEX$ghB6(Y2325 zR&|)_^oTS}?oY55$ENDj~x%ZgseG}aiCc;zIP*gg0fm<`M3vFLX zz@&A>^!A2AING)Z8VmZ+QT9DK@S=@I?u^00;x2T_z5AZQKY6y4p=Qb>w0B^E+sex&k7fiQ>Aszqo0lPjTkXFI4Z_JR1Hk z7Lp>4qRFNcDDEyw_V(ve3o}2g+_DwATCTy-7wNe4Mmv4r_!1r+I!xQ$SJTkG4`6y{ z8#=uOC^VQ!g1WOwU)V*g_lX3xq*W*#eH54Pk0*P|!T`?x;)HBXsKyCxs2@p3^RgW< zs5L@%SN$c&-U%Y>Y~-!FriWUC4j3udNp1xDLdB`q9IxD<=6C25=vq^PLNj-wsDKRd zFHX0bp>Kx;%NCGp$-7YTo+_R=v5OhYegXC0^SBuUb6L?J5xCy04ONmE(0DwLc+daK zv_5*`g$y+sA8Lq}GtOXkfv(k!n=3)m#+RF(s0U|WYCx>!2e6j91BK)bao<$J&ziUv z(+8%}qIdSV%5E&?Hojp3yN|G#{Ii^rwG|w_?=ZTz?F5kmT}YDDA+BMG{J|VOOly5d zt3O)ea@RV%D%#67R3IxI5#dCS=|SSn1*|JypMApDz*Wi+x4TlT=IAawE_Iq-T#|uv zr%U2J!IxI^o;EVArEBPW!8|zsW{`c77h)zSm&4HsS;TF=6hA_t7|*DUr8Ux7XxwIv zcP=-<%I+~N{Gtne;2aIw(lfw0)`ks>6~e;(mx)(WApg^%ButG@rl*^q;}okQY`8uI zyPRyHz-2mT6;cMSQ&+P7e-dm+APQ#3tRbF-T_jRp9y6V7Xyo)LoHD-#&zY@7=~+wQ zm0cQVso}*+1^0tazb~to9)^?iOvzfa*;FrkHKrRMCSAUD(7)*dreE5PnhBS2<}49T zqkn*`54y@^I-)>f>nb>TrjU5oq)<`*HH?UsVrC;U@Hfy6cPX^v%II=j_46xz7JH9; zE#6NrzVn9cR3kXC)Sawp44^ar^r5@(H<0q|gMV*LaoMQ_IENNv(1*p;BKS?s%|Dm9 zaetPvzbjV3i;11Y`ClV7s8+;r&kUeItP3tYh(h(8Vl=Um!yOpM|Dn1Fa-9OWt=c(o zPUR-t-mFCyS?W{s#<#FI<2MwCzlWil^`kRo2Aa@146c~O+BbYbsh@8-+uVO3av=rf zUsezURY{V1K7vMj`~>_^3q75eNSw)RXv;p10rv*r=2{&niLs#1)1QGuSqk*eJx}CR zhM~vpJx*d9$nPW!W?UeD=lT^YtryaEXejCr|B^l{f} z`|7lKTlQRj2Tb$d&z_l1p_+*|An?W@@4C7o7&n6$O(y$Lc5=?}Y|iEt;$v!~1??F|JM6fnHwA$>ZwZxHqE&gBlh> z-uf3**roy+pLMeLw)xaa;OV3y@KjIi@S)5&YduqMEv zBfC+$d;?Bxw6kh@Dve4zWXP}X3q-MDF`hHlt?8Vd$6VJ5V_0Vh#GRT?XZMHlZ)|r$ zG0_AtF87`{QT{nx{~=AD7u1l+vfnW4wgTUii{&N0zk@1fm!Za2jm5e#BKM|*G)k`r z>49?o%L-d0`CVYtE=I)iw9v;XnSZ+@nJ&4Lg9_==xL-r7#^rE4sQkSH;xop=`9)&% zBql<+_<3HoLKzYCmPIoY3HUf{M_1Zih2P>MxVv*43LXj|4Hgriv27o&IHX7Y#hk(O z@)YV&-phL{TaVV_zfd}BD&3Lv78OkGFil;ERNbA$nG01@^}*?o?!B8nmZ_uKGVke> zz8YRrQ8`q74}y?HLHaV?0&=UBaOI5c1SW5!7Jo0&s%78dq0l>CvYQBmHu^!5Rxz0~ zFP$vC>x>$Ko9NXnCDeR-0M8fiN7wRpP|0bcNlMme@N*$`-oA&#J5J=+`}UG0mg(%w zk9gGctKx(clyO|YCq8JuiiTPd5Y`w=g=h{6)QzEqCe5s?N{h-mTqjP0S}e=g7A2_- zz2qDNzc)$awPpdFFV_T9N*9xyX-iP$t1jKwbORKQNsvB~iDY@L7OVNzfkKl<_pTlz zc=0z4nd3uri2n^^_iiDTN{>+|K8K!4eGc;1#?zImdBoA_5vx5k`bNV((~|?UP^eQH z^Csz_UsM|$<=v+VH51V~-Hb+7db9TDg`iylXSJs1+ZreHPl}zC`rKLgZ(i~1Cs2f!+d@->~3`1Qi zAtmGqJ!pIYx$c#`f|KdY+tryG{*xn1Zhf^<+#U`iliqTRHkRSEFJtg*vJlQG5WWC!Xx)g}-Ny3Gd=zNBzzKDygJ<$$978VClwVaaD}O9&4gU>Np{wCk!Yl}HR;EXM zqsZjo-}peM8M&BWbe~iryfWB~OZ|Fj`ixHi>q8j-csPBbE(|rI_UxsYK9Oh|CeywL z;^TOAoORfn)E#s{o!ts(`OXpaLyA%3SQWJ!ILeKgdIY7bT;WQSFhAk#HKLk06Px4& z(NcFKGfb1jxoZ1R{#`d~*qi|OrK`#Bo!Z<)2@&`*{WS0|Zl>7{4~ceOJ6=)gL17se zdOT<&dYIJW1fNW{^IIg+@%pgSWFn`Q1vr0}FC60`T`}_xnby~Xk?~DvwCpe|wH8Ji zHVY2_bfWX!N}$-jg9fh7I+%ChvWMT#>shqtqN}+;YC^=fT{vrwzT#Qd-XUAir*|}Zz|W2 zGtG@iz0JU=s)2J*xCRDEGH4!VMz;9x=5;)_BMUFy0((IxNZDkDE|U{LMOTzuhY~!I z{g{_e|InX@hGDjRGESQ<%47uR5@G!hB=OQmNUR)&bmuhm9DD6bV83}+p!K5_oglLrHP`k*a;5@g`8Z;<(L0)96iuN&mAy7? z#|cgE313BvjJIh9?II5-&){2qm>Gsjx;#`-i^XYXMra_QNzX~hQ#S4gI2L6>WhP^pV^4K_FC04jvz>?Aw0uqUbz(V(UVZ%sk$0;Zi5QqCJUx=1RHB_yZ`kN%6bY4Q;bx=!jU8!~X=Kl|R# z(woPk%rZ}y(=m?O7pl@KQ!{q|Mka_mOsjE!<%KEHBjlRQG!_zG&cd#E@qer9Ql4!k zUB}m>d^uab`lMxGEgB1PxtHLmd(3~{ZCXeiJAU~V)OYx@9;rr>azTJdWSoG6#=q=m zumDK)q(VT#17Mb!UxE|T8<`QRqu`hV)cY{PmhF&(*}n<}q=Hl37hzrcH$ zki)uf3ZY<$HD^}PjC!?}SZ2HqCngF&-AMs5z49K^9nE0lisVSOV}sQi{}eLUcRtu; zwm|2sSZ;zpA9?oWqn^+mT(v0+T70vquHz?on4dso{50re6GbNZdJ3@|JOE)5XHetE zbo#?b9CiQHVy318&VG9wZf_T$7CV(eTswt$*oaW+x-hbC`8L9fnFWH8yU=ib5!GrG z!f8*#uyofSTpPCt-d+7jFW(hlYR$vcSKt5{*pWvKz3vh7xppAdIgDcQ2gvV*g{WpN zhP1~U1~X=$a6%wA@qjx&zwaf_Dpe7R=PV-j;cdj+&VmK>cA)d~PTp0oD%_+!1=D55 zquQxCs5`}hlQStInI^U1IKB;{9!#Jc?sgLc^+!-q6axJ}*VEZzJ*X{yAGfM#p;P8F zlurK1ZRqadvxwCClJ`kk|I&tNr}J>ZVh1=sq6L|kavJYnzrcb!E8$-E0HoZIg36Fku-)Ve&()mBPm%Go ze1STpuQNb(nh~FrchtzZW@A!EG>A@m0~N>OV5NsLI6o8S|DcP&@S;2zULGNmN!RJr z*j3f3MMEUj^3Q*DeMWNvSdV;zmtJn5Q`<_HjpUH{C*h!a;|pJ9&pbNE^bPF{wV`9~ z^-~Y0)c=^%VNS4FCin$@iZU1T;5L*UIC(E0>?5i;f}sb(lea!99%X zk7A3R_P|1^$>28WI!$tDC1nbeY31nrKYwO`ELU*n?Y$?7%iNBlr=0`pDurPXeFK$K zwnKGmHy#{*&mwh8A#_J4O?j!#zOUHNUb-LQEot{cDqIh}`A<+@tQ*SvyvWYCHFUaO zIVws8!)ePA$dlD3Prs~Zt}drwog=gQwX_3|%vOc)n|(ift1iCx&a-{aepq-N)_pTaFpHi~oh% zdEW@%)gOvZ2txmt1H7e^4qJT?)`#zH->C1;E)v!qOno>%2z)rxs;1Ez!pF>Em;X{6 zbB!Zv${`@x`-JM&8SqllhT(SSda%AwMwR1h=uX2e{Ge5Jbgr>8Dt0`C^mD&a;`e;c zaNYw}H`@W$obBV)*3W}%9dl??y%5)@ccX3dQ6`pa1pl@gaJ8Q1BH%vd7t4QtNTznFbRztN3~yv53#wikc3n^!>6x3@OXg&PO4Ia^2g^u z_Vj3P{h>;q-I3?!?^MIt#mTsBX+4ET~@Pf4B+DCbzl=U>a`x732#R4KOvXC zAXmAVQENc8>7+@Jf&0T;To7LXO~oUioT7r})|Y6c$a`M(jGfS6 zIFHnHCUavAg_x;8IGXFOW2yIc!H+!;;9qDLxE$FAy|;2vv3WarwV{W1^MNFkS51X^ z>-0F)Eqih1`Tz{Qsg3GJUA(i6%ZcOlII4Nf1)hAG57|c}=qCR#B6e>pOpO(T!w*Wh zF?*IEeJF`=Y7Vr0*+ge;EhA4)1yI55gDAGr2sC`XXzr*dFz0g|!k3l{V?22UO`6OXVU}Ycd$ze8=!jR0+ZYLjan^lC%hpMR-k7NJ?=4_Y3XG=^x-#l ze|ZAW0v3{G0}JW+QD4qCO#`;aouV_pH_(ILgJkiAN32jv0p9#uz_|&Xz!SdTvF}YV z3){a%AN9u)%^HC%6-fk-Nt>49oq)FgJe;YiV-He7!AJD#x5tVm=Y;Yu& zy`8#`3BU2>ot<==%!gK9gwG@1Y4bN^hWrtTov;zwAp)MceaCegHn6_n0i17|$J+t3 zA<#DyY7Jb8szWIx^3KraTR=*~<@uQNhh&Kb@_Ra~Q8?%gs>|tsxiRG(jlBRj3VKm$ z<{sYluwOVPp@NghpG9McJ0c&7EKeO7q!PTscso)*l`HlJP=mMiomlm#r%7ow@G?a1y8Tk6&19; za*7VVL_Q~gn$`a1bCo)z=j1F7zh& zQIV2Zx@EhE`yP84xuc^g}K8Q=79+=jg%J--%aK9weU4#cDnva%PU6J>qf5#|L0dsGZ^b6w|4ENxcKhL0gzaxM8+y}`0LsZ#4 zjepiB9Xg_BLduL5PQYD>mN)Mvf4+&(ytxCT!ru)S2q-Y^!yThN&H}CdGT_^84}Ps5 zfp55<{n&Yz9*H$(1A1F|5=sT+`ndJH4+9yHxv-pGlD|#`6$Ejuj}U8bkA?**2IzCk z4W5iD{H7C0V7a-M#?RK|rFvc>GHZ{+c>7J%Xvr}uwU&^I{T_1=YtmO*`r3R zwn@Si-$Sf?xfEGE;E!j0KEde~dsu5lH>NdDMSJTS)>bmW85(3mUE*?ne&af_;Q2wa zw!s2OuOkWl_YzO<`T}?Nyd$p)Qjo7BfYbBtvAqlLb4E)9A!*hOSgkQk7A|Wel8TF1 zDL0uoACSUR$AY2B)qwb3>coq}KB)Stj+?P5N$eXGU)wRIc+NNPJ< zCQ*xVnGAx)27G+%V2E40H+k9haxfyYvhcQi1ipFGP(C4KS=fwQJ>m~o~bUV z^5i}_wqFyox(!h4`zdyy;S@KnJ_RS=tz^1(mV{(@@p(C#WWSIOIi>d-*TO3lTKA9D zzj%cSt*&VGG69sUBskN>DY!(ejwJUs5v#!?d`XqbRP((TnL6Gd_x{)icW2H4n}T3W z=zN7{zCYoLxBzFKa~Q{u^JkSQdkK-&B9*1DNv2H;OWqfOu79FH>yZEi{8GoObGO34 zWj+*m#&P0(i{P>3ao8Wdk5H-or1r8c+41B(O#5&OmqaJ9I^k20o1Kp51MF~o)f%XD zRp-V9heOw2Nm$kJi&zbbkgD19$sx;YEJ;clJqkWC6jy-LDX;Jb+Ck-qaicRYgBxT0 z3$_TvLFW0*#JuG^(aH0&>eNVLRr!v%_S_&*(%*s786B8Id`C5@0GyO~&PfV=2A8%G zs2d+ljECnD$LCvEcf?(ocs>QbZEA7qVSXvzI2gNZN;5nKOqJ2!2oejCj zs?95fjtBglGsS(W7a0Sg#?{$iD2<^2#go1hXO!R3m(HegeW_=q2p<^WI zovBsOe)%sr6=$RD8yUP`<5%+`c=Qb}oIp=ceh&jfa{Ra;B$_(wVdj<;_IV(VW(~PR zbFvb+T~$Rr;VoE}yTS5fwbE!0dr7l&U!bmdE0bN+L$n^-fT(U1gax0Xefw)s{Uxc1 zw*7`nX70me-&C;s>j~?pHI3#CGEk){3Ji{3B#O&)Ah^P(W{-*!&7SX%)60~oft3pf;qy_NHgXoe`)I@J zK6RV`!K@@UjK&Mdl0OMI$^Kjo-p?z)@ccDZ;BGYWgtbM{+T#;FmiZle%z)n+eVd8R z5F*D^_s$zC8-kdSu`stikO+^{!0Os+a2RUg|4a+UkZu#2cuxoZ=sS}{Gf$*)<^wcx-VPe^ z?q5x4>;cxM+Co(A6|i;TVu+5}0^CPIJa^fUoA59TJqjN~`0=NtFEs}yt)0e_mBdk8 zy9;Uqb%}mrJvM$cffH}aL8}z7xI7VMď(G#sM0C=Ow#uD9=~?_K%pY z^}r`He}S{=22#9#DMr3;o^YZCoS*Zr76#mUd$j6E|tvHdMT{ishc$PUY6VCceLFX-QZIu~F_}?;{e3)fY#6WO@>0 zCye%im2_Sewr5hb`0+`cio+PL@kS@wUV^ti{&w7~<|DRh6G1JV&M+&j9;>jR8 zd-FcV93JAd+8?2yWE5R>Gp44I-Y0+W81SRyCbOJgdp1^Fo*3Nk!%pJIeu>tBUF`wP zR0-y$9s=B!ewKG>_X*Zh_ko?{4wLs|MPcUWA@HpDLUdI0utjnN)~?zEUjAvgrRO@Q zG@2cXk}2U$qrqfVZ8N!R%BKsSCxY(uRG2l~Mbz$&e#6gs;2;^pzdoiK{X<{Vj*ii7 zrQ$rK$S;9AS)XCAi5%PIp9E9yQxbA0o=AM!fW?BN``jiQmg)Q*GiAN#Mq^D>4mkvB zuf>_>$a|{aA3^hH`j8599?bQq=5+@?!t^(7Ff{)Zu>LIEKYF9b7)O+A{KZC&d(qSW zp=59CI1p``3YQ{p()_lYytK9#m{7YNj^Sq5KSLUgO&sXYq&uMS={Yql%BMdSIF@(1 zmVJnr4>xRd*rr#%d2W#tF-~R%WK{>CczYiPDX%1TX8G`SSO{9KE7O&EE^uj68>!qs z8jj5qWIxZ^@oWv^Ft+7BoIPF&PyMgqzUAAk#P=+P;LFe9vuQ8!5LYL|LvrNfB1nD&_^#uC1i?rhjRfuMs)_!=DtWmomj4 z1w1{!K1^O)2$vNn!@m=VQ_WX0_ucEjuzo8sLVMb0A3S;&c?*ix2CztW666}@@np3t z@Cg4ad-}Wto)>$f=;>`V_2>ZacjHgE5H&*AWFLo9=Z)E>rkAW`U<{NEck)D1e_&MH z1&A-wgU?D1XgBbS|8qhcJC=V8x|eUE?*IItA^#sWIQE07KN_H2Mx7omhO3&}*w!}}AUdm=CwelI-R}{B>3wIco^GPJkN24M3Ejs@ z2V8J$cQVyk*-EcW7=hat@3SfM*P>8S9`M?)kdvna*sa(ms~EKo^hrC*GFFe~9-I>4 z*5?T;Je2iw%x?Zvg^XVrc>&RmCSU)usQ zkC!v$BTA^?T!vO@iLg*R<^Mg^HboE$T?KWWF`%j2Medkh=Vwi~0lS~2H0J4Ts5>Zv zf@4oWo5NCYe8T=?A{vtBxoBR3EA1H&us|73*1iQpIUbd+te``7he>I_ANY>W&B2EP zHPfAD{l~=LnX`B>T|M{=gjWhe+PO~D*3g9QA2O5hWxkg%l|zWE6#zmQqS6l`4fO}^kT-+@PA1951eey>-a5qS-@qZIZuWWUOu9E|D;56fPalhm(@Dn^pwvLS z@!04msNb&gKju(FI^Xlb6O>OIf}bZ0VO@KtOpF+roCR4h$!U|H1 z{Qt-7-~JNT`&6U5p$g7zVNfvMj?;UUL5%o1$p-l9}{GXfK>>C~EvVUmN3-JK=odKinP`j{XNd z$gQpm91*)t*96JXy?W(vA@d>{2NpqHkvhCA+S_>8DGoQW*Kq8wCB}yd;B3oZtoZu^ zZe^1lZoZohJ`MgV!KN8#MWV%%5#9s{<9lIM7an|JbW zOXVjFDr*5Putk_Y26qFSJ03?Wp05~S~M9o%iS#d&q#uxQa~Dx&j)+Z~{a=0`fAt@Ahhkyr%xWV_j+ zBtce^yN+1DyGcIwra;%at>_yQf+uJC!*+FJE>qwGaq^ewRuLud716`$H(BAUJy7hw1gCK~S%BJX5>on! zWIgbM0p%iGGJ6C|tqO3`pd;sIcO5p{SCW+V^LeYT-iKnl1vsg92xd%5C!2WHWNSh( zeEG^@s9Pbjoth|eTAn)L!Q;X~uXW)-J zlXLamgLaQ&+2x;=U^-zYeQmrI9!M*o$l*U^>%NQBM|3Bgx}bz{<2o_Jwh>8zC?{fE zkH#7ju;URvi>z;;IO3k>mHyDHuy3?miEa1(uPPDh506Vm6 zspobH8uquBS^W;+4b5|cl*i$e-)4ns8Pb?iX$Shuh;F$rj)EpDP_EJ!_%r6vJ5~Fs z@VafVy8It8uZ&@`5icAxI0-b|cm?yldQnv4A+>3F0?#aCQE~bMDj1SXK6i+agWXR+ zkCP=!vqj0C$G1?@|1rwhSK!4(JCF-I!nr?*#_jvB@??USvw?pH>F>@vAT4Iip1a$T zh-J5lqqzu9TR4g)K|k?qP&aPKZs6SO`Iun-p3Y0>1F7hzuZB{=qId}M-2F+MfB-qM z&=lv#XW#@cIjoHMhfYROocZmU==uHz3mVQQ-um-7u`_QWdVv72Y<&{@XNaT)-@=7f zJJ6=32u}?Npu=zsC)0cbO{&D9MRPp)#JkJME9bz<@LBM5Mi^F zKR3H195v#VA$dl$$xUQm4n8beE8M<0h+CAf z5WcMc16{pqS%1W-q8VUss zLa6*T$hrKCzr}7gJ#|$QWp0#&F%eYZfhl{^Dh{oaLAWcXR z$`qBUoU#BXrIm<=9<{`EnjPhhTgVRYzKxE`{#ZD057pEhxM_PWVaKcj_I`#AT>kxq zZaUFTD?Q#r&fk4xUeW+f?ka~)*Rb{H>Y23o8W5ZrNZTTO>GOTB zP?-OXxO2B@rm+oj#}=Z#$YwkiJPE^VuW}o%Mxp&c0qF~CLRrlu{;kJ@^m5Q`==C~9 zR>)bjE_4&1y@DHvSmL0v0vpelbYx!v)IFIfK^{)SYM(83{F`qUCN2c9D* z_7R%~w&2V;TRHEtA^4&5fhv0zqIg*zUEMCqj~4Ssfy2gR8y812O}?Od@fr+Ea>JI^ zOjQ5#flF2KKv(-DP9|f=*g29x<2~)@rE8rqyyPO;8IVCsQmj$qb0@}(lwrc@qj)I$ z6Svpr2R#4xjf!!1QT0j;ZGKowlS4h=@^weDJ1c<}SuR3(8-I+Cal!+~)A3km1eaL; z2Ib%TvB;XuFr+U>vu1swRn4E_XX*|T^D}`4v^GJ@TOOwUXOEdxUYM<6!%YdQVe1wx zh2fJQSx@X)s@fh)g~z=Dd5xnaCjK}*B(M>FK3<61hAv}X$Q(TVcq8W%5eXNsbilb} zTi{70u%4x7Xza}w?D(zyB=Xbq0>78Z*(l=g{O`8R1>-ZP2^FKXw3!aF{w>RLK@LQZuw+E!H9|yCfcNPvy6!!Phitv@EEmPu1UbPiA_C9v^}sVlNz(7pP7Op) zf?J{(Sz7jlR_xowlbv0ExCjf9Zlg)pfP0rzG~VQ_Yd+iW6*0v zADy>yI6W|#+EaCmFy9NmmLNPmB}-?!{N^;?szb#$AL1$ENY5_oN39Y>rAG`dv`gcP zpcIzwEs6V0?Vva8ELqwAfV#^o(bJZXQ2ezT2@rTfGfyu=$1HJ_J)aFHhwU&>Q3IN? zO|WE!4R{Oi>83IZ+HC)n9?o?_i;A^mRediN7a2h%-8FDkGmza(P{78Rnb5({2+ z(DQ+B+2^bz8d7$N9KQDpp2Tk=tM3W(n{*bS)bD3(vxpz))bg;Z-5VF|FvOG!8QORK z2W;vt;1#ER?f<@qI$cpbpJRiLSDG;v*V3EsYr$`s z62#wKLXTDygM=BMtTPd1cT?Trj>0v%C&nFxupbXbC*sz(pK%puMvp9Vg#Bs*5O!{m z={{Rd9l!aKu&Fhm{;d!E{}@vzmC5kF)Ca>}@5Up7T{v6sAKhzu6zW$zhvQRbz{#b< zv|{}dvixrx>WNRKdD)%d{G|*hTD^y#S8n3@s#7pMMguffuA)=Eq{0%{l_)qZpAJw2KA%`$4YaVgp3B+qZlJVlB*dlpw+&fDiUM0Bd7 z@P+6TTIYWgPVb07{SQgR=;A)8-C{;1-zBjA?kiL@(uBKjmkV^gg z3q4UoP-TCayyz)Jx#ow=YjPJ#b;fYA>xAg*<#lZI<Oy_wSRR}r&oZ5Q0r|8EYF;OMPd2)C{e=8eEK8OY_+fZ6dgpgD* z)Nzagh53$PQ_)7H1vbMQfj4NddW5CT{zpWwzJQjs9aL$=04HZ=qDkKl{^uwGNLLyJ z$*dgcI+jg0F0my~?Xyu*rU2ws0?91@`;>TUz?U!M(8RAB^Co3L=6?^t=;>|T)+GRn zf6UpXjNP1U+-#_MrvXob?vv$K)ihwW3p%&lgcE0k@RG+kfcFb&qW=p#_0JL>o~>bC zHg25FjXan%Dh@{kCCRFWD}=cS!~1!rU}iOn4ZilUNFkhdI+$SQszRKq;{bXRz1(uG zUo6!l1nixhiC1b2{4mL)i#60yrb-FjBv$h^euaVgmJd+>@;B~FDuD%UzC=>$IxFs64%a{EpRw+G;V3j(f_KpC}+FqK^8etx&|XMSYDN$mx~gCN(<2{8JZ*k*Wa5 znvK#kmc3AKp^RmFj_^P3zR506evh+*ouKKNAkO{%2pXp-(wmDDVfh4gV)b_d>Csc9 zhrfP-x|!>-aZs7v-VjfB8ZN<={x_gqtpRsDl>qHY33N?4pAAm%BGc2aks3X3dU2#1 zE-pBW?Ng;$?0*lb`oYI&u*wzs&xB&`j3-o0u$9KrbR0fD?~mfkcXH$I zzQhEvsgV9=4@mNZI1PhV)-80J*V(5+HvRrYm3-!*rAa$9AHReBIZZI)6G(@=Byh#> zAt+njK-VOV(h`!%Mnj5VS^gywneR+ui6$yO|AYow+W6>A0wg&~a9V%QV}##NSd-hs zDL+{b%fD}DQk!di_T zjnji~L&9JJS*065BTF`;=vb{?`%SSZe;;E@4slj%#W8Vi9!(O@0_pxFIIOaQDIWgH zJf7Vkfe)|Il^5+OW(!1QkW1sO^k8cDvGv z_u}<$H>5sNmWUR8Axr=B zpz9$Cf^4>q3`P?>4efx+L8Bv2O#rbG`bTfIjZ5w~!-Y&BE!A0uf zJ`b)umO>XTd#u^)0D|KrIK8*Q7#8}D6S?plce+QVh@E&j~4i1SRc_$UVHlzU$s$z3TO3&U|6&`{4lOH1}gjUN7!^ z-wR*L$~l>1lX3eVOU}e}Dje>xK`jslPpcfhL(V1QI{r2ddut1MQHB_Eu>xl;eTx#^ zE9v_s>oFuPjQ)L+3e{geqLk?&5c^ihp6s$9q+FP0Q4J_@{(vdAIjFJr9SV$R^s$jE zuGfD}Teapu#T^|OH9E_VEmR?!i>?qyJxv;wlMXpYI&h!d3lu5Y51Zvj$R3$rX!%Q( zDt+7zGEwY0NzQSyKqdfYJt4F#0nV`Bl1}1Xp@K&o0UagFz z-`m2GJl#*17i@>aE0u}Gj3MSXdkJV31)&amf{M(T@mJ}>hVf_7Y3d)?5avif{H4$_ zZ8m%PFAUDU{!XUESCQaVa&Ub7QrNeDC8{g)Aqs)5ZCXjKD>T{Ht_WC344~~yGZmjY zi%15}g`{|CSQ7e_)>N5;Xjc@x&He~!!PXeo#8K6(ROZ>zi$ZtwQO8S&d?=zDXP zS?*m$dju!IiN)ej_MsV^dS2o}YaSH;Xy*Ox@CF^le%xHUkaXO4=RLF843+{#P*yUB z)VQwz`&du7secaSPo|;wv$CIS8V2Fy;rg`NAAP7)Wy8v+M|5D`nB=BhdFqqtAfDsLR1uPp$)?& z@VzDo+RI;#c|Mf7oti;~BW{xjw`si3t}l28=9W;~^}P@|RTkR5r@@!TN*X`31n@~H zx=7zbmHJ(DK3|kY@BGLwT9L@>pA_MEUVAs)?;gfJchtjZ=Wkq=I-gd2nFdP=9^j%o zneaifiweo>KuWR&OPGF(_xkijUQ!pKaav0t)adHiy?Em4zCaT8b(H_)T@!JQ! zJ0|`x3*v8ajv^uRcpvXNko79ry7kP+0(6|TcG)G1RPwok<6Ik!7MY200U0a z&pq#%WuXGjcH4=iax>wp#|rA?vj-D|q48$)HAvQ4MGkwJ6K;C|k2=Co)2|_|%qkwAQU8|?6PSNB>*DNp^QKqTgLqwtN4_-d;3FNHAP`+;yU{4n`AN`GK!_F|y?Kssi zE~aw(&O!DcC)n~B==0#&L}O(--Y#=w7nEXfY9t?S?~jCtjlJl2!3-w8b>uJk_J*tz zlw$WA!l7bj0IfCLLQKaz;cJoocGKcVF>sDL3eiXqNPdaV&vmGWdLr!-nMMUGY8lQ~ zV^ckas7A0Gv3GcejsF^XwLEKdpW%pV*76`Gvl2CL`O`Un7LpgT!}0tOFA+%!jT@ImkY<9@epo@a*V0xV15y6&gqqH=9rRj^9QT zyw{<%_A692NTV)wUr>6$iO%d)W_ssDpz`7o)G5t^)b9pl%AI>;j&v4&^(>(2q7!jk zvNtYokAk-ukdu^mwxjGv@ic@Z1Abq;0!K7xst+lXwKADSlX@n73q20bS=II|`jY*! zt1W`;g6H(X?j4O`5v4fEZ@KSqvzxZ zFe_d|eP|;MP*cK5GZMjnxdyRlxk!^grK0wY6>ut21kQey#5sX>aDCnxOse#B{77EV z#@wT{b;ewHrV3E#`p@R!C;93wETCIgemihF( zMh}rGYDMv$DP&4m74OcCvruDn0WP$?VqZ_chGN`|<2$s_Y57rDIb{LxpN`UB29)K6 zO@~`A2vL1>mCXCv0JMJ)bz&>P{K_kkyK@05nlw@Li2MG((KcZcUTv`GZ5G^UxyVYM>9LQ>8YofPMpG{bl6N}gpeS#}yS+P^J^$5B zGOm9^tY;A=iylkq$F}zcKdg%V4 z2_-t0fuGxcCf4JOCd>NchjQaa87cmHcl!uBgPAEQvU9@kZ)s$dsh*t*2_ZYd?_~i z_yEcpc#=Zna(FP(Oq=iPa?%kB@Ly#naTeP`>)Q34#nP^0i0kJH8WllvJbk*8kA?jVq_Rbpl+e%b`xrs_;1IJ8ftK zayWuu$h36gb;*rpoGwIzGFLqLvlAXGm7-CgJ2zF?1k&^t5nZDv@OpMW4cU8_RXz?! z-o$%kaZUj34IV|ZJOfY6$;1gJtKh%Jopea$AY0h?95jza!_WyYy7=Y{7Doy4uDTJ= z;tBNT)M8Y(slXGntkFkx8q_wYa#MG$0=1hDp|?<&{hi!O8n$`!WwXAcy>=a0lB-Cs z-i<-!olo&(;!E5Wcp7G3Sj(w&4YJ2W^WpuibB$fwhd|Uem&!ILA>Hmy7VFp0=~@ve zKgR%9tL5Wft4b6b(&qxjBUzJ>E;LqG0}9kqnQK4jk>ACb3PEI{?Q2^5{uxeu{uTFq z3dBfbS2&xninA(w%C3yf`pr&b^Z1HH(sg7%i7}alKFO}cHS;*F`ci_jccn4a@FYfS zhr?6Xdd_v`Le}t+!lS<>u+QlqX;{OkbLeCY*gi<+X$RA*C)-i!+E+}!xB~+O3*b8L z;qZl^3qG`p(#5ttmPq@n;u4kRYk@!fH|0^at1?hAE|f}!a!Nj}5Rh{b zUQYN;c#`9(lGrV_Y}q+X43Q?Ye&o;;ti;*>{BY;?r>J7N0*;vE()34(kWDi{#B2>4 z%-Kj+w3|SNkt43N-9lzJ571M+M{z3u@ZW45v2mCAx z^pYL(+Cs0;X=Rc)KXwRpqXCtMIQUq;xbenpPtd-@>h|AI#L=0PSZYc;{E9c##}D;9K(*)>d5 za)#MGA7CKd6jP4cL89zk2)y-=wtyY|V`K#eylwF0`*s-WKSJ!L=TqMuhtPXm0?ZDZ z3UwOtm|4q%F*yY8mFD#BaViW9KnhcextBJLI6%`6D!^wrO*`DAT@T%Dp z)AglM;p-3nLtVn@&!Cjsw2T>PP6NNIF;E~{P8>WGDNk1q>(GzK)JSC`Bg(^7pnq4DH3lY=Xo!v$yRZ^&_OAPH3ola-iOsCrh z^l9ogYu<^n3bguK0Gls1;AF#of1!&M3ctnEw}41_dhyis0oRJ30&Ck(@bvLNI6K#r1?U^0 zh?p7BKdT{ANS@>ci&5u8zI^^KVY;u|m8V%2hv6kw0APdi0vxR2&O*ek2{7au0tbdV zSkt{>YF=`NT(2GguM2aD4gTY)?fr;bp0q%KSuH9lSfk*@ObEzqfF&whS#8ZG-u$>C zMm_6cZsaytBQc3B&Tir<&u_tu*B9Zs?>F|J*nW7C=7u2)+M#saG#aI_2*tHcsnC%E z2=o>M2crOLr{cgnx_Hb#6I%+td&k_?v^gjCq*fhSclyWsff(^^~@ zCj<%0@-TF;9zIuD!_*l8F#gzdn6xa3mh?JPzDo!>FS8eZ`n~1JN9Q^o+--p?q8CAK zw+p7d+zj`_>R>JLph~aC@$zQN^F{}*HHuv;0fFh2Xd`uys;`*kxP5vY&KkYMzwGh^ z-8VeM2}=G@dfuI#6^kZam#um6S_nRWN7xyqJ8<*nASZbLq@$2w7S1y~1EIZ+NU#4y zMK_bZ9+(DFY9e_MZA#XK*ox_T(^<5bX4=iNj|w`&u=XMu8k4jB}r!bS(LW0M$sRwV8?b*v6Nw|uvV0e zUMDbB(h}r_c)acFXH)Iy@r|D<<#6+8Ap5X18TA6s!8Om<Nx#Kx%zFN}Yq-TX-|=XCKZ+NhK+$VPV1BHG%zqifx@UEPg61}u*)0!eZEI1- z^a3eV5&Rz$7bD-;BD@VnYr|o`v<$Ve7NK_z2UFo$i{Y5#auleKgdW4|@W|PN)~}oT zKPD+Oop;$X2iC03<{itvK#%?op}8v8s9n1%Y2Wk#L^IEVTWbx3OjHElY4`reM5iof z84rr!=eKV5V&FHO+y98LjX-s$eqgrkzgWkuU*s)sA#6+bW@Rh>Z+|rLm;qm(R}L_z z365G{C%Kw;=p+q=tN%sRlTGFkjpbTX$l3885LB}sD(A2KU!BBNv&oBP8nE@UAIv@R zj&C=pPK9Pzu)0|dkR5ksHm~dekxl#a{vn0FZln={{x~c=wbi> literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/train/tr6.mfc b/samples/HTKDemo/data/train/tr6.mfc new file mode 100755 index 0000000000000000000000000000000000000000..99d5cd4b491816f1296cbb6c88a3f82b6579517f GIT binary patch literal 11036 zcmXAvX&{!}*Tp5t5RoLM5Q#E2DARS$ZK^~lQz4~NY0{uUB{NYn6EY++q^J~f-)HYs z8dRbrse~p%Nh8(keg2=WPrpysIeVS8))o>HdLlF`B1dSxkTs_N&Vz;aVNh=*DfqQI znp4g^M}@rBaal#XS$$z4owni+=^1RNmX5!vq}Lq5luv$`F#asKS%<*ocfxGFcbuT_ z)^Fl}*#`=~yMf46|Cpmo$_1~amq4!Fb&x&(6EYo^(R0^+ zQg&XNez>@gyY*=-H2>9vM>oDuFTcG181H|lKuBvRP8QsUmV=W}vGD=_8^4|={Ep`> zI-1BmU21?t%NNyG{DPA~LjviBG<3=e2fKsTC>z-TH97Vum7WP~#v7X1(aF;?v|^DP zr$HhMi~ttwvCUgEa$)3olA`puJfc zoX}m)FWxGI)>h#Veo7g~51oPdP=9FLx*e=ZF?~~&%9Bh|Co^(S176(+p`L{9b6&yE zUEzmz55ytYu>kewPC%hgyKrI21|S!=()_+@JcG6~G*B)URL;AD<#lbcj=z=vQdkDp zRxE;2S36vt(S}olGg0-U8C(*`!;G9Iv|6N=C`#M_nO#FHJ5_`?Sv8*j@tQvR%G$9a zzjbU=og7>e(#FZ1*HCd)F&)(yO%rtQvaXCj@abI_d$UZJH>PzlKPM*+=UEIxHopum z_?F{1t`Z}DRzSZ*6DguC(~d{Q{7u*+Q;~`aQ45v2D^PZLKUJBZ!6wdmLvO!GrH{N#z&^wP7IhEPNB&V{ zTJ3Rs?ro3b3etFzUT$z%_7+-?@}%_TJ3)lhLSjAJj%KO(LGd9CSYejTla*dUrh8f7 z#fd&BIm?JA3=L2@TM6e3r;(TX&Jc1o0%lmou$8VYP_pp_d1rr(rd7Ws<9k2j@yEJ2 z-<(GauQq}IOJCe^@CM54u12x57hvk0!_>W{5a$biT7dA0P&SrwkH?pBTGn2clZwV2zbjX;fwOsLi4c4Lj4{a7I^E9JvWj*Va)x{bw@{U+M=t*mKAIEKD)<7s=nhYz*| zcx{;sgt}T{RL2!ED4Y$&1w9a37{FGg6;gBjL+1a9CQ|8Uc*4Gw=X0(Zo*NnAWyAYs zk(zQC*BiwwQ}4m?lJ!to?g?qX%Bi$g0WrzF4596hal$%Pp3XB(hSlL%eQYmy7#v5p zC3%qbS(P0taz&ZKU99faDw;Td0@0LdgU_uzIH!M(t`B$!AsQK&Q(I1FC4_=yh&wxf zeHEu=SOJw+t=Wa`uB0?XmFt>p3cZir>GY>Eya{1BbWlkTr?`f(z~1!`6LbW+Z$^>1 zAx3a>d^Kw4{h;1)OSs+Q>d<#vpSH+Or%w0x(S~UgU`|aoOq-nzqY@88$J`|F`?ds3 zgFZv~P##U#8elfmT8MHhQ)%TGLf)7q&`(2A;Ofx@F&pQweLLf*tM+bk$k~d>KYj#} zz5hsApr2XjBu(7*=%Aaw6+uF^3LLu<&Xe9#0sfNGBuZ@uUC%!YHdQjDbw&q^ z8ZO|feNr&xYA{A*J%*{v3PMGNd5hHlu*#Ihkf`~A?dw-$y?O`P-Qcryyw+r{XR{4HcR7o5 z)|b-h z2`f=Dct8CvkxkqG?T4+AwXpA159{0OB&hzjn@oO^2R+LYP@<%ns>KG-QI4t5vVo5W zC#tZ2D;}`agK?}-{}Aw(bg*%?3ZM)=ME=Thu5wl$&YPHT*1s)*I<%+4r-wy&DE~Wd zed54Adb!b{sx*{!Ue2wnyF}yLf0GGHXQdn5w&(kkqZSQ3fzlqS8ltlW%4XK%3cWcPbk+!t>VKf| zH$@>m$Qmp*q|=gbv1C@$IC}KNeRS}uge$#|sm=2Nh--7j6MlD|_gw;Gsy{NT?KkOP9Vuv{olbQ`NJoT^xkg)ooV9?PI)Jk6y-znX+ z;09tvOBEdJxXXHShVZomWs;k8(ehI!JzqSU7a+`Itzj40IJxVv+AHL~&Y*HaV20K~G&-i75xl@R;c^td&@dMa`$^E6L?>&aa== zk6*)>We|ye;E9Xd(s9A|NOE{9r7oAAU~+K?hW9FfOLqju1^uDh*T+C)fgimoQ3$$E zR#5|`F}U`K3(oxhn;bkcntCMVVZ59MZk2ri{B4SO&^DO1Sh_-6docaD2;_ z*OA_nLCxdkB(TDVZt}~=(55DIn)?(r2bbWE)6044rDkXtw2J;d;{aw|3MAd)6mAfU zLZL4@B%maPyuYG`E7m39Z0;0pd}EF=`3rdK=YBz{Ulo*>>I&!77tl2yg3+l^A4OKI zA$|fIw(4~=PFfd=s=4=2AMMav@RFx>e51h9X*reEh{18Ij!=KKdfbqG78DMjAZ}Jd zAbRi>jz6;)wL&_fh3kR0k$-4#c@nYlFXNfq-3-^W>&YK8cMLNr<7-W=C%V_?LAKpz zxHq&0mE0|$fAIoXzV8d;9a%+PzAWUev6Le<&m7>!&U3h<{1(^sTR@am3~^6qDvOa8 z!?9!lRk!RVRdYSL@SnOgy6y^n^D2eo%Nj`4{%g4ObTSQhZy@3w+wh8M0Xz({!LcGgP}aSO z3VTe12sL9AR!wETmHv`**F-wavznF4d$Pb4F3h6Cjg?Hw zH9 zA@urWjq{}+fb_RK2+FHKMIl3!*%?ih3wF`mzh?!8MG@fJa*Mn%pG@zKJ!IAq^ch!7 zdW7>PYm$rG_Q3WPDkw4_2B|am&~T9fQnbSo1Z_uH_sa<+Ys+bxuO`XOzLy5?FK6(@ zs#8GF;3dB~hB{*|V0pX< z6`pkvdH2*IDqREJ{3o!GMQyB4ay_gbv?a>ErX${G6b;#Wg}0j1LK(#?=u!|&X2`@r zWv(+i_FqEl>VCHVgfQg)vL{bA#*)!N=@{#Ji)ZF}g*W^BDwKD=j}nz?g3^9vc%l3a z?YEwWO561`xcvk?@ExXx8Q(cfHN^7?rZn9*oDQD6gyS|7B4oOePRQ8HI%j*pUlL6` zi~>oUVZ_ZZWp$oW8op77hPf2t8uidDF?2u{)2kq2=#^Ypr|E|W`Dg4--|6+ zw_hE%QRO&dc^Mkrw}h{qfzS{YLC+s`VhL(LK@ibMHdH*uc_)-Xx%U%P-8fBtDUarg zbQ-YOr4&9bRe?ymv*`FSA2QsES+~^%6dUgh3zvNW=bOoJ%1Vo+{nDWGK0oDt&OeX2 zpZ7p0KMc-XQo`sgd#G6X2}~Az$Ayhk$tHP!c04oymTeMd&5}S`8x@HB97(*ScZ#f= zI|%o+L$J891$I4jghej%P)}*L86J2@6Nat=@AXuotQbx!L=%aEy9ZucS_rB#Iq+`b zM~u`v#;7xS&Vp0y>z&AG|1Kp1x^^!{y+I zC>rkpoa#@qr^J`+o*#u3r$hvuunf)S9zdL=e2Eyyci@$ zqI9@>t8KADM?=sync=F-6fdYVMZg%<*qV*Tn{S=3Q zoqgc@>?nK~^BH}fCBtoY4s?Wb!SZt;`7+Q1H@Ke=N$trbX?>*fJtXq-H^|(6n66Kd z;Gk6u!XJ$?drk+K_`G7`;~zw`H#Rcw_&V;lY_Msr%vwyUlwtuf)1b>@nB7ZBVzDRR zvOh(w!0qp2OMT*q+TzV*R>=>@kRdFmZ~TArAl~K>Slu)Q{-@W(=c*)^zhex&EPT=| ztZoj>-tm|v=x2gskvUsYCn7lQC;1<9BHo5o)QiC5$t$_&VG%P<*OM;F+DPg9+w5E1 zPQl~2K`K6Wm`jSS<}P^|{>Pk3`~a4lhv52STk@;8NO0n>0Zg)KXWf%1@ZPkq*hsQ#Qt9ZRR}HUzYGt zdn@|eMnl^E$?)*xMo85&r~VmhxqHiVzk83#Yo0k0WQm5N~+cu%R`tZF#5zcr# zg|9w|yyZF5xzht4=$JQ_9xKmel}=Ic>_{$awsM1fkrFx~S&K@TUt}RZ4RB{^G{`(q zrz^KDN%$X;)RUiX5UY4;-}@X;*ljSoMlfXf+&P_Z00vlKg)ISKG7xW z0`8GnJGOg&;3}6)gnMs#VITX;(sRB;^gex<^d}GcFGjJ669d_p;Z2|{p+WO4lDR)> z&G_sXkkn5cbbt{2IA92u{3k=l&w8_v#`91eF^&yM%K#kO4z(Y#=AK#tktUt^dT=!} zJ(~ybx-X#o((SNq%sj`Q$yU@GUbqY#d5*oI3KtjYbo zV^DdqJ-20SIEfB6f5Xh|PV^wtbw;^Kfkv-g6$Tnqfh-5AQH5GX$g=j`{v@xiAg zr*Sr&zxfK8b~Kmjk7OK?>kEipfd$sZU4>N7G*FDF$KcfItS)XZQGdY%EL0N~WT;S? zb*rJh{RT`}XUv|yjUaND6Y!*5EtE*@f?0z`IMewAoS3Odk3ZYU($B=gsGIS$QqP|G z+)9FLrhlP8tdMKk8I5TM6Hxx|cetu6hb9-d!^yx^g0eZ^iHQGZ(scGUZ+z+$h?@Kx z%)f|nJx6D9XSYv53+n=SdnO*oVkLZ4j)%)HF0)7PV(6suCK__-0aMw01xy!YQ=L=a zsgS*`*%vb*v|scLbvCKssN(6ka#blx-%Nr5HKfZh1x5Vl!HFmRP_-T>q*CtZ*)S~Pe@t(8x616LH;!YqFJ`Ey)vCN|9EBgWbw$o z4NarvaFP7>cr8eK&_kB1=}-mJNR%iYhTfq*6#Ws(K1{EK0j`tEsx9P>+quB5067#p z9Y}4|Ucs&zRZ!HbNJH-AV(?=*6q4%1gR=3y#Y;f$jMC(i%HQWd<(l=VkwbmtbX^?D;%kIIH`3TKG9S`JvHZGo=p zcl29_0|`Y)Z3eiH4yl4^C`6dxQ~0*y+9pMpsu$1 zC?=`_Nx`8IQfkahUOk4zMr&yDPyta>@u5K}Rq*CwD!L4h!@vaubuVtGt+OAX>iAEj zT0IEL^iIRrjzDrUFH2CZ^_Un=-$PZl*h2Y+eYpL%2xh$Kf%MV7v^7>7m3M997H-#L zPi)TuDztNNxG*#R-7vD$Vl^eM2JrE~ZQNsKgSlT!;2c-Qn-={XojdEP`J`edD?bgM zhb||=7l9>~pCXRciS+R87?hKoi$%g$TIi-PkdN)(w zK6CiYn~pm^#$!q8eN>cv#EU;)g2%e6sq9;Ix=hIiZY!+kR^ORHI;9JUmsc${G%SIe z|K_4w?tH91I~pe!Y4b9dh+~$638kBFla|9R5HZ?|>7A*ei--879!u<*bzp0vRWl&t(qB}@~Et6?6g2oHyru1J(5shHEOj1C$;yn`9- z2n}fJdUb=K=63^cjKd{Jb_I4e?-y~bqNMz~6WkoG2L8F5ct%qd$0x+|W~q+HyLyua zFASPt_x=66`FWmjuJ<8(&^AnLs(YE<4?~czkA@I^X-uh;VApC7QSnO}BmK+~IJLkD z_&aiW<}=>Fhp`T@^O+(s>fZxZfBb2u!cC~flNh}?kPIEIgxWI$cp(2d{L5SniVMc@ zgr3Vlrhg{9i@rnDyt>ii`c&Q=w_}hRp^UL=fuu@361g2dP-XC!(=BmgiyGueVuA~d z5$_=@XI>;S-(O&Ma5rzt!-Ilv4@mJ`*Bk)P#cYpEi{NEsH!=57B)YT9NmA%| z>Sr~-a(QKC8MVvM4{u^5P$6n z5jkvvt(q~k?&J_G>bj2xl2vq%s4Vkob zS@*6lrCj~eN@z-YMoa%uvc)tS)LxVl$u}kVT&;x+iQa@W zcfX;d_E*{{xdIZB+i2dzOu9+%gBgYyle>PMaL`Kv%=DwknBgHzefEyl-P56d`%mJO zRZTSUoeli#Q-u%bY9P?Ag}8R!6ik0u3%P4TNQ&HAGA^hIr~5^7Qm zCWT`}p#{$P+ln(iJ&AC)7rCH#3JtDE(5((Elg>YrQB;MpI{C{)fBSJbBZ!4e@mchjQ7MXu8=+q8YaE}x467U# z2(HS#g1D}2bkes}_^fBcv?VIZq9vmtWpp51s5nV`n=+uDSA+B60P1I zZf^rP?tQ2_!CQ)0K9qnXj^2>j+ew4hm%-#eWw`E}4NC7wMS*W57ZoB4FV`$4or`K9 zv(JZX3ED=iH34*dPeb-qZMr2|pABm`q1_To6mkwjfqfhZe>8yJ%3?an{2WZoi(pw& z4~h9vL-zQ`UMMv@NXNCRu%ql7>RgJ3*8Sed*C3E>s{@xMLWq-^HaL{2vx*igLffXW z6*r{eW7iZK`RXV56pY7F3H{LZS{ZA!x49023im!grq1=QP2z!Li`sIXLlwWF-aUoC5xs}TyX6%P}m^YtvnIU3NsnXKP+ zpAB|}A$jW$Npd4yO-M1!b*P58B_*`BVm#z1?}bZcb!6e+uYxZgjqta7i1LO_z)Ucr zr#GKNw&Q)gtXT_z6)S+AKTh4hB(qmu6QNsoq<22z$E1b=QN(W?-8`-u+znUa>@|jP zp5DTm1q&ePwF*nKTt?@4X2Xp2OHpF_HZt$78jMzmh5CDukPrIop-v5P z6`8{I{Je+?de)HcAx@?ao=3ueNB7PRq)~(8(E88`S|IZi)sKs#!&Cv)?9d?9LwA^{ zhaTjdw}dWN6*Bgl7$#dbk(a;5(v>AvICXIxPx^Br>U5>!oKs7=S4x**QK$sUS4%?O zVng_I`XD!4eFJYMuLO@_F=9S*A#QmzhQ6I9%6t#h!u9+fmb|4M^xRayZ*4M5k-G&i zlP3^SV-D{$6+q}sHTG(zFrFGTWk2iI;{^Xgh~AFG?tnY{Tf30DTuuVr#GO>^qdk$F z6oxHx%3!;bEZA(Hgch1svKEM1xHW1&xDhn!7N~PJ&}ucBWb3oM9LuxTLR*lOP?te zHQHkIS|MtF^d;&lZURr^c$(I}mzCBCgY$$iPHt^3)jG6=$RsbpRt0B1b#MZ=fQh(U z{65Ven~Kxq>ID1W?WD4wzOoAex;RPBSs+nl!ya`nBXZ>>_|#F7?S<*kI6VW46>51R zxf@Yc5x6V1{S@8x$>eRh;Mly9>A07}mD%Tr+`U13*24#9Gi7+BE`jIO9#O&HD%8AD z3)bsWS<}eA*NWa}tk^n<9vksdwYtq@LWdZ({4fS$u7zUV2UV8;3E`Ts2d40D@s#gILE0usnryAW^hV}R zyjci{n0$qhqb4JsGGHVd^g#@&XRTj%z*L>>SoBbu_BiU}o>UK5miB=u4D*5Oi2$cB zx!QEiD>OSo$ktN2$<}9K22t4=JW;2v? zx#JqYF=3oi#eGnv)Do`QuJ7{LRb8;JV zFn*;U8(bg`8rRq0TJ1Z;FvN{pWwa7fPE^t(YX(6vvIY@=&FK6-#&qK+{kXvmt-jQk25Rq`iwEk>)_F# zC_veBTzNo@nqJf)&9hS=O>ZmHh`i5QEj;M{fGUuEvjz@Z`kDo#%HWB2f1yET}sHo*) zS{dgw()~Q+X`wfjoFzgZ_q?EsZx+Lpz8N(Ui-pinTmjZSmPP{yQ`ED1MZMh4(1vX# zWa-!(>K9lK$-F9o<|Y@K_B5MTZ>ZusMG4{N+yGF#VS+x{cTuGA87#DIq#=?Mc~WOi z(VCwhneF7M0`cwNQB0v?Pxl>~29j&AyOm6h90BXKWY2&7|Mn5v%;30^!IX3z8Zk4elp4O-i+;CA?R oNO>9vYjzD$tL-;Pn72F0Qz&LGyZ{j6PZFfQzeS$4@cy6qKlRi2VE_OC literal 0 HcmV?d00001 diff --git a/samples/HTKDemo/data/train/tr7.mfc b/samples/HTKDemo/data/train/tr7.mfc new file mode 100755 index 0000000000000000000000000000000000000000..c0c5f4c63a8fb29ab43b8954633b92a4eda4ad3e GIT binary patch literal 10100 zcmXAu`8U?z+r?4lIT1pJLP|=hkoP&aDGkO-N+FaYC8AI&3aQXQ8Ip)7krER3xh|E= zN|I(pgQ?-u9P+fj&mXYYI{SyS_u8*ZKtP~YKrl92V4i?2p6(2Ui`~6YU*G}}vc7Oi zQ3ae&1yXTU2RaMA$hRxXv>+&w7?(KF%Ha~eSUJV)6)&K+?;%9{moZ_@+1%^5Aw($m z7EefCii~CS@)x~OqL>~}7Eb&|4$f<=X%zm9S$!o?n*JWz#`sKSuNp|#Q-}y2BR67R zQ1PBJGE1wIp6Ok}Qt%CwTv=b!zBmX|R(@ycof0T%83t>bUb2B%^U3g(JP5xhLCRO? zb5Fb)=-xY{5IdL%7oI-ms}AnQY?-s*_+KcD6)%QI!$A-{JekzoXasqQJ49gaITAmx zwdUPVU3PJM1TiT${GTTOye$M@wuU`(DID8!7Am%v5Vm0#+}m#tDW<#Fr4lVV{f{(g z3!a6g2IBwIq^;Tu`<-1NCbAWVf)K7~#}#YQkk!V6c=P*ia2+p3|t$&(~9Rf_Dk*BD8=<-%0vda(Wn9sjQpu3#Ojo8dn9hD#4z z&)Q^lxFz=etogR{tz$pbNpo8X`zCycb;O&I`1b$Tgzk%At#=NQ#+y#;V9EvXzw1QB zbJW?5C3(23X&H#owY+iWc~t&bI~#p>lH32w6%V(z!gc**2;ICLJu*MRx!6%s?qSH{ zbRDSZi5j|N#FKg(yV1#Uovf^90yiwO6$`f-L1)NHC`lQ^^>=T;y!Q|JE1&LzF{PtS zS3(@}C+`Qxv!BSxHG9G1ye1L6-hufN+rZ#SA4DE1N5wVabYkgpu3$hLYP0P~TBs3} z7hi%|(#kM7upA{$G;&{C(lI670VQ=jak7>uro9`144D>`x!I0}4yp8*PA{84GwHdF z>$nW*%`C_}l}LR&it&NwIH~w8>gepi>Fbb|ZZ*8$50A*OOK_*Tp$Gw;3w<0Ija zpuLf&p&^a4f-mEY-@driCj<2b+sNw&qNt(n0z>eNC|mYIvxf|^?x=$Vk#+E7i!sk~ zl_mPb=R^Ummz zri`Uh3n0UeqO#K`2><&AbKU=CiQ6c6dRRc?3}v!P_$w4HTm(mc@8ku0-@qWZDs1uH z!agrsjCMa>vgeiakiS)dPM&oRY?W-Gy4Q%Tp79V`1HZyn&jQ|NWhwN|T!L_CK3FDo zp+}Dg_h5=1-u0VAkJrjUiiTYO^HiS7%6+EibfC2js;jP0<;oc>C)E58F z>K zlF9vCqvjNUml9de6L;hOD6&@bFaPYY^6xYs*0eBy_~DAPP|&*)onL8FAEgvX0?|}$>Kr_ ztWNibq0qD3?(%r#CRE~PnM2U48P8px`-r@ZwBam=+i7EzJt^*er} zz@kWQf*B9ZRtBTO{6UuHH4Y-4hJ%NI6R>zw{v$g}I(pBFKIkT7jmBJj{Np$Z`mUjY zsbV;TcNz5tBiOv>3rOC+Q?%c7I{Pxk7Cwq()7iyNR92>ttX1p8Hhlv1hl)w5)f1f4 zu8DK++q14)$7zw>Gny>67gWnbapp;TvahL*%ZM2zYp>;EOWs-(`}~$BsBOnUnGNVQ zUyI4ize0~YZie0O&a#Rdn_-FLTL`X@gDK~gi2J7f*cLe(6|-!qoJKA>T5=e?=>#ko zX$KLm3#R#svIZeHsM&D`4rc9!%*88-r)M2@k1#O8qcmlUj~vCX8WFRWnIe*}_~uRAEF$0U@A68DB*63{REc|HagnVkXa)_hvm|8xS{hksg2&$d z>qd<*Xcl+Jr{kV7iLrW&|5-v!N~h9CXPo(hi>|Tz!TOL9_KWNn5TKbhiWvBQ3mQvm zz%jW#97;ktd5hYlRC8gTj0N}U5%@wM_{|y zYCLCKSuJk22gC9XP)=xoH$AJLs#iwPqdm>IYt?MB=Ry@NSXqXvXO^JvG&g7^@t9IO zh3N{dKo_@c;MA0Pf;-1i@%8sekG&KI{Zu58rFFC|b1rplVpUWL!-^2-w3 zEoG>?;T39WVaBAdh~dl@0TPuNL+@JEV*dHRXrR0gP0tZL`ZABc{nLaFU)3RL%3OLO z@HKh1dzg;Dt%|F==aRjq^J(ijbIewzIFnpO&Zq{%>%8bQp+TH=+Y-uOOyG^%X+m;d z`Ej$C_rq}TS`xbM5Ynq$(-H+dHP>C}n9~UxoL|w4P4_{Gd4taD zS1A2$JPBB5K`-pG#8Zj&xcH74{649O8!F7`+$n=NBcli820zlK&#MV>iCNoY3o3;O+M;QZ2dlDX~+ii}A!r`3mel3|uqs3Hul%r;l^E_N#Skw!dMwS9xlSQo#w>MZ8>>a zB#H|)ouO7Z2%4fUpj-Dh5YwuFk2Uk?{^pf5HbWDtdi`+Pj(cDpzKs~K*bn9n6{td#yLft!9b`^*K}YLf%cJI0~&wyj{;_?{T`cC)herl^z^&;CZw zz=_6UDD}w%{`)I~0wwzNFE>azKV_6t5Jc_Ed&#voTZy`LG{h_Np+;Yq{`BX;Y8gM= zpRk`~EO3Bg?E=;=D*!?P+ad7eHn zqSY=SlzpGQsO%;lV?o@HmVbUqgP=W9k#=WAfY*|x7@hA!54e1Uk=JpkvswoXZ%tz> z=E{S$=sxNeJChsBT?fGn!{A|rDD4bPfbj5PJoMjndLmQ`o&_-EMmovF@*EI2Q30X5 zchlLT3%Kth`(epQJrt|Vp%2Il)lT{ z`wSP@|JMq5ksE2o!@aDm^BhM0=T1^QWdJ_4*qZ6@7SvY)SHB7!l)j^r%=B&38?V#Jk1m@si0xw^;=nyXZ4X7WU?Z|Z*#^XDLY z-YrfG4i55L*Hq%Zpe-b{3ZO0b3tHXH1()x-?C4Ez$T?y_y=L2TZ{Ea0&d1M?BKV0m zo;qexKO~5YTHn@~2TsIQ!-)`e%YxfT9ihJ_4kvU-(i5Ksxjs=5xPET{g>G!2htn^? z$HVF<@+OI0IRWrzc^GvS{7n^FLZG+674=e@==NC?xOeZpQKMWKK3|Z5pmc_I8?rz* zVin}9ill0zXF+J8Jgvs;x?k@-k$0$sH*LZYzrP1WZ5HD+`wY1C=qTzn z9{}YPLAdn2keZ2vLlL_F>(L*`etCq&NH8u$cMeDn6136kLRT3Vl#8E5 zOKR$d5Uk!_8GIIhT*d;PqJ$fgC+_0yKa z!HRnVf5c1jSbv1M5HM~A7moDz#q+T)DGh`qEzsuRDHv=y1Tumx@V(ELHk-Io)jWGLtQimF$t>pEn@*OS z6%vEs>)7fyi9MJ2iL#lSaZ*J+_@CT?6Fv%&-;brhYKVp>(_+Zs` zGRNd4^mWysjh7b4XV;+DjXY|g9w4u02LBrczv@SUMA5h&dWdwPDM zPLH$ia!SaDLslVrupm;mV>!>fLKcR;{7V_4!}z@=NcF0C&p zw*5V+HXkEbGULggH>$*7Nj=yP>eGPjI|=Wj6F%x)0^;58P)()>-rkocUv{da-p^Dh z-gAol-MEu(9L|I0@<&kL`-WaK(IN{160ly;2%c}tf|vELK!6m1gXZ_S{U zcSN8xHVoy2mw~jyGg`ggip+8_K>l%CD7m?VkRB&~8Yc)(9iQXk;vMA2g;DxjWfLwc zQ-s#TS4n2TBI;{!i)hsQV1D&6P}-M6t7|i;P|thVQ>=s5-2=38=T`bW)&ygsHA!Pb z82QehPjxv{?pcE>W-KoSpDQ{ru2_b|MWm7z2qWcsH>iiiLh5YXGg_zbD?bq2xKD)4$G z_dm9gyW1GFBtC+{kr(_q&k?Ma+mN#SKK6O~LZX&E8)o?Bvh46q%6oi(>Zy1CPm_@} z8Px9wK!!>?QEm}tKSGz0dpp(0?f!M_l&}bh$k>xP3v?)52HU?gZcCFQ8vs z11d}S!GwxkwKeyc&$(KL{O7nzD2R4xSrWx4O)A?ch}&9xScgg>99TUO;&VfA z9e%=tiAU*=028>s{XL7BN%*rT&f#15DiE2v@>-;LM6&=pfUC`l7yAb0&mm zeJmU}#WCjDnn#uPrL(gMw#5J0A8MB#g?mObpm@VMIJZX*opXlp5U636b3AWt_b*oQ zWQ=hAA=LQN5q4T5i3DCBqRZN+;DNnsp~`6@RBwBPPFCu;b#wraY*FAXF?<12qD^Vy z0yk2UV8pZr<4EA)t8}TM^S>?Z4tddA;lgiq^q<&-?jBi~q8!HCtKtvpk{RT}>2cKc zW)!TCbtIv>YpKqGnHXzy5ib9hhr8M@FyYQk+|iMT5uc9nc8&{X`{PCF`1fn5Mf5AU z^zZ`-YbdA6@9Qv5s|ap+6+r3sm3SiQHHNq@M?a%RUfk?VPF8<}#_ty8|I{o6+ewZj zNWh+|eSd`kMpE!mK^nI9XJAgSAj-)0qG?1D&q+&x^(N@?H#_I@b7vv=Mdp$K+i_g1 zoCW$WdIs%n4sbc@6ke^`ht8p9$n$%^+o3v(NL^{8=W~*YSkVu-y?cbX#rhEOCEIc5 zhwcP_05ttpG2w#7MQ*@2y355>R@GTPLmCt=PaOfw|nXw6%e>FmhCEsB7<$2tKJ%SjO zb{!Lc--Ks7H_(1*S^DA24Eo~IBc37GLC-fV=PLe$;lg-%q=OXt<0kWDzD@$sxRW^f zzhyWvr;6Ih?xs7gHB_6I>O=eSkD&d~jpG!y;)WzKj6G?_26*E1&N6-Q9a;{L5;nq3 zfkvt&e3Tr~c@L@Xy>Q~eT}Unw<>JCdaD(n0w0ZOr_Bt~N8O}iot0Xe+rtzpv0MbO}!kM*-ka@recJG@BrV{e(@roA6 zdaeOiyu8^5x`9g_k;7>70m!`Oi<6#yN4eT#P<-704v-jz@>Z<4Mw2~ryvgau+b{!x zZ!958giCy0jt8Y9;i&mWH0G|Lx}p_al4W4{LyBGU?SlBJrc_GZj_X)e3$u60fasfW zE=A)i9_)Aq9Tut>a%ltFxBJ1bg`)sM!H}IR2XZYV{QOPklxR(454E${F9(x{ZLmYZ6SQWfv0sj2tg2_2JdZb^Iuh5YK-Vajx?dX)xbso% z`)u4;BnxBwqbPQ<1P(YQK(h0DIIyCQ#z^VXoWnM3VbM!+cuq5yfFtO6X)nB4YL8Be zFCe4P1Twa7fpydU*j6nmJTY%RZfjo%YcXm!`=%Em(-wkdO4&W84H2VPv-^`14fR ztC)HkcuAA1I2glm$+k3rR|o^CCtzQ8D7SJyMWyqDIDMT0oYKf;Qoj=6V?`@D5hO~_ zM7^dl3-&UXIeN_R^mi2c*Xw(Zz2Q<{&V*HWx~tO!c}^qQHeoQZw~BmsRwJ_W-Pxx*9JE;Eld`9QC|%!*2J38bXUIMHp!JzXr!0WW z_g!G#hHiKh9!$I1cMwja3iP5o;pRv#VbWSC0&8%6Ste$-_QBv_G2QX1foyG;Wig^} zLCkg&{c*96SXtf%Mg89>-MyLiJ6dz6HQ(UThdQV>x)${%BA_W`1)Ub+4MnwQLEKG< z7R1gY233HD;};RDweP9Em^#}L*o+a~tI$4H85#~cK*ly*s(fWG3I=pQn$`!Nbkunw zWyi;9i=*g|3lm9p*A;5iKAAlE9z%{c9%SyE6J$mO!=c^ctoOVhtd@7BO4cte{ub$@ zhwV{%WrZ;n+@MbIt3%Bmo0l|Nv5=&nK44MmaDv1K*Mc;^onIm5M5f&Jv$&|&g(toK zkl=~M?3%@2I?l&|dvR!t`bU+qruxA}d-P^5`k~pwGz9y}yvsqbA@RSO#=va!^X4;zxFPf#*a^wY z*5bC8vr%1W7r)7TF^bvCgXsk)mSO4!=Ur8*zt7#u77ED{={L6c!gVU#70#kBjs>7( zyEN1h9a{HMg@68=Dmk~&lDaH753v_tbB4jfWTE&^qA{Zh|5$gTp^`cEO|r!84QFso z+hTghV-3l6IthLcG)d}76;RnM4$}D}WMSZUqHnMW`yT#>)23!n_qjW8`T~2@-FlcN zHB2L)6DL9RBMmxo=0B(bO}MObm^;*Qf#}9h#iFKO)Ef??_F=DZy2CRxm^{XsdT!A= z=a+PC^j(#cb2mT|^}^7NcBN;k0+zR9g87D$+KzmQ1DNZzNLf**mx# z`;Byqe={6!bp_#hS@f7wH8(2y2kav$beorQmeS6oLpTx~4;yk172g@|!eB z?}6=JXP|0|6-QEQ$-JscYS(R!vkSjMo3bVU?IvB!F?Yc6St+=2tc@qAa*)~47FvJ# zA)NV~0PUfHWa;aEy7W^yDy3b50gYrh`ZWR%85#Uz9B0t^-7t-LdX_GJXiWPK1u^Do z2YH7Qi1V|()J*jWN?7;cw2(G$woFexV*=krsDeS#NtmHZ8V2*K^5 zML02P9?IYLAp?DiC@3???i~~(2Ljg6ugikDlE;eZ*}R>&yltUwDxoNN_Y?-pl;C*v zx2U1}f|{;Og|8c5!K~^lB6h6WZ9R~G~&cLrhUT}*L&0uhr3~9xJ4AFYZsuM);XM*Zwg=i$Fm;q zYAAQVUlXS0K|?-^(?{pF!Nwcb=y+->agr~m^14gWTSXm4e*Zyp$Au{RY6X}@uLq?% z8R}xMNRLRqARmrr!D$~G4-5*aDEDz zeNJSF(N)%`nh77(4>Mk6F^XLNgs!SVc%)$goga6I7Ot2^mziFrhjV{hB+D8TG1=+F zZu}qO?w5+55?)k)QYJiF>w;H(x8lL`Jv9L(qafPoO%CWfRTtXb2C4Wd)MZ~fv6U+a z+L!|`UaQcH5_<3^%oZ~`obW(H0r_yxgC`~WmNlGN&y)PIn>3gD^Cr+7V!1yZ!kn(K zDa%*UGe$OWuk0Zz7XAB6xv8W`U6l;}>yxCGnLJgE8jJeJ#q{!{AtEaJ0d6mMW5;z} z$UAux6uHq2X_HiNZsSdg4L|wPiuv%^a1WhsJsVmY7Sp#TE=0iX0tN&su-T(Skk)ks zmGbYitu0b$_I8-KU-$wN4;GMsIX2`%s5!a#dKqmSKZ6_89mJBC!Jz+B3SP9_Mxjz) zGO&3(S}D}goxe<2+%iY@X!9jVPrkr>tjeh2E`K7dxD{_t>Vw!5=WwcU2&zU$L2&+F z+*CS=oPSeqK3l|{#!NW`18L^qsb*!-ZzfITW#?mi#8dX|;u;j0F%@cVx>8A{OE^34 zE|K}wf>RD_p~CfCoVs3-wZ=HHORb(n1y13;Xv%EnsG^YIKDf<2;fnqC;l{R1@_sm$ zm1c#q6YAgD-@o4>tb8f^{>GZ91U$p~_`7gx-~(>55``B-do7w{-=VQ~BC$?ufk_?j zV3LC_e{7&{6lzUW0o*;nM(HWqUh^Y9dX2zYy@k9eF}C@59bchg zA(!m(iD(TeU|YQd9I%~(QiTtpM@oe~UL1*ryuI{9$Ug>@xS#)iZyUAs_F?aNH|VA2 z1w`j;89o~S6ONp^iDtvMQAs3$wY{5Cn&?U*6^;5wiG417u4_!Ll%?V~d~|8>@{ z|FC6vC&U+3q2biYsM!?GVtSKMY||?WS8md@+Y)5aVN2jbO+ho553&K#M&(O zxx)q(9_b+Q>4vS1+VIjZjmG~hgPqq^EtcfDlB;=|urvTHs?EAN|E|tbN47ST~H0@7QP}Hr?(-$)Bxn;m*N7^K;#8@F$MMuO?PR~ z=wpkaK*|R))n``gm!_~(|5~`Ps+Op2K8kF*F@(3iLW?Qykz5}~a*gldN`G~lvwRyY zHEV}0>D{nWS&kj5`$%0q1Bk-)dc2ts1)-e`)hEwE&GA}vU~CbFYqc@ANCk`fL*?Y- z3CbizZ^IqG8Eo5~3LBQGtS1o&> +) diff --git a/samples/HTKDemo/networks/monLattice b/samples/HTKDemo/networks/monLattice new file mode 100755 index 0000000..33bcca8 --- /dev/null +++ b/samples/HTKDemo/networks/monLattice @@ -0,0 +1,26 @@ +VERSION=1.0 +N=8 L=16 +I=0 W=S +I=1 W=!NULL +I=2 W=N +I=3 W=L +I=4 W=C +I=5 W=V +I=6 W=!NULL +I=7 W=!NULL +J=0 S=1 E=0 +J=1 S=7 E=0 +J=2 S=0 E=1 +J=3 S=2 E=1 +J=4 S=3 E=1 +J=5 S=4 E=1 +J=6 S=5 E=1 +J=7 S=1 E=2 +J=8 S=7 E=2 +J=9 S=1 E=3 +J=10 S=7 E=3 +J=11 S=1 E=4 +J=12 S=7 E=4 +J=13 S=1 E=5 +J=14 S=7 E=5 +J=15 S=1 E=6 diff --git a/samples/HTKDemo/networks/monNetwork b/samples/HTKDemo/networks/monNetwork new file mode 100755 index 0000000..8528e79 --- /dev/null +++ b/samples/HTKDemo/networks/monNetwork @@ -0,0 +1,2 @@ +$phn = V | C | L | N | S; +(<$phn>) diff --git a/samples/HTKDemo/networks/rbiLattice b/samples/HTKDemo/networks/rbiLattice new file mode 100755 index 0000000..458c02f --- /dev/null +++ b/samples/HTKDemo/networks/rbiLattice @@ -0,0 +1,100 @@ +VERSION=1.0 +N=29 L=69 +I=0 W=C+V +I=1 W=!NULL +I=2 W=V+N +I=3 W=!NULL +I=4 W=N+V +I=5 W=V+C +I=6 W=!NULL +I=7 W=C+C +I=8 W=C+N +I=9 W=V+L +I=10 W=!NULL +I=11 W=L+V +I=12 W=V+V +I=13 W=C+L +I=14 W=V+S +I=15 W=!NULL +I=16 W=N+C +I=17 W=S+C +I=18 W=L+C +I=19 W=C+S +I=20 W=S+L +I=21 W=L+L +I=22 W=L+N +I=23 W=L+S +I=24 W=S+V +I=25 W=N+L +I=26 W=S +I=27 W=!NULL +I=28 W=!NULL +J=0 S=6 E=0 +J=1 S=26 E=0 +J=2 S=0 E=1 +J=3 S=4 E=1 +J=4 S=11 E=1 +J=5 S=12 E=1 +J=6 S=24 E=1 +J=7 S=1 E=2 +J=8 S=26 E=2 +J=9 S=2 E=3 +J=10 S=8 E=3 +J=11 S=22 E=3 +J=12 S=3 E=4 +J=13 S=26 E=4 +J=14 S=1 E=5 +J=15 S=26 E=5 +J=16 S=5 E=6 +J=17 S=7 E=6 +J=18 S=16 E=6 +J=19 S=17 E=6 +J=20 S=18 E=6 +J=21 S=6 E=7 +J=22 S=26 E=7 +J=23 S=6 E=8 +J=24 S=26 E=8 +J=25 S=1 E=9 +J=26 S=26 E=9 +J=27 S=9 E=10 +J=28 S=13 E=10 +J=29 S=20 E=10 +J=30 S=21 E=10 +J=31 S=25 E=10 +J=32 S=10 E=11 +J=33 S=26 E=11 +J=34 S=1 E=12 +J=35 S=26 E=12 +J=36 S=6 E=13 +J=37 S=26 E=13 +J=38 S=1 E=14 +J=39 S=26 E=14 +J=40 S=14 E=15 +J=41 S=19 E=15 +J=42 S=23 E=15 +J=43 S=3 E=16 +J=44 S=26 E=16 +J=45 S=15 E=17 +J=46 S=26 E=17 +J=47 S=10 E=18 +J=48 S=26 E=18 +J=49 S=6 E=19 +J=50 S=26 E=19 +J=51 S=15 E=20 +J=52 S=26 E=20 +J=53 S=10 E=21 +J=54 S=26 E=21 +J=55 S=10 E=22 +J=56 S=26 E=22 +J=57 S=10 E=23 +J=58 S=26 E=23 +J=59 S=15 E=24 +J=60 S=26 E=24 +J=61 S=3 E=25 +J=62 S=26 E=25 +J=63 S=28 E=26 +J=64 S=1 E=27 +J=65 S=3 E=27 +J=66 S=6 E=27 +J=67 S=10 E=27 +J=68 S=15 E=27 diff --git a/samples/HTKDemo/networks/rbiNetwork b/samples/HTKDemo/networks/rbiNetwork new file mode 100755 index 0000000..53152b6 --- /dev/null +++ b/samples/HTKDemo/networks/rbiNetwork @@ -0,0 +1,24 @@ +(S +<< +C+V| +V+N| +N+V| +V+C| +C+C| +C+N| +V+L| +L+V| +V+V| +C+L| +V+S| +N+C| +S+C| +L+C| +C+S| +S+L| +L+L| +L+N| +L+S| +S+V| +N+L >> +) diff --git a/samples/HTKDemo/networks/triLattice b/samples/HTKDemo/networks/triLattice new file mode 100755 index 0000000..d9bd6f8 --- /dev/null +++ b/samples/HTKDemo/networks/triLattice @@ -0,0 +1,268 @@ +VERSION=1.0 +N=76 L=190 +I=0 W=S-C+V +I=1 W=!NULL +I=2 W=C-V+N +I=3 W=!NULL +I=4 W=V-N+V +I=5 W=!NULL +I=6 W=N-V+C +I=7 W=!NULL +I=8 W=V-C+C +I=9 W=!NULL +I=10 W=C-C+N +I=11 W=C-N+V +I=12 W=C-C+V +I=13 W=C-V+C +I=14 W=C-V+L +I=15 W=!NULL +I=16 W=V-L+V +I=17 W=!NULL +I=18 W=L-V+V +I=19 W=!NULL +I=20 W=V-V+N +I=21 W=N-V+L +I=22 W=L-V+L +I=23 W=L-V+C +I=24 W=C-C+L +I=25 W=!NULL +I=26 W=C-L+V +I=27 W=C-C+C +I=28 W=C-V+S +I=29 W=!NULL +I=30 W=S-L+V +I=31 W=C-V+V +I=32 W=V-N+C +I=33 W=!NULL +I=34 W=N-C+C +I=35 W=V-C+L +I=36 W=V-V+S +I=37 W=V-S+C +I=38 W=N-C+V +I=39 W=L-V+S +I=40 W=V-C+V +I=41 W=V-L+C +I=42 W=!NULL +I=43 W=L-C+C +I=44 W=L-C+S +I=45 W=!NULL +I=46 W=C-S+L +I=47 W=L-V+N +I=48 W=C-L+L +I=49 W=!NULL +I=50 W=L-L+N +I=51 W=L-N+V +I=52 W=C-C+S +I=53 W=V-L+L +I=54 W=L-L+V +I=55 W=V-L+S +I=56 W=C-S+V +I=57 W=!NULL +I=58 W=S-V+C +I=59 W=V-S+V +I=60 W=S-V+N +I=61 W=N-V+V +I=62 W=V-V+C +I=63 W=N-V+N +I=64 W=V-C+S +I=65 W=S-V+L +I=66 W=L-C+V +I=67 W=V-V+L +I=68 W=V-N+L +I=69 W=N-L+V +I=70 W=C-N+C +I=71 W=S-C+L +I=72 W=C-L+C +I=73 W=S +I=74 W=!NULL +I=75 W=!NULL +J=0 S=37 E=0 +J=1 S=73 E=0 +J=2 S=0 E=1 +J=3 S=12 E=1 +J=4 S=38 E=1 +J=5 S=40 E=1 +J=6 S=66 E=1 +J=7 S=1 E=2 +J=8 S=73 E=2 +J=9 S=2 E=3 +J=10 S=20 E=3 +J=11 S=47 E=3 +J=12 S=60 E=3 +J=13 S=63 E=3 +J=14 S=3 E=4 +J=15 S=73 E=4 +J=16 S=4 E=5 +J=17 S=11 E=5 +J=18 S=51 E=5 +J=19 S=5 E=6 +J=20 S=73 E=6 +J=21 S=6 E=7 +J=22 S=13 E=7 +J=23 S=23 E=7 +J=24 S=58 E=7 +J=25 S=62 E=7 +J=26 S=7 E=8 +J=27 S=73 E=8 +J=28 S=8 E=9 +J=29 S=27 E=9 +J=30 S=34 E=9 +J=31 S=43 E=9 +J=32 S=9 E=10 +J=33 S=73 E=10 +J=34 S=10 E=11 +J=35 S=73 E=11 +J=36 S=9 E=12 +J=37 S=73 E=12 +J=38 S=1 E=13 +J=39 S=73 E=13 +J=40 S=1 E=14 +J=41 S=73 E=14 +J=42 S=14 E=15 +J=43 S=21 E=15 +J=44 S=22 E=15 +J=45 S=65 E=15 +J=46 S=67 E=15 +J=47 S=15 E=16 +J=48 S=73 E=16 +J=49 S=16 E=17 +J=50 S=26 E=17 +J=51 S=30 E=17 +J=52 S=54 E=17 +J=53 S=69 E=17 +J=54 S=17 E=18 +J=55 S=73 E=18 +J=56 S=18 E=19 +J=57 S=31 E=19 +J=58 S=61 E=19 +J=59 S=19 E=20 +J=60 S=73 E=20 +J=61 S=5 E=21 +J=62 S=73 E=21 +J=63 S=17 E=22 +J=64 S=73 E=22 +J=65 S=17 E=23 +J=66 S=73 E=23 +J=67 S=9 E=24 +J=68 S=73 E=24 +J=69 S=24 E=25 +J=70 S=35 E=25 +J=71 S=71 E=25 +J=72 S=25 E=26 +J=73 S=73 E=26 +J=74 S=9 E=27 +J=75 S=73 E=27 +J=76 S=1 E=28 +J=77 S=73 E=28 +J=78 S=28 E=29 +J=79 S=36 E=29 +J=80 S=39 E=29 +J=81 S=46 E=30 +J=82 S=73 E=30 +J=83 S=1 E=31 +J=84 S=73 E=31 +J=85 S=3 E=32 +J=86 S=73 E=32 +J=87 S=32 E=33 +J=88 S=70 E=33 +J=89 S=33 E=34 +J=90 S=73 E=34 +J=91 S=7 E=35 +J=92 S=73 E=35 +J=93 S=19 E=36 +J=94 S=73 E=36 +J=95 S=29 E=37 +J=96 S=73 E=37 +J=97 S=33 E=38 +J=98 S=73 E=38 +J=99 S=17 E=39 +J=100 S=73 E=39 +J=101 S=7 E=40 +J=102 S=73 E=40 +J=103 S=15 E=41 +J=104 S=73 E=41 +J=105 S=41 E=42 +J=106 S=72 E=42 +J=107 S=42 E=43 +J=108 S=73 E=43 +J=109 S=42 E=44 +J=110 S=73 E=44 +J=111 S=44 E=45 +J=112 S=52 E=45 +J=113 S=64 E=45 +J=114 S=45 E=46 +J=115 S=73 E=46 +J=116 S=17 E=47 +J=117 S=73 E=47 +J=118 S=25 E=48 +J=119 S=73 E=48 +J=120 S=48 E=49 +J=121 S=53 E=49 +J=122 S=49 E=50 +J=123 S=73 E=50 +J=124 S=50 E=51 +J=125 S=73 E=51 +J=126 S=9 E=52 +J=127 S=73 E=52 +J=128 S=15 E=53 +J=129 S=73 E=53 +J=130 S=49 E=54 +J=131 S=73 E=54 +J=132 S=15 E=55 +J=133 S=73 E=55 +J=134 S=45 E=56 +J=135 S=73 E=56 +J=136 S=56 E=57 +J=137 S=59 E=57 +J=138 S=57 E=58 +J=139 S=73 E=58 +J=140 S=29 E=59 +J=141 S=73 E=59 +J=142 S=57 E=60 +J=143 S=73 E=60 +J=144 S=5 E=61 +J=145 S=73 E=61 +J=146 S=19 E=62 +J=147 S=73 E=62 +J=148 S=5 E=63 +J=149 S=73 E=63 +J=150 S=7 E=64 +J=151 S=73 E=64 +J=152 S=57 E=65 +J=153 S=73 E=65 +J=154 S=42 E=66 +J=155 S=73 E=66 +J=156 S=19 E=67 +J=157 S=73 E=67 +J=158 S=3 E=68 +J=159 S=73 E=68 +J=160 S=68 E=69 +J=161 S=73 E=69 +J=162 S=10 E=70 +J=163 S=73 E=70 +J=164 S=37 E=71 +J=165 S=73 E=71 +J=166 S=25 E=72 +J=167 S=73 E=72 +J=168 S=75 E=73 +J=169 S=1 E=74 +J=170 S=3 E=74 +J=171 S=5 E=74 +J=172 S=7 E=74 +J=173 S=9 E=74 +J=174 S=10 E=74 +J=175 S=15 E=74 +J=176 S=17 E=74 +J=177 S=19 E=74 +J=178 S=25 E=74 +J=179 S=29 E=74 +J=180 S=33 E=74 +J=181 S=37 E=74 +J=182 S=42 E=74 +J=183 S=45 E=74 +J=184 S=46 E=74 +J=185 S=49 E=74 +J=186 S=50 E=74 +J=187 S=55 E=74 +J=188 S=57 E=74 +J=189 S=68 E=74 diff --git a/samples/HTKDemo/networks/triNetwork b/samples/HTKDemo/networks/triNetwork new file mode 100755 index 0000000..cdf14cc --- /dev/null +++ b/samples/HTKDemo/networks/triNetwork @@ -0,0 +1,61 @@ +(S +<< +S-C+V| +C-V+N| +V-N+V| +N-V+C| +V-C+C| +C-C+N| +C-N+V| +C-C+V| +C-V+C| +C-V+L| +V-L+V| +L-V+V| +V-V+N| +N-V+L| +L-V+L| +L-V+C| +C-C+L| +C-L+V| +C-C+C| +C-V+S| +S-L+V| +C-V+V| +V-N+C| +N-C+C| +V-C+L| +V-V+S| +V-S+C| +N-C+V| +L-V+S| +V-C+V| +V-L+C| +L-C+C| +L-C+S| +C-S+L| +L-V+N| +C-L+L| +L-L+N| +L-N+V| +C-C+S| +V-L+L| +L-L+V| +V-L+S| +C-S+V| +S-V+C| +V-S+V| +S-V+N| +N-V+V| +V-V+C| +N-V+N| +V-C+S| +S-V+L| +L-C+V| +V-V+L| +V-N+L| +N-L+V| +C-N+C| +S-C+L| +C-L+C >> +) diff --git a/samples/HTKDemo/outaudio b/samples/HTKDemo/outaudio new file mode 100755 index 0000000..dc4b6cb --- /dev/null +++ b/samples/HTKDemo/outaudio @@ -0,0 +1,72 @@ +#!MLF!# +"0001.rec" +0 10100000 C -7627.560059 +/// +0 5300000 C -3905.354980 +5300000 6600000 V -1062.496460 +6600000 10100000 C -2664.974854 +/// +0 8900000 C -6719.755371 +8900000 10100000 V -917.452148 +/// +0 5300000 C -3905.354980 +5300000 5800000 V -435.424530 +5800000 6600000 V -631.898193 +6600000 10100000 C -2664.974854 +/// +0 2900000 C -2020.528931 +2900000 10100000 C -5618.454590 +. +"0002.rec" +0 3200000 C -2068.348877 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 13300000 V -987.693176 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 1000000 C -627.234375 +1000000 1300000 V -233.054031 +1300000 3200000 C -1208.342407 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 13300000 V -987.693176 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 1400000 C -928.577454 +1400000 3200000 C -1144.373779 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 13300000 V -987.693176 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 3200000 C -2068.348877 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 12400000 C -311.542572 +12400000 13300000 V -686.131775 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 1000000 C -627.234375 +1000000 1300000 V -233.054031 +1300000 3200000 C -1208.342407 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 12400000 C -311.542572 +12400000 13300000 V -686.131775 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +. diff --git a/samples/HTKDemo/protoconfs/example.pcf b/samples/HTKDemo/protoconfs/example.pcf new file mode 100755 index 0000000..a8797ef --- /dev/null +++ b/samples/HTKDemo/protoconfs/example.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream DISCRETE system + + + +hsKind: T +covKind: D +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 8 8 4 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf b/samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf new file mode 100755 index 0000000..3c801ff --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single stream TIEDHS prototype system + + + +hsKind: T +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 12 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf new file mode 100755 index 0000000..c6de3cd --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single mixture, single stream prototype system + + + +hsKind: P +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf new file mode 100755 index 0000000..948f49b --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single mixture, single stream FULLC prototype system + + + +hsKind: P +covKind: F +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf new file mode 100755 index 0000000..ae1cacd --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single stream, 4 mixture prototype system + + + +hsKind: P +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 4 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf new file mode 100755 index 0000000..fecb51c --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf @@ -0,0 +1,22 @@ + + + + This PCF produces a single stream, 4 mixture, full covariance + prototype system. + + + +hsKind: P +covKind: F +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 4 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf b/samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf new file mode 100755 index 0000000..1a01129 --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single stream DISCRETE prototype system + + + +hsKind: D +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 64 +parmKind: MFCC_E_D_V +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf new file mode 100755 index 0000000..838dd7f --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream, single mixture prototype system. + + + +hsKind: P +covKind: D +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 1 1 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf new file mode 100755 index 0000000..f03cac5 --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream, single mixture, FULLC prototype system. + + + +hsKind: P +covKind: F +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 1 1 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf b/samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf new file mode 100755 index 0000000..bbc8f2a --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream DISCRETE prototype system. + + + +hsKind: D +covKind: D +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 64 64 16 +parmKind: MFCC_E_D_V +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/results/lbiPlainS1.res b/samples/HTKDemo/results/lbiPlainS1.res new file mode 100755 index 0000000..68b30d2 --- /dev/null +++ b/samples/HTKDemo/results/lbiPlainS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=14.29 [H=1, S=6, N=7] +WORD: %Corr=90.41, Acc=85.39 [H=198, D=15, S=6, I=11, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=76.69, Acc=69.92 [H=102, D=20, S=11, I=9, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S1Lin.res b/samples/HTKDemo/results/monDiscM64S1Lin.res new file mode 100755 index 0000000..7110e48 --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S1Lin.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=72.15, Acc=70.32 [H=158, D=48, S=13, I=4, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.17, Acc=61.65 [H=88, D=35, S=10, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S1Tree.res b/samples/HTKDemo/results/monDiscM64S1Tree.res new file mode 100755 index 0000000..d7ebc2a --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S1Tree.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=76.26, Acc=74.43 [H=167, D=40, S=12, I=4, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=58.65, Acc=54.89 [H=78, D=40, S=15, I=5, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S3Lin.res b/samples/HTKDemo/results/monDiscM64S3Lin.res new file mode 100755 index 0000000..9337e36 --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S3Lin.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=84.93, Acc=84.47 [H=186, D=32, S=1, I=1, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=62.41 [H=89, D=36, S=8, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S3Tree.res b/samples/HTKDemo/results/monDiscM64S3Tree.res new file mode 100755 index 0000000..1f3524e --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S3Tree.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=82.19, Acc=81.74 [H=180, D=34, S=5, I=1, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=60.90 [H=89, D=35, S=9, I=8, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM1S1.res b/samples/HTKDemo/results/monPlainM1S1.res new file mode 100755 index 0000000..28518d0 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM1S3.res b/samples/HTKDemo/results/monPlainM1S3.res new file mode 100755 index 0000000..f7edde8 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] +=================================================================== diff --git a/samples/HTKDemo/results/monPlainM1S3FullCov.res b/samples/HTKDemo/results/monPlainM1S3FullCov.res new file mode 100755 index 0000000..e95e339 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S3FullCov.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=86.30, Acc=85.39 [H=189, D=28, S=2, I=2, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=60.15 [H=89, D=32, S=12, I=9, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM1S3HERestPell.res b/samples/HTKDemo/results/monPlainM1S3HERestPell.res new file mode 100755 index 0000000..28518d0 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S3HERestPell.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM4S1.res b/samples/HTKDemo/results/monPlainM4S1.res new file mode 100755 index 0000000..c393160 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM4S1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=90.41, Acc=85.84 [H=198, D=16, S=5, I=10, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=77.44, Acc=65.41 [H=103, D=15, S=15, I=16, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monSharedM1S3.res b/samples/HTKDemo/results/monSharedM1S3.res new file mode 100755 index 0000000..8a83af9 --- /dev/null +++ b/samples/HTKDemo/results/monSharedM1S3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=79.91, Acc=72.60 [H=175, D=26, S=18, I=16, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=69.92, Acc=57.89 [H=93, D=26, S=14, I=16, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monTiedMixS1.res b/samples/HTKDemo/results/monTiedMixS1.res new file mode 100755 index 0000000..e2c19b5 --- /dev/null +++ b/samples/HTKDemo/results/monTiedMixS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=67.58, Acc=65.75 [H=148, D=62, S=9, I=4, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=55.64, Acc=55.64 [H=74, D=48, S=11, I=0, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monTiedMixS3.res b/samples/HTKDemo/results/monTiedMixS3.res new file mode 100755 index 0000000..070aeba --- /dev/null +++ b/samples/HTKDemo/results/monTiedMixS3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=67.12, Acc=66.21 [H=147, D=60, S=12, I=2, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=56.39, Acc=54.89 [H=75, D=47, S=11, I=2, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/rbiPlainS1.res b/samples/HTKDemo/results/rbiPlainS1.res new file mode 100755 index 0000000..2b75dc9 --- /dev/null +++ b/samples/HTKDemo/results/rbiPlainS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=89.95, Acc=87.21 [H=197, D=15, S=7, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=75.19, Acc=67.67 [H=100, D=20, S=13, I=10, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triDiscM64S3.res b/samples/HTKDemo/results/triDiscM64S3.res new file mode 100755 index 0000000..15e22a8 --- /dev/null +++ b/samples/HTKDemo/results/triDiscM64S3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=57.14 [H=4, S=3, N=7] +WORD: %Corr=99.09, Acc=98.63 [H=217, D=2, S=0, I=1, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=64.66, Acc=57.89 [H=86, D=34, S=13, I=9, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triDiscM64S3HSmooth.res b/samples/HTKDemo/results/triDiscM64S3HSmooth.res new file mode 100755 index 0000000..61f4e8b --- /dev/null +++ b/samples/HTKDemo/results/triDiscM64S3HSmooth.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=42.86 [H=3, S=4, N=7] +WORD: %Corr=97.26, Acc=97.26 [H=213, D=6, S=0, I=0, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=61.65 [H=89, D=33, S=11, I=7, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triPlainS1.res b/samples/HTKDemo/results/triPlainS1.res new file mode 100755 index 0000000..09d0b5f --- /dev/null +++ b/samples/HTKDemo/results/triPlainS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=28.57 [H=2, S=5, N=7] +WORD: %Corr=93.61, Acc=91.32 [H=205, D=13, S=1, I=5, N=219] +=================================================================== + +TestSet + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=72.93, Acc=63.16 [H=97, D=24, S=12, I=13, N=133] +=================================================================== diff --git a/samples/HTKDemo/results/triSharedS1.res b/samples/HTKDemo/results/triSharedS1.res new file mode 100755 index 0000000..13d9c22 --- /dev/null +++ b/samples/HTKDemo/results/triSharedS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=90.41, Acc=84.93 [H=198, D=16, S=5, I=12, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=76.69, Acc=67.67 [H=102, D=20, S=11, I=12, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triTiedMixS1.res b/samples/HTKDemo/results/triTiedMixS1.res new file mode 100755 index 0000000..be22bea --- /dev/null +++ b/samples/HTKDemo/results/triTiedMixS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=14.29 [H=1, S=6, N=7] +WORD: %Corr=84.02, Acc=81.74 [H=184, D=24, S=11, I=5, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.16, Acc=60.15 [H=84, D=31, S=18, I=4, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triTiedMixS1HSmooth.res b/samples/HTKDemo/results/triTiedMixS1HSmooth.res new file mode 100755 index 0000000..f6426cc --- /dev/null +++ b/samples/HTKDemo/results/triTiedMixS1HSmooth.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=81.74, Acc=79.00 [H=179, D=28, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=65.41, Acc=57.89 [H=87, D=30, S=16, I=10, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triTiedStateS1.res b/samples/HTKDemo/results/triTiedStateS1.res new file mode 100755 index 0000000..b49598c --- /dev/null +++ b/samples/HTKDemo/results/triTiedStateS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=14.29 [H=1, S=6, N=7] +WORD: %Corr=91.32, Acc=88.58 [H=200, D=18, S=1, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=75.94, Acc=62.41 [H=101, D=27, S=5, I=18, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/runDemo b/samples/HTKDemo/runDemo new file mode 100755 index 0000000..bb20c68 --- /dev/null +++ b/samples/HTKDemo/runDemo @@ -0,0 +1,815 @@ +#!/usr/bin/perl + +# Global Variables +$trDataFiles="data/train/tr*.mfc"; # Parameterised training data files +$teDataFiles="data/test/te*.mfc"; # Parameterised test data files +$dataFiles=$trDataFiles; # Pointer to parameterised data files + +$HHED="HHEd"; +$HLED="HLEd"; +$HCOPY="HCopy"; +$HLIST="HList"; +$HINIT="HInit"; +$HREST="HRest"; +$HEREST="HERest"; +$HQUANT="HQuant"; +$HSMOOTH="HSmooth"; +$HRESULTS="HResults"; +$HVITE="HVite"; +$MAKEPROTO="./MakeProtoHMMSet"; + +$numIters=1; # Number of training iterations +$traceTools=0; # Display tool call tracing +$monLabDir="labels/bcplabs/mon"; # Dir for monophone label files +$triLabDir="labels/bcplabs/tri"; # Dir for triphone labels +$lbiLabDir="labels/bcplabs/lbi"; # Dir for left biphone labels +$rbiLabDir="labels/bcplabs/rbi"; # Dir for right biphone labels +$labDir=$monLabDir; # Pointer to relevant labels dir +$monEdFile="edfiles/edlabs.led"; # HLEd ed file to produce labels +$triEdFile="edfiles/edtlabs.led"; # HLED ed file for tri labels +$lbiEdFile="edfiles/edllabs.led"; # HLED ed file for lbi labels +$rbiEdFile="edfiles/edrlabs.led"; # HLED ed file for rbi labels +$edFile=$monEdFile; # Pointer to relevant ed file +$contDepPlainhs="edfiles/contDepPlainhs.hed"; # HHEd ed file for PLAINHS tris +$triSharedhsM1="edfiles/triSharedhsM1.hed"; # HHEd ed file for SHAREDHS tris +$lbiSharedhsM1="edfiles/lbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS lbis +$rbiSharedhsM1="edfiles/rbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS rbis +$triTiedState="edfiles/triTiedState.hed"; # HHEd ed file for tied state tris +$lbiTiedState="edfiles/lbiTiedState.hed"; # HHEd ed file for tied state lbis +$rbiTiedState="edfiles/rbiTiedState.hed"; # HHEd ed file for tied state rbis +$contDepTiedhsS1="edfiles/contDepTiedhsS1.hed"; # HHEd ed file for TIEDHS S1 +$contDepTiedhsS3="edfiles/contDepTiedhsS3.hed"; # HHEd ed file for TIEDHS S3 +$contDepTiedhs=""; # Pointer to HHEd ed file for TIEDHS +$hhedscript=""; # Pointer to HHEd ed file for TIEDHS tris +$monTiedhsS1="edfiles/monTiedhsS1.hed"; # HHEd ed file for TIEDHS mons S1 +$monTiedhsS3="edfiles/monTiedhsS3.hed"; # HHEd ed file for TIEDHS mons S3 +$monTiedhs=""; # Pointer to HHEd ed file for TIEDHS mons +$monSharedhsM1="edfiles/monSharedhsM1.hed";# HHEd ed file for SHAREDHS mons M1 +$monSharedhsM2="edfiles/monSharedhsM2.hed";# HHEd ed file for SHAREDHS mons M2 +$monHmmList="lists/bcplist"; # List of monophones +$contDepHmmList="lists/contDepList"; # List of +$hmmList=$monHmmList; # Pointer to relevant HMM list +$monHmmVocab="lists/bcpvocab"; # Vocab file for monophones +$triHmmVocab="lists/triVocab"; # Vocab file for triphones +$lbiHmmVocab="lists/lbiVocab"; # Vocab file for left biphones +$rbiHmmVocab="lists/rbiVocab"; # Vocab file for right biphones +$hmmVocab=$monHmmVocab; # Pointer to relevant HMM vocab +$srcFmt=""; # Source file format +$triConv=0; # Convert to triphones? +$configParams; # Global store of config parameters +$hrestConf="toolconfs/hrest.conf"; # HRest conf file +$hinitConf="toolconfs/hinit.conf"; # HInit conf file +$hcopyConf="toolconfs/hcopy.conf"; # HCopy conf file +$hhedConf="toolconfs/hhed.conf"; # HHEd conf file +$herestConf="toolconfs/herest.conf"; # HERest conf file +$hsmoothConf="toolconfs/hsmooth.conf"; # HSmooth conf file +$hviteConf="toolconfs/hvite.conf"; # HVite conf file +$hquantConf="toolconfs/hquant.conf"; # HQuant conf file +$macroStr=""; # String for tool -H option, either "-H file" or "" +$monNetwork="networks/monLattice"; # Monophone network +$triNetwork="networks/triLattice"; # Triphone network +$lbiNetwork="networks/lbiLattice"; # Left biphone network +$rbiNetwork="networks/rbiLattice"; # Right biphone network +$network=$monNetwork; # Pointer to recognition network +$cOptStr=""; +$pOptStr=""; +$aOptStr=""; +$contDep=""; + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +($ENV{PWD} =~ /HTKDemo$/) || die "Must be in directory HTKDemo to run this script\n"; +($#ARGV == 0) || die "USAGE: runDemo DemoConfigFile\n"; + +&ReadTCF(); + +$nS=$configParams{"nStreams"}; +$cK=$configParams{"covKind"}; + +&SetToolConfs(); + +$numIters=$configParams{"HERest_Iter"}; + +if($configParams{"Clean_up"} =~ /^[yY]/){ + &CleanUp(); +} +if($configParams{"Trace_tool_calls"} =~ /^[yY]/){ + $aOptStr="-A"; +} + +#*********************** PRE TRAINING ************************ + +if($configParams{"HCopy"} =~ /^[yY]/){ + &HCopy("data/train", "lists/trainFileStubs"); + &HCopy("data/test", "lists/testFileStubs"); +} +if($configParams{"HList"} =~ /^[yY]/){ + &HList(); +} +if($configParams{"HQuant"} =~ /^[yY]/){ + &HQuant(); +} +if($nS==1){ + $contDepTiedhs = $contDepTiedhsS1; + $monTiedhs = $monTiedhsS1; +}else{ + $contDepTiedhs = $contDepTiedhsS3; + $monTiedhs = $monTiedhsS3; +} + +#*************************** TRAINING ************************ +if($configParams{"Context"} =~ /^[tTlLrR]/){ + print "Has the appropriate monophone system been generated Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + }else{ + $hmmList=$monHmmList; + &MkStdMonSys(); + } + if($configParams{"Context"} =~ /^[tT]/){ + $contDep="tri"; + $network=$triNetwork; + $hmmVocab=$triHmmVocab; + $labDir=$triLabDir; + $edFile=$triEdFile; + }elsif($configParams{"Context"} =~ /^[lL]/){ + $contDep="lbi"; + $network=$lbiNetwork; + $hmmVocab=$lbiHmmVocab; + $labDir=$lbiLabDir; + $edFile=$lbiEdFile; + }elsif($configParams{"Context"} =~ /^[rR]/){ + $contDep="rbi"; + $network=$rbiNetwork; + $hmmVocab=$rbiHmmVocab; + $labDir=$rbiLabDir; + $edFile=$rbiEdFile; + } + $hmmList=$contDepHmmList; + &MkContDepSys(); +}else{ + $network=$monNetwork; + $hmmList=$monHmmList; + $hmmVocab=$monHmmVocab; + &MkMonSys(); +} + +#*************************** TESTING ************************ +if($configParams{"hsKind"} =~ /^[pPsS]/){ + $pOptStr="-p 5.0"; +}else{ + $pOptStr="-p -1.0"; +} +if($configParams{"direct_audio"} =~ /^[yY]/){ + &HViteAudio($hmmVocab,$hmmList,$network); +}elsif($configParams{"HVite"} =~ /^[yY]/){ + print "\nTesting on the training set\n"; + $dataFiles=$trDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); + unlink(); + print "\nTesting on the test set\n"; + $dataFiles=$teDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#---------------------------------------------- +# MkContDepSys: make a context dependent system +#---------------------------------------------- +sub MkContDepSys { + local($i,$mmix)=0; + + unless($configParams{"covKind"} =~ /^[dD]/){ + die "Can't make context dependent from full covariance monophones\n"; + } + if ($configParams{"hsKind"} =~ /^[pPsS]/){ + for ($i=1; $i<=$nS; $i++){ + if ($mixes[$i] > 1){ + $mmix=1; + } + } + } + unless($mmix == 0){ + die "Can't make context dependent from multiple mixture monophones\n"; + } + print ("WARNING: Monophones should have no parameter sharing\n"); + $srcDir="hmms/hmm.2"; + $tgtDir="hmms/hmm.1"; + $labFiles="$monLabDir\/*"; + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + unlink(); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + if($configParams{"TiedState"} =~ /^[yY]/){ + $hhedscript="edfiles/".$contDep."TiedState.hed"; + &HHEd($srcDir,$tgtDir,$hmmList,$hhedscript); + }else{ + $hhedscript="edfiles/".$contDep."SharedhsM1.hed"; + &HHEd($srcDir,$tgtDir,$hmmList,$hhedscript); + } + }elsif($configParams{"hsKind"} =~ /^[pPdD]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + unlink(); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + &HHEd($srcDir,$tgtDir,$hmmList,$contDepTiedhs); + $cOptStr="-c 50.0"; + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + }elsif($configParams{"HSmooth"} =~ /^[yY]/){ + &HSmooth($numIters,$labDir,$hmmList); + } +} +sub AddMixNums { + local($i); + + for ($i=1; $i<=$nS; $i++){ + if($configParams{"hsKind"} =~ /^[tT]/){ + $protoName=$protoName."1"; + if( $i != $nS ){ + $protoName=$protoName."_"; + } + }else{ + $protoName=$protoName.$mixes[$i]; + if( $i == $nS ){ + chop( $protoName ); + }else{ + $protoName=$protoName."_"; + } + } + } +} + +#---------------------------------- +# MkMonSys: make a monophone system +#---------------------------------- +sub MkMonSys { + local($fromProto)=0; + + $protoName="proto_s${nS}_m"; + &AddMixNums(); + if($configParams{"hsKind"} =~ /^[dD]/){ + $protoName=$protoName."_vq.pcf"; + }else{ + $protoName=$protoName."_${cK}c.pcf"; + } +(-f "protoconfs/$protoName")||die "Cannot find proto config file /$protoName\n"; + + $labFiles="tidata/*.phn"; + $srcFmt="-G TIMIT"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + if($configParams{"HInit"} =~ /^[yY]/){ + &HInit($labDir,$protoName,$hmmList); + } + if($configParams{"HRest"} =~ /^[yY]/){ + &HRest($labDir,$hmmList); + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + } + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.0"; + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monSharedhsM1); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monTiedhs); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + } +} + +#---------------------------------------------- +# MkStdMonSys: make a standard monophone system +#---------------------------------------------- +sub MkStdMonSys { + $labFiles="tidata/*.phn"; + $srcFmt="-G TIMIT"; + + $protoName="proto_s${nS}_m"; + if($configParams{"hsKind"} =~ /^[dD]/){ + &AddMixNums(); + $tmp=$protoName."_vq.pcf"; + $protoName = $tmp; + }else{ + $protoName="proto_s${nS}_m1_dc.pcf"; + } +(-f "protoconfs/$protoName")||die "Cannot find proto config file /$protoName\n"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + + &CleanUp(); + + &HInit($monLabDir,$protoName,$hmmList); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); +} + +#------------------------------------------ +# CleanUp: Clear model and file directories +#------------------------------------------ +sub CleanUp { + print "Cleaning up directories\n"; + unlink(); + unlink(); + unlink(); + unlink(); + unlink(); + unlink(); + unlink(); + print "Done cleaning\n"; +} + +#----------------------------------------------------------- +# SetToolConfs: Set tool configuration files for discrete or +# continuous density HMMs +#----------------------------------------------------------- +sub SetToolConfs { + local($sysId); + + if($configParams{"hsKind"} =~ /^[dD]/){ + $sysId=VQ; + }else{ + $sysId=CD; + } + system("cp toolconfs/hinit${sysId}.conf toolconfs/hinit.conf"); + system("cp toolconfs/hrest${sysId}.conf toolconfs/hrest.conf"); + system("cp toolconfs/herest${sysId}.conf toolconfs/herest.conf"); + system("cp toolconfs/hsmooth${sysId}.conf toolconfs/hsmooth.conf"); + system("cp toolconfs/hvite${sysId}.conf toolconfs/hvite.conf"); + if($configParams{"direct_audio"} =~ /^[yY]/){ + system("cp toolconfs/hcopyDA.conf toolconfs/hcopy.conf"); + system("cp toolconfs/hviteDA.conf toolconfs/hvite.conf"); + }else{ + system("cp toolconfs/hcopyFB.conf toolconfs/hcopy.conf"); + } +} + + +#-------------------------------------------------------------------- +# ReadTCF: Reads the Test Config File and sets parameters accordingly +#-------------------------------------------------------------------- +sub ReadTCF { + +local($validData,$param,$val)=0; + +#open(CONFIG, "configs/$a"); #read tcf from STDIN +while(<>){ + if(/\/ || /\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if ($param =~ /nMixes/){ + @mixes=split(/ +/, $_); + } + $val =~ tr/A-Z/a-z/; + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Test Config File Read + ===================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<< +$param,$val +. +} +#------------------------------------------------------------------- +# TestDirEmpty: Tests if directory is empty and prompts user for the +# deletion of any files found +#------------------------------------------------------------------- +sub TestDirEmpty { + # Get arguments + local($dirName, $srcOrTgt, $tool) = @_; + local(@nFiles,$rtnVal); + + $rtnVal=1; + + opendir(DIR,$dirName) || die "Can't open $dirName\n"; + @nFiles = grep(!/^\./, readdir(DIR)); #Forget about . files + if($nFiles[0]){ + if($srcOrTgt eq "tgt"){ + print "\n$dirName not empty, overwrite using $tool Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $dirName\n"; + $nFiles[0] = unlink(<$dirName/*>); + print "Removed $nFiles[0] files\n"; + $rtnVal=1; + }else{ + print "\nDirectory $dirName unaltered, skipping to next test\n"; + $rtnVal=0; + } + } + }else{ + if($srcOrTgt eq "src"){ + die "Source Directory Empty $dirName\n"; + } + } + $rtnVal; +} + +#------------------------------------------------------------------- +# SetMacroStr: Generate -H option string dependent on whether source +# directory contains a macro file +#------------------------------------------------------------------- +sub SetMacroStr { + # Get arguments + local($srcDir) = @_; + + if (-r $srcDir."/newMacros"){ + $macroStr = "-H ".$srcDir."/newMacros"; + }else{ + $macroStr = ""; + } +} + +#************************** HTK Tool Functions ******************************** + +#-------------------------------------------------- +# HHEd: Calls HHEd to perform editing on the HMMSet +#-------------------------------------------------- +sub HHEd { + # Get arguments + local($srcDir,$tgtDir,$hmmList,$hedFile) = @_; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HHEd - $hedFile"); + if (&TestDirEmpty($tgtDir,"tgt","HHEd - $hedFile")){ + system("$HHED $aOptStr -C $hhedConf -D -d $srcDir $macroStr -M $tgtDir $hedFile $hmmList"); + } +} + +#------------------------------------------------------------------------- +# HCopy: Calls HCopy to convert TIMIT data files to HTK parameterised ones +#------------------------------------------------------------------------- +sub HCopy { + local($tgtDir,$fileStubList)=@_; + + local($srcDir)="tidata"; + + &TestDirEmpty($srcDir,"src","HCopy"); + if (&TestDirEmpty($tgtDir,"tgt","HCopy")){ + open(FILESTUBLIST, $fileStubList); + while() { # read HMM name into $_ + chop($_); + system("$HCOPY $aOptStr -C $hcopyConf -D $srcDir/$_.adc $tgtDir/$_.mfc"); + } + } +} + +#------------------------------------------------------ +# HQuant: Calls HQuant to produce a 64 code VQ codebook +#------------------------------------------------------ +sub HQuant { + local($srcDir)="data/train"; + local($tgtDir)="codebooks"; + local($nOptStr,$tOptStr,$codebook,$lin); + + &TestDirEmpty($srcDir,"src","HQuant"); + if ($nS==1){ + $nOptStr="-s 1 -n 1 $mixes[1]"; + $codebook=$tgtDir."/C${mixes[1]}"; + }else{ + $nOptStr="-s 3 -n 1 $mixes[1] -n 2 $mixes[2] -n 3 $mixes[3]"; + $codebook=$tgtDir."/C${mixes[1]}_${mixes[2]}_${mixes[3]}"; + } + if($configParams{"VQ_clust"} =~ /^[tT]/){ + $tOptStr="-t"; $lin=0; + }else{ + $tOptStr=""; $lin=1; + } + chop($nOptStr); + chop($codebook); + $codebook=$codebook."cb"; + if (-f $codebook){ + print "$codebook already exists, overwrite using HQuant (Y/N)?:"; + chop($ans = ); + }else{ + $ans=Y; + } + if ($ans =~ /^[yY]/){ + print "\nConstructing a VQ codebook\n"; + if( $lin ){ + print "WARNING - Go and get a coffee, this will take some time\n"; + } + system("$HQUANT -d $aOptStr -C $hquantConf -D $nOptStr $tOptStr -T 1 $codebook $srcDir/tr*.mfc"); + } + system("echo copying $codebook codebooks/currentCodebook"); + system("cp $codebook codebooks/currentCodebook"); +} + +#--------------------------------------------------------------- +# HInit: Calls initialisation tool HInit for each HMM in hmmList +#--------------------------------------------------------------- +sub HInit { + # Get arguments + local($labDir,$protoName,$hmmList) = @_; + local($tgtDir)="hmms/hmm.0"; + local($srcDir)="proto"; + + system("echo \"\n\n$MAKEPROTO protoconfs/$protoName\""); + system("$MAKEPROTO protoconfs/$protoName"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HInit")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HInit for HMM ",$_,"\n"); + system("($HINIT $aOptStr -i 10 -L $labDir -l $_ -o $_ $macroStr -C $hinitConf -D -M $tgtDir -T 1 $srcDir/$_ $dataFiles)"); + } + close(HMMLIST); + } +} + +#----------------------------------------------------------------------- +# HRest: Calls isolated re-estimation tool HRest for each HMM in hmmList +#----------------------------------------------------------------------- +sub HRest { + # Get arguments + local($labDir,$hmmList) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms/hmm.0"; + $tgtDir="hmms/hmm.1"; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HRest"); + + if (&TestDirEmpty($tgtDir,"tgt","HRest")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HRest for HMM ",$_,"\n"); + system("($HREST $aOptStr -u tmvw -w 3 -v 0.05 -i 10 -L $labDir -l $_ -C $hrestConf $macroStr -D -M $tgtDir -T 1 $srcDir/$_ $dataFiles)"); + } + close(HMMLIST); + } +} + +#------------------------------------------------------------------------- +# HERest: Calls embedded re-estimation tool HERest on all HMMs in hmmList +# for the required number of iterations +#------------------------------------------------------------------------- +sub HERest { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i); + + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.2"; + $tmpDir="hmms/tmp"; + + &TestDirEmpty($srcDir,"src","HERest"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HERest")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("($HEREST $aOptStr -w 3 -v 0.05 -C $herestConf -u tmvw $cOptStr -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 $hmmList $dataFiles)"); + if ($numIters > 1){ + system("cp $tgtDir/* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + } + $i = unlink(<$tmpDir/*>); + print "Removed $i files from $tmpDir\n"; + } +} + + +#------------------------------------------------------------------ +# HVite: Calls Viterbi recognition tool HVite using HMMs in hmmList +# and test files in testSet and network +#------------------------------------------------------------------ +sub HVite { + # Get arguments + local($net,$labDir,$hmmVocab,$hmmList,$testSet) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms/hmm.2"; + $tgtDir="test"; + + &TestDirEmpty($srcDir,"src","HVite"); + + $dataFiles=$testSet; + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HVite")){ + system("($HVITE $aOptStr -C $hviteConf -d $srcDir -l test -w $net $macroStr -D -L $tgtDir -t 300.0 -T 1 $pOptStr -s 0.0 $hmmVocab $hmmList $dataFiles)"); + } + system("$HRESULTS $aOptStr -s -L $labDir $hmmList test/*.rec"); +} + +#-------------------------------------------------------------- +# HViteAudio: Calls Viterbi recognition tool HVite taking input +# directly from the machine audio +#-------------------------------------------------------------- +sub HViteAudio { + # Get arguments + local($hmmVocab,$hmmList,$net) = @_; + local($srcDir,$tgtDir,$conf,$carryOn); + + $srcDir="hmms/hmm.2"; + $tgtDir="test"; + $conf="toolconfs/hvite.conf"; + $carryOn=1; + + &TestDirEmpty($srcDir,"src","HVite"); + + $proc=`ps`; + if( $proc =~ /.*HVite.*/ ){ + die "ERROR: There is an HVite process running already\n"; + }else{ + print "*****************************************\n"; + print "* At the READY[x]> prompt *\n"; + print "* Press rtn to start/stop speaking *\n"; + print "* Press any key followed by rtn to exit *\n"; + print "*****************************************\n\n"; + system("($HVITE -A -T 1 -t 150.0 -g -n 3 5 -e -i outaudio -C $conf -d $srcDir -w $net -p -10.0 -s 5.0 $hmmVocab $hmmList)&"); + @ps=split(/HVite/, `ps`); + @pid=split(/ +/, $ps[0]); + + while ($carryOn) { + $ans = ; + if ($ans =~ /^\n/){ + kill 16, $pid[$#pid - 2]; + }else{ + kill 9, $pid[$#pid - 2]; + $carryOn=0; + } + } + } +} + + +#------------------------------------------------------------------------- +# HERestPar: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList hmmList for the required number of +# iterations +#------------------------------------------------------------------------- +sub HERestPar { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$accOrDataFiles,$parNum); + + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.2"; + $accDir="accs/hmm.2"; + $tmpDir="hmms/tmp"; + $parNum=1; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HERest - parallel"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HERest - parallel")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("($HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 $hmmList $accOrDataFiles)"); + $parNum=0; + $accOrDataFiles=$accDir."/HER1.acc"; + system("($HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 $hmmList $accOrDataFiles)"); + if ($numIters > 1){ + print "\n\n"; + system("echo \"cp $tgtDir/* $tmpDir\""); + system("cp $tgtDir/* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + $i = unlink(<$tmpDir/*>); + print "Removed $i files from $tmpDir\n"; + } +} + + + +#------------------------------------------------------------------------- +# HSmooth: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList followed by the deleted interpolation +# tool HSmooth +#------------------------------------------------------------------------- +sub HSmooth { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$j,$dataList,$dataListStub); + + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.2"; + $accDir="accs/hmm.2"; + $tmpDir="hmms/tmp"; + $dataListStub="lists/dataList"; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HSmooth"); + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HSmooth")){ + $i=1; + while($i<=$numIters){ + $j=1; + while($j<=3){ + $dataList=$dataListStub.$j; + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("($HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $j -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 -S $dataList $hmmList)"); + $j++; + } + $parNum=0; + $accOrDataFiles=$accDir."/HER*.acc"; + system("($HSMOOTH $aOptStr -C $hsmoothConf -d $srcDir $macroStr -D -M $tgtDir -T 1 $hmmList $accOrDataFiles)"); + if ($numIters > 1){ + print "\n\n"; + system("echo \"cp $tgtDir/* $tmpDir\""); + system("cp $tgtDir/* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + $i = unlink(<$tmpDir/*>); + print "Removed $i files from $tmpDir\n"; + } +} + +#------------------------------------ +# HLEd: Invokes the label editor HLEd +#------------------------------------ +sub HLEd { + # Get arguments + local($srcFmt,$labDir,$hmmList,$ledFile,$labFiles) = @_; + + if (&TestDirEmpty($labDir,"tgt","HLEd")){ + system("$HLED $aOptStr $srcFmt -l $labDir -n $hmmList -D -T 1 $ledFile $labFiles"); + } +} + +#---------------------------------------------------------------------------- +# HList: Invokes HList to display the headers of all parameterised data files +# created for training together with the 1st 10 lines of the 1st file. +#---------------------------------------------------------------------------- +sub HList { + local($tr1fname)="data/train/tr1.mfc"; + + print (STDOUT "Display some of the data files\n"); + print (STDOUT "This demonstrates the use of HList\n"); + + unless(-r $tr1fname){ + die "Cannot read file $tr1fname\n"; + } + print (STDOUT"\n\nTraining data file headers\n"); + system("$HLIST $aOptStr -D -h -z data/train/tr*.mfc"); + print (STDOUT "\n\nFirst 10 frames of tr1.mfc (with deltas appended)\n"); + system("$HLIST -aOptStr -e 10 $tr1fname"); +} diff --git a/samples/HTKDemo/runDemo.pl b/samples/HTKDemo/runDemo.pl new file mode 100755 index 0000000..651643f --- /dev/null +++ b/samples/HTKDemo/runDemo.pl @@ -0,0 +1,829 @@ +#!/usr/local/bin/perl + +# Global Variables +$trDataFiles="train.scr"; # Parameterised training data files +$teDataFiles="test.scr"; # Parameterised test data files +$dataFiles=$trDataFiles; # Pointer to parameterised data files + +$HHED="HHEd"; +$HLED="HLEd"; +$HCOPY="HCopy"; +$HLIST="HList"; +$HINIT="HInit"; +$HREST="HRest"; +$HEREST="HERest"; +$HQUANT="HQuant"; +$HSMOOTH="HSmooth"; +$HRESULTS="HResults"; +$HVITE="HVite"; +$MAKEPROTO=".\\MakeProtoHMMSet"; + +$numIters=1; # Number of training iterations +$traceTools=0; # Display tool call tracing +$monLabDir="labels\\bcplabs\\mon"; # Dir for monophone label files +$triLabDir="labels\\bcplabs\\tri"; # Dir for triphone labels +$lbiLabDir="labels\\bcplabs\\lbi"; # Dir for left biphone labels +$rbiLabDir="labels\\bcplabs\\rbi"; # Dir for right biphone labels +$labDir=$monLabDir; # Pointer to relevant labels dir +$monEdFile="edfiles\\edlabs.led"; # HLEd ed file to produce labels +$triEdFile="edfiles\\edtlabs.led"; # HLED ed file for tri labels +$lbiEdFile="edfiles\\edllabs.led"; # HLED ed file for lbi labels +$rbiEdFile="edfiles\\edrlabs.led"; # HLED ed file for rbi labels +$edFile=$monEdFile; # Pointer to relevant ed file +$contDepPlainhs="edfiles\\contDepPlainhs.hed"; # HHEd ed file for PLAINHS tris +$triSharedhsM1="edfiles\\triSharedhsM1.hed"; # HHEd ed file for SHAREDHS tris +$lbiSharedhsM1="edfiles\\lbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS lbis +$rbiSharedhsM1="edfiles\\rbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS rbis +$triTiedState="edfiles\\triTiedState.hed"; # HHEd ed file for tied state tris +$lbiTiedState="edfiles\\lbiTiedState.hed"; # HHEd ed file for tied state lbis +$rbiTiedState="edfiles\\rbiTiedState.hed"; # HHEd ed file for tied state rbis +$contDepTiedhsS1="edfiles\\contDepTiedhsS1.hed"; # HHEd ed file for TIEDHS S1 +$contDepTiedhsS3="edfiles\\contDepTiedhsS3.hed"; # HHEd ed file for TIEDHS S3 +$contDepTiedhs=""; # Pointer to HHEd ed file for TIEDHS +$hhedscript=""; # Pointer to HHEd ed file for TIEDHS tris +$monTiedhsS1="edfiles\\monTiedhsS1.hed"; # HHEd ed file for TIEDHS mons S1 +$monTiedhsS3="edfiles\\monTiedhsS3.hed"; # HHEd ed file for TIEDHS mons S3 +$monTiedhs=""; # Pointer to HHEd ed file for TIEDHS mons +$monSharedhsM1="edfiles\\monSharedhsM1.hed";# HHEd ed file for SHAREDHS mons M1 +$monSharedhsM2="edfiles\\monSharedhsM2.hed";# HHEd ed file for SHAREDHS mons M2 +$monHmmList="lists\\bcplist"; # List of monophones +$contDepHmmList="lists\\contDepList"; # List of +$hmmList=$monHmmList; # Pointer to relevant HMM list +$monHmmVocab="lists\\bcpvocab"; # Vocab file for monophones +$triHmmVocab="lists\\triVocab"; # Vocab file for triphones +$lbiHmmVocab="lists\\lbiVocab"; # Vocab file for left biphones +$rbiHmmVocab="lists\\rbiVocab"; # Vocab file for right biphones +$hmmVocab=$monHmmVocab; # Pointer to relevant HMM vocab +$srcFmt=""; # Source file format +$triConv=0; # Convert to triphones? +$configParams; # Global store of config parameters +$hrestConf="toolconfs\\hrest.conf"; # HRest conf file +$hinitConf="toolconfs\\hinit.conf"; # HInit conf file +$hcopyConf="toolconfs\\hcopy.conf"; # HCopy conf file +$hhedConf="toolconfs\\hhed.conf"; # HHEd conf file +$herestConf="toolconfs\\herest.conf"; # HERest conf file +$hsmoothConf="toolconfs\\hsmooth.conf"; # HSmooth conf file +$hviteConf="toolconfs\\hvite.conf"; # HVite conf file +$hquantConf="toolconfs\\hquant.conf"; # HQuant conf file +$macroStr=""; # String for tool -H option, either "-H file" or "" +$monNetwork="networks\\monLattice"; # Monophone network +$triNetwork="networks\\triLattice"; # Triphone network +$lbiNetwork="networks\\lbiLattice"; # Left biphone network +$rbiNetwork="networks\\rbiLattice"; # Right biphone network +$network=$monNetwork; # Pointer to recognition network +$cOptStr=""; +$pOptStr=""; +$aOptStr=""; +$contDep=""; + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +$NT_dir = `cd`; +$NT_dir =~ tr/a-z/A-Z/; +chomp($NT_dir); + +$dir_pos = index($NT_dir, "HTKDEMO"); +$get_dir = substr($NT_dir, $dir_pos, 7); + + +($get_dir =~ "HTKDEMO") || die "Must be in directory HTKDemo to run this script\n"; +($#ARGV == 0) || die "USAGE: runDemo DemoConfigFile\n"; + +&ReadTCF(); +$nS=$configParams{"nStreams"}; +$cK=$configParams{"covKind"}; + +&SetToolConfs(); + +$numIters=$configParams{"HERest_Iter"}; + +if($configParams{"Clean_up"} =~ /^[yY]/){ + &CleanUp(); +} + +if($configParams{"Trace_tool_calls"} =~ /^[yY]/){ + $aOptStr="-A"; +} + +#*********************** PRE TRAINING ************************ + +if($configParams{"HCopy"} =~ /^[yY]/){ + &HCopy("data\\train", "lists\\trainFileStubs"); + &HCopy("data\\test", "lists\\testFileStubs"); +} +if($configParams{"HList"} =~ /^[yY]/){ + &HList(); +} +if($configParams{"HQuant"} =~ /^[yY]/){ + &HQuant(); +} +if($nS==1){ + $contDepTiedhs = $contDepTiedhsS1; + $monTiedhs = $monTiedhsS1; +}else{ + $contDepTiedhs = $contDepTiedhsS3; + $monTiedhs = $monTiedhsS3; +} + +#*************************** TRAINING ************************ +if($configParams{"Context"} =~ /^[tTlLrR]/){ + print "Has the appropriate monophone system been generated Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + }else{ + $hmmList=$monHmmList; + &MkStdMonSys(); + } + if($configParams{"Context"} =~ /^[tT]/){ + $contDep="tri"; + $network=$triNetwork; + $hmmVocab=$triHmmVocab; + $labDir=$triLabDir; + $edFile=$triEdFile; + }elsif($configParams{"Context"} =~ /^[lL]/){ + $contDep="lbi"; + $network=$lbiNetwork; + $hmmVocab=$lbiHmmVocab; + $labDir=$lbiLabDir; + $edFile=$lbiEdFile; + }elsif($configParams{"Context"} =~ /^[rR]/){ + $contDep="rbi"; + $network=$rbiNetwork; + $hmmVocab=$rbiHmmVocab; + $labDir=$rbiLabDir; + $edFile=$rbiEdFile; + } + $hmmList=$contDepHmmList; + &MkContDepSys(); +}else{ + $network=$monNetwork; + $hmmList=$monHmmList; + $hmmVocab=$monHmmVocab; + &MkMonSys(); +} + +#*************************** TESTING ************************ +if($configParams{"hsKind"} =~ /^[pPsS]/){ + $pOptStr="-p 5.0"; +}else{ + $pOptStr="-p -1.0"; +} +if($configParams{"direct_audio"} =~ /^[yY]/){ + &HViteAudio($hmmVocab,$hmmList,$network); +}elsif($configParams{"HVite"} =~ /^[yY]/){ + print "\nTesting on the training set\n"; + $dataFiles=$trDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); + system("del /Q test\\*"); + print "\nTesting on the test set\n"; + $dataFiles=$teDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#---------------------------------------------- +# MkContDepSys: make a context dependent system +#---------------------------------------------- +sub MkContDepSys { + local($i,$mmix)=0; + + unless($configParams{"covKind"} =~ /^[dD]/){ + die "Can't make context dependent from full covariance monophones\n"; + } + if ($configParams{"hsKind"} =~ /^[pPsS]/){ + for ($i=1; $i<=$nS; $i++){ + if ($mixes[$i] > 1){ + $mmix=1; + } + } + } + unless($mmix == 0){ + die "Can't make context dependent from multiple mixture monophones\n"; + } + print ("WARNING: Monophones should have no parameter sharing\n"); + $srcDir="hmms\\hmm.2"; + $tgtDir="hmms\\hmm.1"; + #$labFiles="$monLabDir\\*"; + $labFiles="monlabs.scr"; + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + system("del /Q hmms\\hmm.2\\*"); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + if($configParams{"TiedState"} =~ /^[yY]/){ + $hhedscript="${contDep}TiedState"; + &HHEd($srcDir,$tgtDir,$hmmList,$$hhedscript); + }else{ + $hhedscript="${contDep}SharedhsM1"; + &HHEd($srcDir,$tgtDir,$hmmList,$$hhedscript); + } + }elsif($configParams{"hsKind"} =~ /^[pPdD]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + system("del /Q hmms\\hmm.2\\*"); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + &HHEd($srcDir,$tgtDir,$hmmList,$contDepTiedhs); + $cOptStr="-c 50.0"; + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + }elsif($configParams{"HSmooth"} =~ /^[yY]/){ + &HSmooth($numIters,$labDir,$hmmList); + } +} +sub AddMixNums { + local($i); + + for ($i=1; $i<=$nS; $i++){ + if($configParams{"hsKind"} =~ /^[tT]/){ + $protoName=$protoName."1"; + if( $i != $nS ){ + $protoName=$protoName."_"; + } + }else{ + $protoName=$protoName.$mixes[$i]; + if( $i == $nS ){ + chop( $protoName ); + }else{ + $protoName=$protoName."_"; + } + } + } +} + +#---------------------------------- +# MkMonSys: make a monophone system +#---------------------------------- +sub MkMonSys { + local($fromProto)=0; + + $protoName="proto_s${nS}_m"; + &AddMixNums(); + if($configParams{"hsKind"} =~ /^[dD]/){ + $protoName=$protoName."_vq.pcf"; + }else{ + $protoName=$protoName."_${cK}c.pcf"; + } +(-f "protoconfs\\$protoName")||die "Cannot find proto config file protoconfs\\$protoName\n"; + + #$labFiles="tidata\\*.phn"; + $labFiles="tidata.scr"; + $srcFmt="-G TIMIT"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + if($configParams{"HInit"} =~ /^[yY]/){ + &HInit($labDir,$protoName,$hmmList); + } + if($configParams{"HRest"} =~ /^[yY]/){ + &HRest($labDir,$hmmList); + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + } + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.0"; + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monSharedhsM1); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monTiedhs); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + } +} + +#---------------------------------------------- +# MkStdMonSys: make a standard monophone system +#---------------------------------------------- +sub MkStdMonSys { + #$labFiles="tidata\\*.phn"; + $labFiles="tidata.scr"; + $srcFmt="-G TIMIT"; + + $protoName="proto_s${nS}_m"; + if($configParams{"hsKind"} =~ /^[dD]/){ + &AddMixNums(); + $tmp=$protoName."_vq.pcf"; + $protoName = $tmp; + }else{ + $protoName="proto_s${nS}_m1_dc.pcf"; + } +(-f "protoconfs\\$protoName")||die "Cannot find proto config file protoconfs\\$protoName\n"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + + &CleanUp(); + + &HInit($monLabDir,$protoName,$hmmList); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); +} + +#------------------------------------------ +# CleanUp: Clear model and file directories +#------------------------------------------ +sub CleanUp { + print "Cleaning up directories\n"; + system("del /Q hmms\\hmm.0\\*"); + system("del /Q hmms\\hmm.1\\*"); + system("del /Q hmms\\hmm.2\\*"); + system("del /Q hmms\\tmp\\*"); + system("del /Q test\\*"); + system("del /Q accs\\hmm.2\\*"); + system("del /Q proto\\*"); + print "Done cleaning\n"; +} + +#----------------------------------------------------------- +# SetToolConfs: Set tool configuration files for discrete or +# continuous density HMMs +#----------------------------------------------------------- +sub SetToolConfs { + local($sysId); + + if($configParams{"hsKind"} =~ /^[dD]/){ + $sysId=VQ; + }else{ + $sysId=CD; + } + system("copy toolconfs\\hinit${sysId}.conf toolconfs\\hinit.conf"); + system("copy toolconfs\\hrest${sysId}.conf toolconfs\\hrest.conf"); + system("copy toolconfs\\herest${sysId}.conf toolconfs\\herest.conf"); + system("copy toolconfs\\hsmooth${sysId}.conf toolconfs\\hsmooth.conf"); + system("copy toolconfs\\hvite${sysId}.conf toolconfs\\hvite.conf"); + if($configParams{"direct_audio"} =~ /^[yY]/){ + system("copy toolconfs\\hcopyDA.conf toolconfs\\hcopy.conf"); + system("copy toolconfs\\hviteDA.conf toolconfs\\hvite.conf"); + }else{ + system("copy toolconfs\\hcopyFB.conf toolconfs\\hcopy.conf"); + } +} + + +#-------------------------------------------------------------------- +# ReadTCF: Reads the Test Config File and sets parameters accordingly +#-------------------------------------------------------------------- +sub ReadTCF { + +local($validData,$param,$val)=0; + +open(CONFIG, "configs/$a"); #read tcf from STDIN + +while(<>){ + if(/\/ || /\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if ($param =~ /nMixes/){ + @mixes=split(/ +/, $_); + } + $val =~ tr\A-Z\a-z\; + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Test Config File Read + ===================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<< +$param,$val +. + +} +#------------------------------------------------------------------- +# TestDirEmpty: Tests if directory is empty and prompts user for the +# deletion of any files found +#------------------------------------------------------------------- +sub TestDirEmpty { + # Get arguments + local($dirName, $srcOrTgt, $tool) = @_; + local(@nFiles,$rtnVal); + + $rtnVal=1; + opendir(DIR,$dirName) || die "Can't open $dirName\n"; + @nFiles = grep(!/^\./, readdir(DIR)); #Forget about . files + if($nFiles[0]){ + if($srcOrTgt eq "tgt"){ + print "\n$dirName not empty, overwrite using $tool Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $dirName\n"; + system("del /Q $dirName\\*"); + $rtnVal=1; + }else{ + print "\nDirectory $dirName unaltered, skipping to next test\n"; + $rtnVal=0; + } + } + }else{ + if($srcOrTgt eq "src"){ + die "Source Directory Empty $dirName\n"; + } + } + $rtnVal; +} + +#------------------------------------------------------------------- +# SetMacroStr: Generate -H option string dependent on whether source +# directory contains a macro file +#------------------------------------------------------------------- +sub SetMacroStr { + # Get arguments + local($srcDir) = @_; + + if (-r $srcDir."\\newMacros"){ + $macroStr = "-H ".$srcDir."\\newMacros"; + }else{ + $macroStr = ""; + } +} + +#************************** HTK Tool Functions ******************************** + +#-------------------------------------------------- +# HHEd: Calls HHEd to perform editing on the HMMSet +#-------------------------------------------------- +sub HHEd { + # Get arguments + local($srcDir,$tgtDir,$hmmList,$hedFile) = @_; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HHEd - $hedFile"); + if (&TestDirEmpty($tgtDir,"tgt","HHEd - $hedFile")){ + system("$HHED $aOptStr -C $hhedConf -D -d $srcDir $macroStr -M $tgtDir $hedFile $hmmList"); + } +} + +#------------------------------------------------------------------------- +# HCopy: Calls HCopy to convert TIMIT data files to HTK parameterised ones +#------------------------------------------------------------------------- +sub HCopy { + local($tgtDir,$fileStubList)=@_; + + local($srcDir)="tidata"; + + &TestDirEmpty($srcDir,"src","HCopy"); + if (&TestDirEmpty($tgtDir,"tgt","HCopy")){ + open(FILESTUBLIST, $fileStubList); + while() { # read HMM name into $_ + chop($_); + system("$HCOPY $aOptStr -C $hcopyConf -D $srcDir\\$_.adc $tgtDir\\$_.mfc"); + } + } +} + +#------------------------------------------------------ +# HQuant: Calls HQuant to produce a 64 code VQ codebook +#------------------------------------------------------ +sub HQuant { + local($srcDir)="data\\train"; + local($tgtDir)="codebooks"; + local($nOptStr,$tOptStr,$codebook,$lin); + + &TestDirEmpty($srcDir,"src","HQuant"); + if ($nS==1){ + $nOptStr="-s 1 -n 1 $mixes[1]"; + $codebook=$tgtDir."\\C${mixes[1]}"; + }else{ + $nOptStr="-s 3 -n 1 $mixes[1] -n 2 $mixes[2] -n 3 $mixes[3]"; + $codebook=$tgtDir."\\C${mixes[1]}_${mixes[2]}_${mixes[3]}"; + } + if($configParams{"VQ_clust"} =~ /^[tT]/){ + $tOptStr="-t"; $lin=0; + }else{ + $tOptStr=""; $lin=1; + } + chop($nOptStr); + chop($codebook); + $codebook=$codebook."cb"; + if (-f $codebook){ + print "$codebook already exists, overwrite using HQuant (Y/N)?:"; + chop($ans = ); + }else{ + $ans=Y; + } + if ($ans =~ /^[yY]/){ + print "\nConstructing a VQ codebook\n"; + if( $lin ){ + print "WARNING - Go and get a coffee, this will take some time\n"; + } + #system("$HQUANT -d $aOptStr -C $hquantConf -D $nOptStr $tOptStr -T 1 -S $codebook $srcDir\\tr*.mfc"); + system("$HQUANT -d $aOptStr -C $hquantConf -D $nOptStr $tOptStr -T 1 -S $trDataFiles $codebook"); + } + system("echo copying $codebook codebooks\\currentCodebook"); + system("copy $codebook codebooks\\currentCodebook"); +} + +#--------------------------------------------------------------- +# HInit: Calls initialisation tool HInit for each HMM in hmmList +#--------------------------------------------------------------- +sub HInit { + # Get arguments + local($labDir,$protoName,$hmmList) = @_; + local($tgtDir)="hmms\\hmm.0"; + local($srcDir)="proto"; + + system("echo \"\n\nperl $MAKEPROTO protoconfs\\$protoName\""); + system("perl $MAKEPROTO protoconfs\\$protoName"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HInit")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HInit for HMM ",$_,"\n"); + #system("($HINIT $aOptStr -i 10 -L $labDir -l $_ -o $_ $macroStr -C $hinitConf -D -M $tgtDir -T 1 -S $dataFiles $srcDir\$_)"); + system("$HINIT $aOptStr -i 10 -L $labDir -l $_ -o $_ $macroStr -C $hinitConf -D -M $tgtDir -T 1 -S $dataFiles $srcDir/$_"); + } + close(HMMLIST); + } +} + +#----------------------------------------------------------------------- +# HRest: Calls isolated re-estimation tool HRest for each HMM in hmmList +#----------------------------------------------------------------------- +sub HRest { + # Get arguments + local($labDir,$hmmList) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms\\hmm.0"; + $tgtDir="hmms\\hmm.1"; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HRest"); + + if (&TestDirEmpty($tgtDir,"tgt","HRest")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HRest for HMM ",$_,"\n"); + system("($HREST $aOptStr -u tmvw -w 3 -v 0.05 -i 10 -L $labDir -l $_ -C $hrestConf $macroStr -D -M $tgtDir -T 1 -S $dataFiles $srcDir\\$_)"); + } + close(HMMLIST); + } +} + +#------------------------------------------------------------------------- +# HERest: Calls embedded re-estimation tool HERest on all HMMs in hmmList +# for the required number of iterations +#------------------------------------------------------------------------- +sub HERest { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i); + + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.2"; + $tmpDir="hmms\\tmp"; + + &TestDirEmpty($srcDir,"src","HERest"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HERest")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("$HEREST $aOptStr -w 3 -v 0.05 -C $herestConf -u tmvw $cOptStr -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 -S $dataFiles $hmmList"); + if ($numIters > 1){ + system("copy $tgtDir\\* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + } + system("del /Q $tmpDir\\*"); + } +} + + +#------------------------------------------------------------------ +# HVite: Calls Viterbi recognition tool HVite using HMMs in hmmList +# and test files in testSet and network +#------------------------------------------------------------------ +sub HVite { + # Get arguments + local($net,$labDir,$hmmVocab,$hmmList,$testSet) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms\\hmm.2"; + $tgtDir="test"; + + &TestDirEmpty($srcDir,"src","HVite"); + + $dataFiles=$testSet; + + &SetMacroStr($srcDir); + + if (-e "recout.mlf"){ + system("del /Q recout.mlf"); + } + + + if (&TestDirEmpty($tgtDir,"tgt","HVite")){ + system("$HVITE $aOptStr -C $hviteConf -d $srcDir -l test -i recout.mlf -w $net $macroStr -D -L $tgtDir -t 300.0 -T 1 $pOptStr -s 0.0 -S $dataFiles $hmmVocab $hmmList"); + } + #system("$HRESULTS $aOptStr -s -L $labDir $hmmList test\\*.rec"); + system("$HRESULTS $aOptStr -s -L $labDir $hmmList recout.mlf"); +} + +#-------------------------------------------------------------- +# HViteAudio: Calls Viterbi recognition tool HVite taking input +# directly from the machine audio +#-------------------------------------------------------------- +sub HViteAudio { + # Get arguments + local($hmmVocab,$hmmList,$net) = @_; + local($srcDir,$tgtDir,$conf,$carryOn); + + $srcDir="hmms\\hmm.2"; + $tgtDir="test"; + $conf="toolconfs\\hvite.conf"; + $carryOn=1; + + &TestDirEmpty($srcDir,"src","HVite"); + + if( `ps | grep HVite` ){ + die "ERROR: There is an HVite process running already\n"; + }else{ + print "*****************************************\n"; + print "* At the READY[x]> prompt *\n"; + print "* Press rtn to start\stop speaking *\n"; + print "* Press any key followed by rtn to exit *\n"; + print "*****************************************\n\n"; + system("($HVITE -A -T 1 -t 150.0 -g -n 3 5 -e -i outaudio -C $conf -d $srcDir -w $net -p -10.0 -s 5.0 $hmmVocab $hmmList)&"); + @pid=split(/ +/, `ps | grep HVite`); + + while ($carryOn) { + $ans = ; + if ($ans =~ /^\n/){ + kill 16, $pid[1]; + }else{ + kill 9, $pid[1]; + $carryOn=0; + } + } + } +} + + +#------------------------------------------------------------------------- +# HERestPar: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList hmmList for the required number of +# iterations +#------------------------------------------------------------------------- +sub HERestPar { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$accOrDataFiles,$parNum); + + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.2"; + $accDir="accs\\hmm.2"; + $tmpDir="hmms\\tmp"; + $parNum=1; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HERest - parallel"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HERest - parallel")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("$HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 -S $accOrDataFiles $hmmList"); + $parNum=0; + $accOrDataFiles=$accDir."\\HER1.acc"; + system("$HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 $hmmList $accOrDataFiles "); + if ($numIters > 1){ + print "\n\n"; + system("echo \"copy $tgtDir\\* $tmpDir\""); + system("copy $tgtDir\\* $tmpDir\\"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + system("del /Q $tmpDir\\*"); + } +} + + + +#------------------------------------------------------------------------- +# HSmooth: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList followed by the deleted interpolation +# tool HSmooth +#------------------------------------------------------------------------- +sub HSmooth { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$j,$dataList,$dataListStub); + + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.2"; + $accDir="accs\\hmm.2"; + $tmpDir="hmms\\tmp"; + $dataListStub="lists\\dataList"; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HSmooth"); + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HSmooth")){ + $i=1; + while($i<=$numIters){ + $j=1; + while($j<=3){ + $dataList=$dataListStub.$j; + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("$HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $j -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 -S $dataList $hmmList"); + $j++; + } + $parNum=0; + $accOrDataFiles="accs.scr"; + system("$HSMOOTH $aOptStr -C $hsmoothConf -d $srcDir $macroStr -D -M $tgtDir -T 1 -S accs.scr $hmmList"); + if ($numIters > 1){ + print "\n\n"; + system("echo \"copy $tgtDir\\* $tmpDir\""); + system("copy $tgtDir\\* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + system("del /Q $tmpDir\\*"); + } +} + +#------------------------------------ +# HLEd: Invokes the label editor HLEd +#------------------------------------ +sub HLEd { + # Get arguments + local($srcFmt,$labDir,$hmmList,$ledFile,$labFiles) = @_; + + if (&TestDirEmpty($labDir,"tgt","HLEd")){ + system("$HLED $aOptStr $srcFmt -l $labDir -n $hmmList -D -T 1 -S $labFiles $ledFile"); + } +} + +#---------------------------------------------------------------------------- +# HList: Invokes HList to display the headers of all parameterised data files +# created for training together with the 1st 10 lines of the 1st file. +#---------------------------------------------------------------------------- +sub HList { + local($tr1fname)="data\\train\\tr1.mfc"; + + print (STDOUT "Display some of the data files\n"); + print (STDOUT "This demonstrates the use of HList\n"); + + unless(-r $tr1fname){ + die "Cannot read file $tr1fname\n"; + } + print (STDOUT"\n\nTraining data file headers\n"); + system("$HLIST $aOptStr -D -h -z -S $trDataFiles"); + print (STDOUT "\n\nFirst 10 frames of tr1.mfc (with deltas appended)\n"); + system("$HLIST -aOptStr -e 10 $tr1fname"); +} diff --git a/samples/HTKDemo/test.scr b/samples/HTKDemo/test.scr new file mode 100755 index 0000000..7d160b8 --- /dev/null +++ b/samples/HTKDemo/test.scr @@ -0,0 +1,3 @@ +data\test\te1.mfc +data\test\te2.mfc +data\test\te3.mfc diff --git a/samples/HTKDemo/tidata.scr b/samples/HTKDemo/tidata.scr new file mode 100755 index 0000000..4ff728b --- /dev/null +++ b/samples/HTKDemo/tidata.scr @@ -0,0 +1,10 @@ +tidata\te1.phn +tidata\te2.phn +tidata\te3.phn +tidata\tr1.phn +tidata\tr2.phn +tidata\tr3.phn +tidata\tr4.phn +tidata\tr5.phn +tidata\tr6.phn +tidata\tr7.phn diff --git a/samples/HTKDemo/tidata/te1.adc b/samples/HTKDemo/tidata/te1.adc new file mode 100755 index 0000000000000000000000000000000000000000..cfddb77be8a3590e74115b1ba4116456c19d6fcd GIT binary patch literal 79476 zcmZ6!1-w*6*!Vwl&h8DmyO9#4LpmfCMFgZ9L;(>&6cq#kF;PJf1*D_}M3iok20=dLux{8$aSFPGGnrvjye zA%0ij5s0M6P^@pCcc~$DL%d5JcS$L^FJ)Z`2d{%i?zor3P}-B1v?1@(y5MX0b0y@y z<`T%{&$TLbr0;ky@n^1-t0C_KiBL)4m0!}PD=RI?%TZB29fl^>cf3b|#g!8Z2K;g~ zm%9REygzAQU=RIIJMO;2R%&QUOPkVOx*`%ZENdyxg9 zlRW=VP8`NkUSM-@IjE(sqGUiy#xuiuVSQdeFE+Bpc~t;glqNs6@Z z{+vv@ktTh(TL1T(v>|=F*5i_FZ2&a#k~Zb_ACwMGch6zvC>xg`X-T9)dUMorJveOR z^5AMZ%1i(9TgnAcL*&H4BcDzVqu}Hqkx~lDluzNKYe_gMbaC_+=mk%yA)oR@$_b|& zM)EFw$X)5($)ntHJ;%REd#56p7n4_=bue2jChl9W@zg)?9 zpH6fB*PfJi!E8?o`e z9enaD&Pjn?`f{|2>v%^!fyMF2LH)mJ>YfNC1kSjeNQpSyLRD#3|k#=f7`pETo)kUurq}Iz1GZ z0%<3Xp}QyLMAOP$*R!SP51rNvNco~7uX)nQ0@Q^=w7dYfS z4qtqXNWb#u+7c=S|DPpyZAd-o$MN3v?(R9+b+8B~juukV;USoYV>KN;r5!0F5Xv`4 zg*a8*C~$qryF3-T%1fvq_oQ9-a?jjdX-lAUbsbHml>C;OjtbJJgCi~l(uU)(loG$v z`4{qC{$y0jr^tfqTiykRc<%z4>%n28cRyAw27%la_~OvYr<4}h9ES2u?m8@`U-=bp%iWE)C!g|EV2ZckC?|Z7 zr|wx?3WO347b)eaFPwFf=qN7lj@OQU(t`9MWu#UdI>FlcLL!y&5(uO%_Yx{N*nLKy zYb!2e4pv8B2b=Wao(g>gMhD%0v~sOEY#l7|)*MU@2Z2gzI{c+A_f5)5uktC+!~cVe z>s{=uwBj_Q^dVR~yyTm_q+o>!NEyM%QA2u{^6nLf%aw6-mNw$H(v4cFBlo1ve|Sot&hK~QMd&N_oQz2; zF*5&8zm9ToxpOT!sdnXEyKX$h=`ZzNJ5F94{iUS5gx3x-H(H$JJ4uofQdjP|UIZ?= zCoKsUQdeH`P2iW8YuUm5zu|F|b2M`NlbB4}x?$6*tm>@It^TovY3Gd1OOKDZd()<; z<-0bObfOZ8?^5wQViW$SXQ#iV9l=mI5|?&qS9%u+8z(RT0(Qs}l};6@%(_yIx=q2H%-GcB%c!6t{EjIWy3{uKrbD zQ?sJ_L6`LldTZ5obwN+jRa7bUgeq;*+FNG4DQfT7>}rlZVa7nmbLNIQZ*SXQ?T@yn z8m8*mpY2#xPIXcrsZFZ8DyZ6V-LayKoPMSfsti5SA+m$xGZEfq? z`t}QZ-1f5lYytJ8x@ZsD_4c%VO1+@w@>ffB1)l(ZUI*sgJlSgd*eP~0@3ZYRyUt$c z?zhzb!2Up+ci`V+yWFm^|JVa|qrG4w+^GN+ZrD@yZ@b4{viE5v!qdO(3A>%XZ`ciX zwY_F9+l%&J>a5^-9(t~>o&t|Fs<3(*+J;m^UIFq_R*eNu^e~=()bC%%`E{Gxjch-=^ywu9X_pIc^`=bl{(vzMoP3)fdRdduk+~gH<0e>H$An zs4GVjO3OVt1hFeyDnm!IA@<+o*x+6E#!)q4uc@>Y}=(9;rL(xY~eh ze60pSpQ>Qvsq^r43!D>3*8}x#ejfq;bI|vyy@`xmhSz^06|?PE_Fel5lGoHeW1q7x z@~xe1XbanrePohsDegA1)odAC9?5LPdtsa3R<$qK_O^=6Y44a5NPccGUI;I}k zUD_My_YS3m_Jv*wjrTM7e|m3tH+3%kiaKJO*a>EKa3ESUS|K_nnl;!Mlr}@npQb9b z?5{$4Flyif@1&Q-zvg}6rRd)JlKM>5Ls~z#x$Oee&2%)M(`PmNJ-$>M^_^M=HGWk~ z8KcM5X>|n3tYyrVRfp_&JJ=4l-@%EW;o9%W_BN=o1iq|=uBYMc0{gygW=n!cY8y3| z%^`D;wy&6L=CrwF(t&Sl`z+7X*yCmvaE>&;nmeX8BlMCiQ?d3}$a3zxQm4{R0YB zvzaNA(UyR_IqctHS<@t%kSS(9fDWJ9!ulP5NqAa9ri4AAul#OaL!DREw~BgSqH)UG zR_24?a`a5JVUWt?x2@Gc-N0MnZT3F&0{y-&q#vlu>Y$p;I9zY**p;S)SrSYL4g@XC zZS$k8r#7l8dcKb8Oqh!kdNZ^sqo*?x-$WY^G9`gIi>YtMnp@^YIF?7vR^{{poz{EC zs}9v0Q}(WHZg-mDrh{qA)yecV1E9?mGV_Xgf*wklF-UA0by$6-t3aFc z-gjQIH$Y!y%x1!dRIu7rLdCR;EXPT<3s-Iq?|Iz#O_qv##i#^%KNXv)) z*=N?l(eKST^C@jlGkZ(|BlTTI;Z8=1QuErq;?}{en%b9E4)|zk$xV(f!9oT zQGM-LDEBC+Yv!5-3=|;nrbGmDQwD`XH9=I2dQ6Vi|fLEa=2hZlY~v-UqVCuU3#ZYHkE^c zL4s*dsVk-rx?wOh-DuJx&&Ab5RZExilKl>TZoj{`S)WzAEHDK9;r#8O3pJ2Tn@wfI z!?}Y8Q&ja*57iW1((CCp_Y%FY^+{~5Z>yTa!C$dn_L-iHwN`4hnxN)@>v1%95*o3f zPOFci(F>@b7#Szw;|NCeM6(JmNRV-d4jBPPBO#>tnEL zX|Ov_>6+d>FO9#1@ib2_P~B~D(?4hwycZk`I-As3iMDE-`W&yNF}C#yG|&Q7T`$r% zwC|nM-=Lopm2c~tgTb%CpFuig@>y^lpq8t%DvhqDo9g=dNu5vUK+`Q$&D1S4axHt6 z(fOw7Vg|$At;WatjDrjRU@!kfLyxgN&~jyLc4Y9p*$qABn9oda(}=4r`suj&%eK|+ z{LJBp=--;*W}yoHYnnEK?7^@gmwASEv!dZ&Rr%E?=)eK^J^A=PS`E;>yldVz?=|m^ zZm4Uku)Q0+5p)bD1sb2ODW2ThYP$M{_qKREHSju4s&0C{KCKVyxw@i$SBU*A$&;qWxtn55oOb@4#gpn)=>ou-&C%$H^{cBQO+2Y+D! zV|20|ip|Z3OsB@G=7p~wy80&4J_kAY&`dSku{Mp>RsFYLG5lFLAzUWZ$FJ-4Rd1Sl z!7D)tv&|ef>Fq@OGCoCsRZc=$F5xXU#}Y2nBhbR{d5?7){e}9{jxlG0Il=azlv!Y& z!@jgpL)GheQRVSRv-7z{b=Uj#J^sGZ#q}^X)=n}Hf}O#mpf;m0FtcoPwOL)_I=_?yd$iR@0etK_>GK_N5OawGuvOCbbjs1v%ppE`8gPxd2N>it--W?0b`=3Q`nAAPb6omLb} z`OxIW7Sus!^w2A?csuZn{)9K@Xn%<94d=hM^X(#Z$3Xn6Do9d2I|^=&QHAtqyoXV` zs9uE~Nv&2NKX^oW#ku==(49 z>OnN(*;p(i(ZL^F^1g}s%YbSj@!~}ATEMrT@sT%SS^p)*&&DYDUR_uB)GQz^OxsUz zFG5zKy6OyerHH<)%^9r|^&(h^`%vyI zQOE`2y&OExLgbZ)acb;&?q9~kzRLRzV#EmaI0pv%!Q(Vib)F{=pi^pkR_Z>_C9nE` z$WdZjkFj$Ns-2F-I%lED5u%@Mu}Eko?<=90&}}`m-G$D%1T4wKi_M|%5F+)4M3oJp zUJY=l3hr%@nNmQVA%=-h>xL*k6B;uscO|mR2!=U1|h;@9Bm4PZMB zRRufwc9Kh;orV)9xi5KzE8rshy2s~T=p(tL5Zp`?qh|UT?UJCC;fZ9WgqHvJN)OEG zxiSDr2I|G1rUm+R+)2kh$vC+@Sv1yz%alf9a$=!S0O#HOhyicO#kp35OE|{V)x_Xw z=p`fXX=3o<>u}%YzM{185a{oM^F<`|BpAApwhM{diOg+*JKK@Bb&S?k=-K7G|BlSv zx0#`7S@`fgd=U;k$MrJYc`-J2%0vAuNU~s_Hil;s-xK+j#NE_LUO}=PrSRoSA-RPZ zmD#~q=$FL1WCK%xOfXc$QK`8v`IT!()JVrD^rXQ>7ZUZ_?jVBDn$7(B@<(m zmD-Z;jKKeRo>6jr!gj#ab!A3E zN#e+&(7Y_ah4xQE{cOmCaN7%1K^vDfxpjc!D+XwnD_MFJix&5KT;m2DQ{!m08chf8VR$(ogIB`ZiHX zZSbsuCwLV5choG!LT@z}O%+-yk1sqHO)`f#{Uk%;3H=NneIb1WkF%KCX-C@**w_wS zEwTFTvDL$|r^jqb^(Gc$InlzmcoXf=rpZ{uztOwj%pHUKR(7~4`4j1s7|3Cp=0N^Qo2TL+cS!I}Kn)>inhgXpIRdRz4L(^#C`Q`*q5~#WzSZ>1=k(&%)SR1dRIxW|LR@sn4k){;1k!V&K9hZ@h%Z!nf*w_)9R2ch| z4yj5_>3}D<(Z4c^B#(BFQi;gg17z$G{JMyQU8ApuJUxjtiG|yR9{7uED>y6!rsd!v z{={!!a*WcJ*rY7BrdkaCGQ2m&2GxgRx#(5$+KI%I3Jw=S`U*0R9>Do1a+U(5SJBvc zk$^&AUV?b8KfZ$a9IxZ)^nog^xYtFsN3&Exo2O^oB_gl)fHo;MG9^D8qD`^W5k~z% zbk$6JobGr(eYmfgwD z^(QVarAAYBJo$p!rVXD*iRl{PbKbV2R0VPc4ZOBqCht9cOm&1eo9#&CuN;x_1hOlLlXP zIq`gIPwTnlL3f*9@Z6{3-(E4t%uo3KZ<8&YW~-Ci&!!vctVH}9)Q@VE8lgU<$Li2{ ziycG+&=}u%JUm~IPcfLU5(9@N z%U%%v7A7Oo9Zk{>jUo|SZuHz8w8d_?HJNy_JL9iCzH~Q6(`)doBj4oeh2Q=qUh5FJ z*_82?1;6<{u5vb=4O>Ho^? zgML%hpJd{abq!rpYdr`3@rLTlSZS_aBHj}n_$?fJh>kgptW}Oty)NUk4RP)-~5oMc$Y$xrs(_k=J;5 z^DCa*O1StT+2(@e0U9#msuO>_iVkl@{8fY~uss^H8}keU$grIvPt=s_G&4`f@GM^; z_i&5oeWps#g}i0{>QK|rG%r!tN0weAThWv(L4VphZ|(%+g7W5b`>X0e)ZEDX%^Tq@ z)`y71W~rOxXq&3{$+^`ddR`Fx5xinX*pYC+l1sR+Mv}Rl=JoZq>MVK)nf$w^3faN0 z&0VA4paBrEwGINyKPcPSd)8m;zwEd2N)hQ_h8nqu#XF#h z>f5cRHJRnECL@-ouD+_1y~FwkJy5sPW%XTnHcyQKn(Fo?N0D_OgC&d78}e*W~9uGhd&S~Y*RvT7YoI`NyNFqinn9D`Y%tfnX3HY6b9D;5x~#V&k^71J z-`1zGhOaXtl4MqpeacOK+hYWrwBuA;eFojp##`?t`RV<>ULHN)?m<=>n7@PdfdT&? znV+dbwExf^B_q2}f5u$Gabzcrnn3Ppl^KTR3CQ-n5&RhBAm?5+mKV50-Y)~5cz!&a zx#}~!nNoiRpOcN*8@!12UuyH|dEP$1R_LS9XQ3>i``&o{4Hnm+(@&dgLE|7t&^-7O zZp}7p?Mby-7xt)D#_{TRyeZ%rUZdZG-QFWGJf9Gd)xT}g{#F1alzR zO}4p>*=(MI4;S!huH!RJBV*AM8NI~_eb1COJ~J4p$&l4DIqYdQ#6KK^nMjXF+USH}DB)2CZ;_YTujQxqzX!K;UJfs+U)9aj1v4S| zDcUspcJxtnEz&yNR>0>gsCVg&-cV$F0F(CbdVi2v`i@(=@kU_ zhA!hD@XLgr51j|jtYieYFfaFv&Z<5!kD_}cts~z=T11Bio6I%4T2*3PZ6({-)^8G; z9LgH1YJ-mZh#r9Z}xp1RDe#Z!t z8!dE%5!>3FGVj2v%*-5(WDXz~Qd$)2T*zJ_V_Xf5y`Sq8vRxlb`T@9}u+6>n3123U zPPHnjN_Y;lPW99=(<=BV`e(Fn&?QJ4eLtm0%CC`L=8T%|?e}Mg3Wl$TQipbX8+3cJ zYHjpF)z$6{Iz_ug@d<1%6|Hn)ef$zMxHQehg*@ z6N7hxPl2R6`Mm}9d38p8t}}YI$whX=1A7BK|0}-WSu>CsyGU@9k&_a%W$cv4ha8HW zzJYhr5S_6T9L|_r_9nWeB+?iS3S$>)VW(eJCH+AOTaqdzZ%eEkF6h6f8>%yAeNctj zh>F3C=!nStlyxZuqm9hls;W2Eeh6k+~xxO6KysGTY^YX5l;LGW)p}c@8iwCMK&}WK1V+Lm=zt%(OA!z zyNt$LL0`0DDJ1ofI^o?6wMzIQVRXW8s1l2B2szVU*mYtcD`DqJ9|@@fw|+Q_4jx!;lyG_dwILi z6kvqD$;|MHpcAtJ=j=9oj^f_8UV1-2ZGK87JHOY88JGp=vMgqF&?{&cd=Mn!eRLy( zS&%gq|G?`y%&yJLO&UHlfMO;(?vU%h|)Kp1GzWv&?x-OYG=-%+KslE%Z#iTmPt+F|)Kuzo`wg zZ0E72t4w1PHp$EtY{QG_h4+vFKl2A-@B8HEml4;cRv)1yb}+Ns2kSf;f4KxB>;#c| zYo7Mys!9Cu8?!HYq0~jUl~xB7%GYANC4<_I1{wJV^$m6gK)<;>tdFS3dbGTU(-IZ1;D z@+pyRS2csINe|-MM|e!X!LixQt;jq?etVfY@50!EOUxgap`9Y&AokH$HwNbC(Ydu3epwu-o1V58A>4XN!Ko;dIe3G5`!;dK|D}OGNi^xIz{uJWHnI9-N5K;pvVZv3ab6YUk%khtX^m4pZh|OSMAyD|`+)Gt?WXJ_YwWjFAU$J3ymfh5NaXpg+-P1)*P0;`%>$47^&Y=swn(=0N(l3H1a*Kqb*Adk(FfFjI)c2FCUBdHvXTt-GpZ=w zO?_-+7y4Yr%DJEH+gPQUm|y-RiVH|vQuBDEcW@f`MJGIr(?{98w#FGHP8$kr*O zq78DF4Sh2Oxh+U`@emRJNk&L1r1BlceqHR(IC%V|+6tbQymVjqSW4AKi>yJe(_j-f zqTvqNVQ^+Akd;!SfTyDxVSh)KG9rt0f&DnLbp<_e0Nu1twL~U5BN5-Dku#$CB#KRs z{>`pB+8(Nm?oH0`9caFZm0mpM#yoiR>&U)*PE=M|4It`1 zMLvHyE1xfsUs!|Jn~Ut;Y395CMt?}A>>M&y0v#}ntW_d1(+S)^qm`N1`diTVAftF4 zI3Bm{kecdb)f&<3YmC?WNKSS5-WPgQh6|S%6`~_Mqs3W4hgPYJWPbwpvoIdNhWDkQ z-(t9y0qs!$3@Xu5UbPY`c4bB4Mf%AA4!6Li9`+-IemM)Q*^!qrSjUg(aW7EI$dr}J z+0ak77%SJYS9!^pG-7V(GHu*}i!Wdq1k&=@<|MRyJ;q4`Y}}K4tB3yo06XjzF_ zX9{vv1(WB|&i_)oF3>nHBQxVZHE<@N^IyS67KInLp<+7t(*)TmgeEIX``h8)leAGE z48?o6%Q%;rru>vCjJ2vr%@jsJ67ZBlvs&=X0cX>JeKK16HX1KGcPx5Gb^=J5N8G)F zO-RMJTlg_D^Cs)Evs22@zRWC2Ml^wXVn^@7Ynh2m&6p4PE;H}4E8`J*LFNbzFrK5$ z1X@t)Dt7l0?IdykE_y&_Vq^`!g8C2OS8CuDe@Esf9#Hl$?d1e2neV>L*iMCCAT_Vh zr_Ago0?TDG)_0NmBy^PYbr(8i!1KIH`E*EFi1BiT*5!_@7m)c&*}3}&%OLY>5$;~b znq7xdcVcx@fcGBI%RK5s^x}Qslv&rC@aYmyEO;Pgv?Z$p(gI}^$b_nwD6i=$Jw2a@Q7?&BZc)~!74ghc;Ad*2?1kT|yA!-d#QorDcEM4e(BZn~6x-9e5&Cy$3Y}AK}?eo?oT3a9;KkoT0Sr9FY|Y zQX&a{$a;R6(Kpn31RqkkgsLJjGE*zECLB%xwmaY=^KK7;@+!CqY%)I=qLi!xxkm|E zGjNBtWR^{K_(=T}N+!~pU?ZzS5}={Xhs&NSnZZxP9a$anFh((%os;(5K0uLP`7Kb$ zIuf@&Kt_Scxb!Zw=puhI|12}fu55%SG6yZxl3g$f;Ft;++$^+6nv|ALX;aF|Z;x`a z_r~3m`D&>ns}E$ysqEGf7#~qm`jwe$dFJ-PNFA9IcaT4h$#f+4-0drLJB-|nxrVaB zWx-q|R=&%q6i8gV522*Y=)2uH4m$ZR)D$SBC;25cqKr&wD~ab0=0xZ#qcs7TWv2RZ zti~hS4#mpJ+6(E&?UUm~mRLJ7Coj~LT~Gp*)Hn1ZeYx3wS0}!jAUVc8x7I*bJ_sK? zYPr2=qOD|ggIn_;Ey}t9dAa>m(xy;TwA|xZ`*Ap(#E33PiOHPEok*5^%DN-b3GsR& z9l~?rgGHZ7KTfKICK7YXe7&p#l2s?!@K$nT^<;HWZr){Glsw6d-pqym%^7=^gS%2f zYNV%buGn2!FOh-YX=qb)Py+Z0jIs*o2G=d%k~JK%e&HNr`#6?a)^*{};gRmazm(Nn z8@SfQW|x2Cb1iq}{uas|is_Pja3vXNis3EF-kN7wf6@j!*b&>>0!t<_yuiiyE3#5> z264>v4F6U&K~83?iCt%{u2gTrcBY{DTc%!hBs`eSxUH z4c^>#GWC_n@@!+ybt!Yre-XL7k9REVoZexzL096EtXS>Ytn2R0-+21p3UmdC4GM98 z5^|CT1|EfpgX(}|Loyu?iCRA;9e9t`K zdl)ZzB2bSf*D(d3>H{(pPm)PG$z1gbGP@_qz06|eXG7My=21uVMY34$Fn6?6Jxo*~zDNRqzQVZ|r9PkXp_wURenNG}U< zEg3KSk*=p%6V{sX`YCIrFOk`dl0$FB_bbfAwPM}%BIZz2k-^x)tVLh4n-Nn^Wn(u$ zdcV7_gfFyR7iAAbUjLDvkM}qNDR_}+xd9Q;za~4`{%=haIQ%xf&qHRnLaQ}+Fh|rU z%o4QFLy?|3%*mG41(=H*fmA+1diF!}9C$!Q@ViEmfoy?%+{4SPh=u!#xMd2S_w)FX zJ>m2+q-h6!U1Rv3mbha!{`z>}7zp>s^0JCxIrCYQ;l?B83wD`l{Q91p*hS`#^D~#Q zMs4&q`AfYo@Kj3cw*Gse-F`Z+xvUIE_D(_buIvxWWlynR=^eA$d`U#-GY>lpS@;n@ zdJI{!;mmA*ufJpDzO7no?QLVt^>BQ?r{Gg1bk+v41wHY)N3tfM7O*{l>i5a5wr6bC zBhH%u9aA%}n#h=J&p0duo|}nhCLnRYAZG)~zh+>zX%n+SDO|_cCp4S+?E_@f@3ZbA zqrJ+#62yc@)HY9tGWZjbfOLACe>k+o|4Q#B#wx<<^sRUv_sv3I=Pwvj!@x%N;iMx&eH8I2FUAua9T`9NOYppxr1tvF` z0p7nT&+e1k#5ixWw&!!S zS6y)5h2J}d{eM2IJPI;;uL9RFr1CSM%7FZzQ3qIM_C2xZ0@mofgGOJ-nuLXn=?mDv z0?<5!7yJ-S{4;P)M$&&r@;0M8r()Y~<7Xd2$BUOO*7_dS?jnAM4~Bmd-JaonCEQwI zr%`(nI1XVQ_YYX2!Q?o8Zo-%7&HUtt?A2+9#B5em^+sKa znUjxL0rDGpR)a?K$Wk>0y0K8a9jzP%juU9>MO>?}(KqpL^APvSs_ZI^a@mtz7faTZ z98Y;Tkpn;3kQu7QcZ=sCs~XQze=`_FvH3f(q8p&!KX?P;$wiP@@rLfByTvzCL<}Oc z`?wC$-+o})jV0K{`|s!%S;;N%$cpFPl-UL)#3R@d^A1iR0ripaZfI=DSoC7g!)NH# zmzhJ6RdupDy(sU`@cc=7cPoZ-gOTjL6(8k3-pMs6?z~a)sboFrHK3K)QDQWSd!pD) z**BaD+mwTv;uVUYnF_Cm*;3k&_)FFWi_de9R&UeJxmd&^vCbW?n?y7s1F~*fJXneC zWaZvfJU7Yn%9HDqxX*9Nh)ZN@fkHeei8v%a5D!$=3Fk(lDu7d6u*-@*r~&^smw##LKEIi_gK{^yr;z%iNP(fJ`FF44DPgkJ!r3zUkG zi;%UCJ|YresVs*ZKL!T6KR_b+6BlgI`q0He@j4_2i-TJ|XVpcSRZkaOyz zcH=k5%KD<@*hVtGr{Z&VBJ$sj$NC}CF0&3-p;Z}1VFbu0BWK;fZXpnUM7_@B28RIq zX7ZOEbrA;6QgmPey_78GTE_k~IP$TLnBwr{4dfv}_fBBEWo2|vgsM}~%*DwSX2k+r zk9h>8@p9f_WnF%tt52?aHu(0(r)dioKcHjgqD|97k-yO?5$={(&!Jy3Q?fBu@FLv* z050x(Ld%nK=!Uv0jYkoP(x~g6I2alC$WOY0&&*EQjRJ zjzbCI+$6O6`|xWdqw_bk|70leRV-ijn3jH{+$}PtduTH^G%khDUKj1SS(RY#*<}2> zsaUj&*t!c?xYKCbcd^4yBdK+m4=k;g;|~qO_ACMJ%`siJohaxQc29O}^g=S^w1$q@ zlkKeidW&pbQ?yw}dZ@<}jT|o{8u=DW@EiWfmv}Ob@D?UY{z=!_Y>@%?DGj@sS~gmi}9)Y zvyW_~9;?d{$rR8T^_S=yi8~ZKOgG>gzm9Dk8uOIjfNtZF!XJTi1Nz)Bj;mlX-loNw z_{!Iqsr{SxL$TF}zq2B-KfEo7d_0C{f>A%#4-SB9vi4#S?<1J|_!R$R9yD78gzLcd z6Z)8jHI?3{Bj>UcY%3I94e!3j@0`WE>?iBS+Kndgup##TJ@`8ri;|HM)rNfe5-jvG zVvu)r7h6_F>JiE7$*adh6TbX+pf*q=jCd!NC%4+-l)S8FqFcEKU2~ZA-(Q5`h%mmAR z@JgcJFTwdI@R3#5ThI)9kkBOR@1XDB8HEoREk~g69O7lMjk|cVBj!h}Mye%GCb54O ztX>Ty=Q$*A7%O#ugW79>avc83R^}3iv5K`9qpAh+RUA9!F)EK!FA2|M6?*9?tslb5 z-9_6+&C3v+Z?2)e$ZwiYp*w8H#;B+|G>?9K)n`TMJXw(hEIdD0iK-bjJ;@p zXX$x~ZI85`f*wBlA|1N8A~O+>nXk-9JW?9@yh&DEGKvaoaSt7q2^cp5V_HUA38K8e z(Ty6;Rp$9hbk+;B`WJLOK&IhkzE6j`dFeenH615vPNRDWxtN(iKMn<4U^H4Vt3_a z8L`MNFC;t1B$wr0vg=23aFSVanJL+!BHsgaoaDiy*l5XI$;nBQFLQtLU2=Pp{gX3m zq_pIirH0$fB0HDdX=60NJ*gqNG}nq`sU%k@`7^iENiuCN!zWoEDKB|FdG1bma#=pH z`7Y}y(8(nkJ;~I$e&xHsE?$o08HEB;LP|<*Rdzl(SR{)kkW0=?YDr1Cq(%9Q-*;#A zNSps*Dz)O7L+Xfk!Zvd+uDII6iXU^(Lj+{<|FZboS)Ns8@De1#OB%BpmyDY9y>P?s||`j zT-))QQa>&+Qd-JMi%weTnpa$IYoIApGsV^__x21+FA-%|VdGa6h z4qpe2ybI6crKDcGzML5B&{YW{1&6N`FxYpfoc_wA$l9%A`IO6Wav66O#Dvr+5 zMx1MMqLeEo^6nsU^m6%J=_h{1mwPI0$e;X@8uH7H73o3bQAVbOxa zJd~HzbE8tmwzMIUp_2?LEl*trS?)USNGaEfly&2kV!Y(8WVRh_PWs|BbTn{#596>( zNxAQ&OYSvzYzP!m7HG#6f3G5%v>Y#bdg|86n-tyFRPh z5u5pBx@)lWfxRDaeL9wW4Yt@4i(Is)@W=mP20j_DYY5cb!dj1+dKdc~3gT~mf^RmS z41G@Olw=J^DR3`}@3YD-F{L<>>I!RNXR|&a48{K?4r+oI-VhqE$8RggPRR3Qxatvm ztir$D&VH~t_7_%8Yz}JKllm<$mnz1(ffXv9zCxycxtVQ?>U^q(8G|1-1kYwYKI|yY zt{9>k;jy$~)k-Zm^dfO!PU6xp@M~+R#rVLJp`u3ybP2z+s4`^kQxVNQBExqY@4PJM z5cGh*tKi&d6ScebDRu}vVz*aqHJk{9JP7L{_Nd3I1paOcRLiaBnCZ~%2mF!Zs)!w9 zUcq;J((Z(#Gi_!4DYDp^)lM=Kv<`WxfM1mxkLWSp*EYCY7D$@l+YGU%%whPOM@?ll z^Z|C*oD;o?bPXiVdr39L-^;>$>&w(ki?@BBw#M0<`U<}59Mx5ig{nNv`XnLT(~FW`#|Qlrd7dkSCiu>BMdss^jiG7}4>RZp`&yairs zXFM>;6)r=@213_vgteN?i?AI>)ETsn{ zhb?s_BI0u7Pm)_JuM2ZR# zD-0yt{}i5QIv}ZvEF57??qkN_86v~=tWT<`hEn4k7IhM3wn6g%=_tr*t$xJqinEZUshjj2c~>Pbxna$p;5BK-9kiV9hrG~k$PSEb(fKlmrhIqt9$hEydoYfHM5@Ks0!mMgr z&a+v8h4Ac@i96%&=No_-~WP*Q%i4AUoo19uvjC?`_Y%?RBZQ$m8VBA3@+m(FH zc|Pwj5({%@Jn_MLbU|~pQ8uu8hV0Kr%!v%+GhZxH%F9}z=By7cN^W)@y|*Ab?9M8^ zZgG;b0# z?t(t*M+>a$BywCud#mAgP39xofbrYR91bEUQXHIGLd)uCvkOF-KLC9nvKq2_unD{s zjj(`t_aN)O=3ozsK$~&!q7E$$CeH4N)>y)r=@{EpIhPgNz}iD*j0X{tBa` zCHa&^Q(+-RmuCi|AF-;-k*UI9Q3cEW9FqGkkas0YybJZyBYlTyw+pMb-zQsF ziGIbCsYE<~2JAXP`TVpmJ2_{u-=he*lZ)`IDcbT4=roCWu!mqc4Vu=WhX#!KDagQ7{U zHTjnw;M)@&Q~_I23{H)Qr*eAfeMa*t#!<)EZ1*=<)!JZL8s5LkoM8_jzXpHDqUSDw ze*vUNcAs{JTW3`wnWskVt9nsC$GJZFbQ<hUhklx8j=Hg4UTLfk0J9L+ll0VC&#cEZP}5%SOu9M%FkIoE7(V| z!-TN>H`v24hWYO{oIKZ;{R)fO$@ey6G80tl0CcIn+@TB!1rsMHJQW`AzvR8op3!p5 zn$9r4aiZY!(NmEXkwVdooQX8ojv(U|!ZMH2IoVy2-H)=<;V}nO)=1UgBFm#IEc>zU#6Rb`|rcS&@XRXrW@zViMHv02a@)O8*!; zI(D+-DI>G^AAoOTdx4qBwI&}~v{&qYlge}mjzm9L?E zygAg(``ddXbU8G~-=(?+15&m=y85u|!zUkReDrKe!Jsof-Us+DcU2E>W$1~-0ZC6K zElgMu+T|tduWb)AE;tpf8(kM^5!s*8HDy4`tC6RIMz)Cl*n7#J&(5qz{;W`+@SJeA z@Hu~sca7DZzIi4{4%!5(f;GXb!BatpU{`R(uxCNH^u~C-y=>lm<~xrvqa!lg%+6x3 zT#q1kP%T&-JOf^bS)1@JXOpcqc^S{6q24l6$ZQJc27d=x@Ez}QuG^8|1CvXA;x|qz zm*&|t*ONMi*e%BCm8HEVx}Pl()QIFy`RMUqk2*fO`si`Wp(A7ywxqchO&@I^2~sjeo{Ihw++go0dmGgX{gqeM-{|k~Yx+&R4tfz>PPXaH zhe3;=R!}ZzA1q|&+{^3`8V#Rc!eakUR(r$ZzwlmU6c5nH^*MFkEQ`JrIh4{nW&Gm{kKTDaB{JMp(U-j+I2AFC zztwxr{~$Cqd_G(>JlgN1%i2LfljxL4?MS7_kC8#qTI@L87Ubo0x8|y}*DUmWLWjhA z2@S&i{A4eO9)xvoXIq$C(HW7%NXf{t$cpH#;4OPj-P9j=2iQ}z&6~=JsDr%BURKST zeDek}xF{Npe#)tv?KuDMw5d!EbTxY7Sv1!3cuNgAzb%XTot@m*3Dxhhb8QcM6Kk?( zXo=Zt_jx}i9!mX7nu*DCLVFo=g;f%|;Un8Om=Kwl@?6UP$K@VZd^|a&T2N1|@#=(@ zhPs4)@!PUDa5)nAY`Ac!oOjM{44#Zuh^$PRlyWs?b>w{XTJW(sXZjJ9WLc>G9vg7b)vgOrv5xo+h zF2DIVS_QuMixv!`!5PDRHu`rVx;hEp?N@M}$ygrG$!)EJQt)~*J3t=fT%F?i(f|F{!KPK!a^b7Y5 zo%E0T38AM#8A7G}Zn~ZQA;=!xopRyvg2(k!rbX%pKb!SLT)S0$-Oei(3c@856B2(7 zFY@>3>gq1D+l_+-(ah0fksFbQ(Z$g>f>GvyeMA55ZTHKE(ueB!oxD-x|6gVWLu$@V z904DPMMp#*MyCY>SSOR3_-Ylq)%#+JwqrF~GUL9Ny`L$;%3wMt;q4Cs_C(h*z1Ztq zih1{m{?5cgsi&silQb_>O&`W?UuIYR6Xu`j#mG2D*`btzDfb`mO*s;sXghmfgyw`7 zh3~O=m%AHDiC>x(41{ET(onTe*K!zyO80qa@X8inSc!>B#Qs4QYCayn#o)xckt_4Zt)A44ns7VMvF z<6rbH>5(dA!gIvyy1Q+&c{d{deQIay{cO?8#$c)(qEu+E=Lze ze~t#x?}Ps6s4B#RS2)FYG~Tzz9)sqr0-4JW$|uZy&S6{_{LG1&X|RspaJphvwbC1! za4)%1>ZZx_!iWk=p^g&;5s?W8rVZb3^ZQ z!t#9YAg4KG_HMEpqrG`D$RDj1S&{N~Z=qu)`eXK@tqRAchn!mtq&1b{&!qu@L zM(0`8c=tFza8ondwMrZgT~0CUbJ<09GAgOVuvFcH+6@ z%&E>Mwhpz_2eGQN&{dPo%;0FWMs!DHSfq5MK%@&hlPjA^>Y=wI^li9RxM!%jzmOfu zQ@v4~Xn6wcN<=b6zK_g{<}zc5=LhMv`ULwn&v{q<&7m71IU6*|3-E|4 z*_NhXurOLRS~fZ@+7!Jx#dKt@vj#h853}R8o`1!w<9)ABFoU>~6+2DLw4hAz2>+us zC#crvY{LS~ryVC=mer8u(Pz`}JCf|LXw(wsA!QD+dp1A&H%HO#3;Gk%QI%3{PcDUhpPL%y>i}APK0>X z8>}m;<7O!wdK?)Nc^OO6h26Z@Of}|7r-A7a-P|jQ_ADB1AO1A-z$>VS+ur79PBbkL zXr%Evc%A z!pnXU-F(pGH-&;~(dF=GW8_g}V6Q`c?EPv_J-CxE^q(^g2o{W6fbWREHH{wf#KaKIWCSqX`4X(zIX{TIdhX zbeK+-YZrNp>uQL;rE7bfZmYZM4aBnSDZ{tEjZUe=NgY!e&sR9zVGWj|5m||kk@<1V z=ME!AsD)-ef|dNtyv8}+&w%S$Q%TM9HibJR6-(Zdcr|2nSXCnilKq9NSsS<@Xcc`8 zyWKBxDl#h;rPqUW8su?~-;%Q?s)WkRQ~^ebvCpw(gOjQ4x^&&2deZ4##Xne_FTc?KVrH6Sn{nls-tNZE!+T+~k;(iJm>0`CVJRJ;(ejF`??P|n1Ki^@U55T1j zoI21^SMY9npZb6Kll;rxdB&b5%hwD~d>FpAMb>7cRXYZEf?Z}a<-_bVPKz(LliBaH zoJo0+6$9@QMSg(J>BPAM+c|e24QHGzW9{t`csmVw*v2Z)CPb-U61^0(XYk}Vn}_CI zcCoGZUI;&%xF&H>Lgvt7eV-MUFB11}W(8zj^|QIai37J%o`_tFM58$v6Bq4|it~`X zA)LUPms8w1|AJlYE&S(L%hyYvUO&)ty{vv| z|B~0AxMd_Kuleklo=Rq7I;YD&Wfq}(=d;>xg2{%KSqpDcvpVd3{EYNOIZfEDe~Q`v zFz5Idvwv~=`zTHeAA;s-&DrSH(XMac!KXnV^(4DikloR%!F?u}hRGfHx~YFWJSwqc z;z!|!-hQ;(T+4qPU`k+%eqFs}8b!mA?J2KCK96n*Hk-a=PjizUIID89>aDt-u3K>) z{|qcad%vysw`z@_nwyotg^{CIu?Trh``~f39G-T1Jgk4zr#gXiuv^=X`9lukclN8x+Kx0i`Z-$oK@BA>PJ z5H6x?27~XX#4A3WYDgX<89Yzm`QD?oGGqmNk-IoRT<{M1<+t$EaO2Q8uY?{<7Ua0< z%({!L`mBA`6b;^sc8_k3w#Ta+fs~XW#>-Bw=@&F)I>u>LZ=YA#&q#bVll8nifI`;$ zo*+WcZTp)2!BFg8G1jS$WyR5Am4zMTP4QYotj7#Eqo|$!fKxUe;DOHqrVt~iDsnf1 zzjCZERrtVf!d;myXLlVrn#SbU63OwbB7R*!PGJD$uCexYCg%`r#+Sau8rl8)o{A*T zL!$rW-eaQc7x42-dY^=HC!|jp85+(xBr{beeO{08#(UHC9b3rkjy8zC9`%E@oV_p{ zUHuj7ZC}D~j*!c|uP*DoSodfB_1-`FGWM(vS$(TK{XY8-UpJoz<Harb`}lat6DW^A5_hPW}tdl7A7o>dC&tUpXy)2sJBA{59mdlq+i^_vxlc6qFbUvkgL0_8ve!sFjM(^Fr>TRDu*m>wL*LKdKxW~}1bjV#UPe^C@zyNc0iB zy$9^`$#(w0zQATgR?W!>tVRx_rU(A^DRBLW^+;pMi#9=ucae{LlU(pM){yK(!>%De z_ZFGUL-2GWQoMRg%5=DgjVWKWZ!(R zwZEOyf$pkpoI9~CS}%Bl+S#$(was#3f_C^-g^=F{_ybM7=QwY#Jf|n$;J*hXc!j;8 zx}kc=h`r0X8k&9MeeFGFyB-IXS$oZT4Nke}&6)dk(MVkx>pM6%s=a=QuDOW@PR$O2 zBw(+~x2r&xlT7&;?9_Z#Dvw7V2E)&>WMMxbvbqly%G(EEaTM&1!nqmdE%Q3E_X{h$ zeY8?xvO~wYFIe9}qt+z@^Nm{Inb7#~eSZ*kZngT9wd-k+=lrU;X~Aha=gIQdv-9yJ zHgg(O6_a9q#S(o^Hf{hO?L_qAIruq77w~F$U+PBq`R~J-E=bH=n_yowXRrs;O>gE{ zYLYi=2Y>FV9O$GE@cKXYw08-ex{M6mb=IDEstb|zCeDJHYkt6EYQP-g19l;_Wk#n2 zYqy@$ne;{^U@zS6MW$&2xr7J!!w>nt03GlV>aj-Z0XqvuapqkUGH1)6c79G7TnNT@ z854y>7pU3ZpP>_>#okM-Y*b&=I&|%oOtS)z~jQj#ER5l4E-w`Q1up@g6aKP2$L-suQcv zHtE%zIFeUOrnM@otOu~hCk_9@;X|lZnYDSpppU1JBW?mmr_tXjD14n+p3Y?T4>Q7d zqMusAy-{%Vb4~}n!PxyBo$@K8I4|qN+A;czqv6gX-G@2lWDlBZhe=>931W zNfM$sAxm6y6H2|_D)CweB~Jxl2Q zC3IBCYh#78$1WH+!N^_&wm~!3p_k0gS$lwUH4u)LcniP%0PKsj#@FU_^28-FVvzNX zh()bKryCUL>Lfub+;MWTtNI{+ghxGq?96~w-33lH%t&o4M$QhU9>pc2jgi%p0Lj^i zwcCtVQG?tp&9Pwe5edq~$&Yem%=0tuI_!uuoc|s`y!#8TPXfTZ^FATqhCZ2 z_00+`6yPk{8Z3_-WS2|BE`1g#ZPgB)7}Chd<%|iW@a7LQLM_ve9P5ef>FoIkwM-`V zSu3#7e&}CmFAJ2WZrTQN38X?!e)c>tiki>SmiiOxnZxcI2uJ>n*>})r)=|Y|8J@#0 zp~SWHtQ3~^LNXPnHZIcd(bQxsLk*EhthRwZ+|E-p@Yq?1j**yp427|4?x7D=B$`+b z8Ipu-N_&Dat-@)(W)kJ5Dj;T@3?~SgUWHs&MwY zfu~fxDeIKPwoFQ;k9^KtPabcP(0A7FfhTr4<6ubkuyAh)Pa?S2H6w}fMc{jfGjBY1 zkMqX=)IY$f$@#=+xJVUFG6e!x$dWpTxJ6lGDUsEiM6V)nd^-BptfSiUm&mKcYOAM^GZq3$7-?Oah$`t z&n{mDk3Z@(^gK706UUh2+3I}l**U`6?#JncKCw?K$HkTdP9UAJ2-r0h8v$0GnA^VOa zC9^S;)6rX(LW7-HmrnS(Ch(;1u_|WpzBWnG4E7vW}~+4qNt_5Z^)F;K8FeXHU_C~?EI(26pRXJN-Ge|mD-E(Jy+ zGx7c;e3zH?{|3&Ml<%|fw;%M8PWUG!9`+dR=PZ^`R4}@D8rirPI#`I+zmnG~;?nbp zdiR4*{0MdQ<#!h}nF-L)FsOJe?d4#E%iu`kkr2iC83%5s3pPScG~3~5^;OX8mES6y z|FaRrcC!^{p?7J(C%gh9la5|ui?Omg`y?dwzl`h^k>a<({+waN${=us892e%!x^!v z3#5fw3UPNNNQty)(aM#PIY>XL!HVcye|o+V&P!Pjyo@*_{Z-{Y9|#52G<*ae=^k^f zwN^%6RXAD0s8?aZ%|hcG$e0K5>IWbG2_E|fZGRQxN<}+O(61J->Xqq5eMb5l8e?(1 zx4p0rn?bi<^1RQ?b6Q@Jj46Wt=yZ@WgZqdwr-JT;Gmj2_qnri8eCurcV>GD0@$vk} z>lL%2YKM2A6c1xj#)>bXnb#%vtfIf9i0ycwZ$r_@}e?uq(zT! z$SRkEwrcaP6~4}D?7Q-OR*D`8V^xaPFT-4ggD6tIwN$(l3NvYt8kGY?CzWzCLk1E} z*~N91UD)VQdY6j7RH5T7G?I$hRMrROJNU$BI@c}=F~N}h3uQduD&?tAevJThq@33p zn<{oFbNg#nT=g(ir{ERs=sejI#&?O`^)J*Pg$6!?eLaXBzZ2dvo}IoQe%TN`U>=gO zFKgP0S6_DYa-!=~!3z{*RiYmDo{f$esVI3S7;YK(al=1 zKko&1@?I>7EA;UxJy-%S?9WcS2aez;{B(a~p*1C{{wL!bheg>N4ke%C@9>}wU;?(& zvl7tM5F~SdC?yxXtu{~0Ll2J9`couk9@gMXX7(N0xMI_{!8?^@EnY!$XM@-m<%%oD z`sHAEscOwmZq5z=~D~|*bIwwG?Hv8KQrjzEYD_RKG~4t@Ectv*HZ=J*Ir{KaoA6I#y((A zHYY}r0L}Ooy}u0wE0fPk?EEoQY5DDtzn_r@ zzd|v?!LC$hhIA5q40nu&yXwS_vNK!>>gO4m)h2L|q2Ne5pnn!)t|FkG=Uj6R+{!{m zK9P|xhsN$f?+N(60Jcw2IA3+F&F|@Hd1g2gI#4x;qwL!~(D4!e7rmY1F72j_(5_@c zG1eqMtLf&O5N~pG=iGx9?y}2u7BPaomywkfPszl!`pL#~Q?SlDeW0_6s?(yH2tpdU zXDJBezf<5QPeXY26yRyJV$caVE3!uM`EZ)7#rmT7e+-`cb!QP zN7LCD<YJ`rT^i*FQdJi{Q|CH_D^%SBRbhC?9iq#Ga1v<{%577N}l03?bVX;TvF=kyI!-}hli6~upO~mDtSw}t5 zX&6Zyod`|Nd*vk3Io727HklPY_dR#1XUbxt=X{{$Pkg2fFv=O0lK%sYU6oi=aYFft zJUm~!N1wzY71A&VS=eo97`bu-Mk6z#m|f+^(RrN+W-BeTrFyYhc$X^p6OKH73jMu; zN}^d!q2S)K>od`}Jlr9ao2r*c;z?TE2+GRyQ0+%{MlP-?!px^(Tv~Unl814q&Wi;f zmjqKrCuIsU7`M%Qy`e{{8S|Q_DI=%q?AD-n1>uuAk)z&T;Ep%Qz>pw+QDvGWaH(wc zCp-Nyn2{v#{p7rpg#C~9-qY&S;Ik7l2PuN1P0BpH;PZD-ywK{xcXo_$IWH8c6yO3E_jSDBe~3RzOjMdj;+LF7~XzKh^n0jBql=DhepI$?s($F-kCF#F%I!X6a#p=J1e|Kruk4!6!gsK*lWo3hNAHz4Q z$n_Vra0Y&M68e0|^F7Q1*i@u*b9i1kRv?B}cEPV#f^R#*TqJ-Bit|k^WX@NNBr`qL z`2+2^55Zk?m#3@V%HPc0ZD!nJPV%vmxq~Z~nVAtU3FCU57QfHjTt-HUYsJvlNTXBMs3f$Km2s%nQ#h-y%3soCd|Z)&ImpU$bXHCK;VSg0Q*z;qAvIK} zESyQ$mmkqrUT}xboqN$LbXLSf7Hh@zE{rzP(N=O^;z+TK_$kj3pZmzw>3NFszGml| z1bnMAbD~%2R?0P?>Nb(VHl+XM<|^TZBe~Yc6%X0*ZcU}9w5IcVqB7OrmOY@B#ba)= z%D1s}&ZC*Bx|?`#3TRuFjdnl=xa?ErReV8My~m9AGV^|&zN#Y62N1}zy4Sk%Z{SS<#3^ddnZ$}fZE=*ti%;!U%uPi{vO?NxP5J5>3}r1dHjo2x&o zD!MfCYV@}$8f;Uviosx^f5s=!7dxgqBd?B5Qkwb7%_|?aqO3^ep;9h5Ws!PGdy4n#sf8Jr(5{OhJ@#R}|B6=J6Hi=gUSpV9#YbCWqrUchLA`4{Yn-T#MbEB{ ze3`)rp5W(Lh0pf|IH_rP$9m!gyhBap=Xg_Q!A}zr+nYvgt1LM~)8V;}!zUCDGBA?d zG+!|KF=(!9(8+E?J!jD72jTlok7x8UKEd}+0Wc0*p{5pi;@(p^^|i6YtYe)fYx`De zo)<9F8+X9pbq38)(ci$o#b3|PPh_1FxSnywN27xIEwx6T5^EVx2BdTbm@4?rVKn2} zV4z0Z<;i;A9R%hOrzW`Wl;mvhZ=N?_n2$jQY%&X&{lL>zLBp*YSP6D94$S9f`vB;| z*~HVp?VS?;)+l19-+%`=0{s?;4(meq zLbfkv-3#L3P6&SYAL3lM@crh%V_pM~=n5nc9$R+TMo(R%93w8^{n^{W`@$+=r8G z6E(yi+Pj@yf&JJ3Bh2E~0qdo;+zL?Dd@Hs9vXe>|M?o|cw7;Sr!BZlQiCCMlR4